diff --git a/examples/game-of-life/build/optimized.wat b/examples/game-of-life/build/optimized.wat index b8ed6f95..b51fc8eb 100644 --- a/examples/game-of-life/build/optimized.wat +++ b/examples/game-of-life/build/optimized.wat @@ -27,7 +27,7 @@ global.set $assembly/index/s i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 global.get $assembly/index/h @@ -35,7 +35,7 @@ br_if $break|0 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 global.get $assembly/index/w @@ -69,14 +69,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end ) @@ -97,7 +97,7 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 global.get $assembly/index/h @@ -121,7 +121,7 @@ local.set $5 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 global.get $assembly/index/w @@ -341,20 +341,20 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end ) (func $assembly/index/fill (; 3 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) - loop $repeat|0 + loop $loop|0 block $break|0 local.get $3 global.get $assembly/index/w @@ -382,12 +382,12 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 + br $loop|0 end end i32.const 0 local.set $3 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $3 global.get $assembly/index/h @@ -415,7 +415,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|1 + br $loop|1 end end ) diff --git a/examples/game-of-life/build/untouched.wat b/examples/game-of-life/build/untouched.wat index 86c8e310..9f380f3a 100644 --- a/examples/game-of-life/build/untouched.wat +++ b/examples/game-of-life/build/untouched.wat @@ -34,7 +34,7 @@ block $break|0 i32.const 0 local.set $2 - loop $repeat|0 + loop $loop|0 local.get $2 global.get $assembly/index/h i32.lt_s @@ -43,48 +43,45 @@ block $break|1 i32.const 0 local.set $3 - loop $repeat|1 + loop $loop|1 local.get $3 global.get $assembly/index/w i32.lt_s i32.eqz br_if $break|1 - block $assembly/index/set|inlined.0 - local.get $3 - local.set $6 - local.get $2 - local.set $5 - call $~lib/bindings/Math/random - f64.const 0.1 - f64.gt - if (result i32) - global.get $assembly/config/BGR_DEAD - i32.const 16777215 - i32.and - else - global.get $assembly/config/BGR_ALIVE - i32.const -16777216 - i32.or - end - local.set $4 - global.get $assembly/index/s - local.get $5 - global.get $assembly/index/w - i32.mul - i32.add - local.get $6 - i32.add - i32.const 2 - i32.shl - local.get $4 - i32.store + local.get $3 + local.set $6 + local.get $2 + local.set $5 + call $~lib/bindings/Math/random + f64.const 0.1 + f64.gt + if (result i32) + global.get $assembly/config/BGR_DEAD + i32.const 16777215 + i32.and + else + global.get $assembly/config/BGR_ALIVE + i32.const -16777216 + i32.or end + local.set $4 + global.get $assembly/index/s + local.get $5 + global.get $assembly/index/w + i32.mul + i32.add + local.get $6 + i32.add + i32.const 2 + i32.shl + local.get $4 + i32.store local.get $3 i32.const 1 i32.add local.set $3 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -92,8 +89,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -127,7 +123,7 @@ block $break|0 i32.const 0 local.set $2 - loop $repeat|0 + loop $loop|0 local.get $2 global.get $assembly/index/h i32.lt_s @@ -158,7 +154,7 @@ block $break|1 i32.const 0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 global.get $assembly/index/w i32.lt_s @@ -186,156 +182,138 @@ i32.add end local.set $7 - block $assembly/index/get|inlined.0 (result i32) - local.get $6 - local.set $9 - local.get $3 - local.set $8 - local.get $8 - global.get $assembly/index/w - i32.mul - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.load - end + local.get $6 + local.set $9 + local.get $3 + local.set $8 + local.get $8 + global.get $assembly/index/w + i32.mul + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.load i32.const 1 i32.and - block $assembly/index/get|inlined.1 (result i32) - local.get $5 - local.set $9 - local.get $3 - local.set $8 - local.get $8 - global.get $assembly/index/w - i32.mul - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.load - end + local.get $5 + local.set $9 + local.get $3 + local.set $8 + local.get $8 + global.get $assembly/index/w + i32.mul + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.load i32.const 1 i32.and i32.add - block $assembly/index/get|inlined.2 (result i32) - local.get $7 - local.set $9 - local.get $3 - local.set $8 - local.get $8 - global.get $assembly/index/w - i32.mul - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.load - end + local.get $7 + local.set $9 + local.get $3 + local.set $8 + local.get $8 + global.get $assembly/index/w + i32.mul + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.load i32.const 1 i32.and i32.add - block $assembly/index/get|inlined.3 (result i32) - local.get $6 - local.set $9 - local.get $2 - local.set $8 - local.get $8 - global.get $assembly/index/w - i32.mul - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.load - end + local.get $6 + local.set $9 + local.get $2 + local.set $8 + local.get $8 + global.get $assembly/index/w + i32.mul + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.load i32.const 1 i32.and i32.add - block $assembly/index/get|inlined.4 (result i32) - local.get $7 - local.set $9 - local.get $2 - local.set $8 - local.get $8 - global.get $assembly/index/w - i32.mul - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.load - end + local.get $7 + local.set $9 + local.get $2 + local.set $8 + local.get $8 + global.get $assembly/index/w + i32.mul + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.load i32.const 1 i32.and i32.add - block $assembly/index/get|inlined.5 (result i32) - local.get $6 - local.set $9 - local.get $4 - local.set $8 - local.get $8 - global.get $assembly/index/w - i32.mul - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.load - end + local.get $6 + local.set $9 + local.get $4 + local.set $8 + local.get $8 + global.get $assembly/index/w + i32.mul + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.load i32.const 1 i32.and i32.add - block $assembly/index/get|inlined.6 (result i32) - local.get $5 - local.set $9 - local.get $4 - local.set $8 - local.get $8 - global.get $assembly/index/w - i32.mul - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.load - end + local.get $5 + local.set $9 + local.get $4 + local.set $8 + local.get $8 + global.get $assembly/index/w + i32.mul + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.load i32.const 1 i32.and i32.add - block $assembly/index/get|inlined.7 (result i32) - local.get $7 - local.set $9 - local.get $4 - local.set $8 - local.get $8 - global.get $assembly/index/w - i32.mul - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.load - end + local.get $7 + local.set $9 + local.get $4 + local.set $8 + local.get $8 + global.get $assembly/index/w + i32.mul + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.load i32.const 1 i32.and i32.add local.set $9 - block $assembly/index/get|inlined.8 (result i32) - local.get $5 - local.set $10 - local.get $2 - local.set $8 - local.get $8 - global.get $assembly/index/w - i32.mul - local.get $10 - i32.add - i32.const 2 - i32.shl - i32.load - end + local.get $5 + local.set $10 + local.get $2 + local.set $8 + local.get $8 + global.get $assembly/index/w + i32.mul + local.get $10 + i32.add + i32.const 2 + i32.shl + i32.load local.set $10 local.get $10 i32.const 1 @@ -366,31 +344,29 @@ i32.gt_s select local.set $13 - block $assembly/index/set|inlined.1 - local.get $12 - local.set $16 - local.get $11 - local.set $15 - local.get $13 - i32.const 24 - i32.shl - local.get $8 - i32.const 16777215 - i32.and - i32.or - local.set $14 - global.get $assembly/index/s - local.get $15 - global.get $assembly/index/w - i32.mul - i32.add - local.get $16 - i32.add - i32.const 2 - i32.shl - local.get $14 - i32.store - end + local.get $12 + local.set $16 + local.get $11 + local.set $15 + local.get $13 + i32.const 24 + i32.shl + local.get $8 + i32.const 16777215 + i32.and + i32.or + local.set $14 + global.get $assembly/index/s + local.get $15 + global.get $assembly/index/w + i32.mul + i32.add + local.get $16 + i32.add + i32.const 2 + i32.shl + local.get $14 + i32.store else local.get $5 local.set $16 @@ -456,39 +432,36 @@ i32.gt_s select local.set $12 - block $assembly/index/set|inlined.4 - local.get $15 - local.set $11 - local.get $14 - local.set $8 - local.get $12 - i32.const 24 - i32.shl - local.get $13 - i32.const 16777215 - i32.and - i32.or - local.set $16 - global.get $assembly/index/s - local.get $8 - global.get $assembly/index/w - i32.mul - i32.add - local.get $11 - i32.add - i32.const 2 - i32.shl - local.get $16 - i32.store - end + local.get $15 + local.set $11 + local.get $14 + local.set $8 + local.get $12 + i32.const 24 + i32.shl + local.get $13 + i32.const 16777215 + i32.and + i32.or + local.set $16 + global.get $assembly/index/s + local.get $8 + global.get $assembly/index/w + i32.mul + i32.add + local.get $11 + i32.add + i32.const 2 + i32.shl + local.get $16 + i32.store end end local.get $5 i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -496,8 +469,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -510,7 +482,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 global.get $assembly/index/w i32.lt_s @@ -544,15 +516,14 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end block $break|1 i32.const 0 local.set $3 - loop $repeat|1 + loop $loop|1 local.get $3 global.get $assembly/index/h i32.lt_s @@ -586,8 +557,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|1 - unreachable + br $loop|1 end unreachable end diff --git a/examples/mandelbrot/build/optimized.d.ts b/examples/mandelbrot/build/optimized.d.ts index 6dffd812..a2446409 100644 --- a/examples/mandelbrot/build/optimized.d.ts +++ b/examples/mandelbrot/build/optimized.d.ts @@ -8,6 +8,6 @@ declare module ASModule { type f32 = number; type f64 = number; type bool = any; - function computeLine(y: u32, width: u32, height: u32, limit: u32): void; + export function computeLine(y: u32, width: u32, height: u32, limit: u32): void; } export default ASModule; diff --git a/examples/mandelbrot/build/optimized.wasm b/examples/mandelbrot/build/optimized.wasm index 4857d3a4..d4fccd63 100644 Binary files a/examples/mandelbrot/build/optimized.wasm and b/examples/mandelbrot/build/optimized.wasm differ diff --git a/examples/mandelbrot/build/optimized.wat b/examples/mandelbrot/build/optimized.wat index 026da996..82bdd9a7 100644 --- a/examples/mandelbrot/build/optimized.wat +++ b/examples/mandelbrot/build/optimized.wat @@ -25,7 +25,6 @@ local.tee $9 f64.const 0.625 f64.mul - local.set $4 local.get $0 f64.convert_i32_u local.get $2 @@ -46,7 +45,6 @@ local.tee $10 f64.mul local.set $11 - local.get $4 local.get $10 f64.mul local.set $13 @@ -66,7 +64,7 @@ local.get $6 f64.min local.set $15 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $8 local.get $1 @@ -86,43 +84,43 @@ i32.const 0 local.set $7 loop $continue|1 - local.get $4 - local.get $4 - f64.mul - local.tee $9 - local.get $5 - local.get $5 - f64.mul - local.tee $6 - f64.add - f64.const 4 - f64.le - if - block $break|1 - f64.const 2 - local.get $4 - f64.mul - local.get $5 - f64.mul - local.get $11 - f64.add - local.set $5 - local.get $9 - local.get $6 - f64.sub - local.get $12 - f64.add - local.set $4 - local.get $7 - local.get $3 - i32.ge_u - br_if $break|1 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $continue|1 - end + block $break|1 + local.get $4 + local.get $4 + f64.mul + local.tee $9 + local.get $5 + local.get $5 + f64.mul + local.tee $6 + f64.add + f64.const 4 + f64.le + i32.eqz + br_if $break|1 + f64.const 2 + local.get $4 + f64.mul + local.get $5 + f64.mul + local.get $11 + f64.add + local.set $5 + local.get $9 + local.get $6 + f64.sub + local.get $12 + f64.add + local.set $4 + local.get $7 + local.get $3 + i32.ge_u + br_if $break|1 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $continue|1 end end loop $continue|2 @@ -140,7 +138,6 @@ f64.sub local.get $12 f64.add - local.set $6 f64.const 2 local.get $4 f64.mul @@ -149,7 +146,6 @@ local.get $11 f64.add local.set $5 - local.get $6 local.set $4 local.get $7 i32.const 1 @@ -203,7 +199,7 @@ i32.const 1 i32.add local.set $8 - br $repeat|0 + br $loop|0 end end ) diff --git a/examples/mandelbrot/build/untouched.wat b/examples/mandelbrot/build/untouched.wat index b5efd7d4..8db1ec8f 100644 --- a/examples/mandelbrot/build/untouched.wat +++ b/examples/mandelbrot/build/untouched.wat @@ -88,7 +88,7 @@ block $break|0 i32.const 0 local.set $12 - loop $repeat|0 + loop $loop|0 local.get $12 local.get $1 i32.lt_u @@ -120,34 +120,35 @@ f64.add f64.const 4 f64.le + i32.eqz + br_if $break|1 + f64.const 2 + local.get $14 + f64.mul + local.get $15 + f64.mul + local.get $7 + f64.add + local.set $15 + local.get $16 + local.get $17 + f64.sub + local.get $13 + f64.add + local.set $14 + local.get $18 + local.get $3 + i32.ge_u if - f64.const 2 - local.get $14 - f64.mul - local.get $15 - f64.mul - local.get $7 - f64.add - local.set $15 - local.get $16 - local.get $17 - f64.sub - local.get $13 - f64.add - local.set $14 - local.get $18 - local.get $3 - i32.ge_u - if - br $break|1 - end - local.get $18 - i32.const 1 - i32.add - local.set $18 - br $continue|1 + br $break|1 end + local.get $18 + i32.const 1 + i32.add + local.set $18 + br $continue|1 end + unreachable end block $break|2 loop $continue|2 @@ -155,34 +156,35 @@ f64.convert_i32_u local.get $11 f64.lt - if - local.get $14 - local.get $14 - f64.mul - local.get $15 - local.get $15 - f64.mul - f64.sub - local.get $13 - f64.add - local.set $19 - f64.const 2 - local.get $14 - f64.mul - local.get $15 - f64.mul - local.get $7 - f64.add - local.set $15 - local.get $19 - local.set $14 - local.get $18 - i32.const 1 - i32.add - local.set $18 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $14 + local.get $14 + f64.mul + local.get $15 + local.get $15 + f64.mul + f64.sub + local.get $13 + f64.add + local.set $19 + f64.const 2 + local.get $14 + f64.mul + local.get $15 + f64.mul + local.get $7 + f64.add + local.set $15 + local.get $19 + local.set $14 + local.get $18 + i32.const 1 + i32.add + local.set $18 + br $continue|2 end + unreachable end global.get $assembly/index/NUM_COLORS i32.const 1 @@ -210,26 +212,24 @@ i32.const 1 i32.sub f64.convert_i32_s - block $assembly/index/clamp|inlined.0 (result f64) - local.get $18 - i32.const 1 - i32.add - f64.convert_i32_u - local.get $21 - f64.sub - local.get $10 - f64.mul - local.set $24 - f64.const 0 - local.set $23 - f64.const 1 - local.set $22 - local.get $24 - local.get $23 - f64.max - local.get $22 - f64.min - end + local.get $18 + i32.const 1 + i32.add + f64.convert_i32_u + local.get $21 + f64.sub + local.get $10 + f64.mul + local.set $24 + f64.const 0 + local.set $23 + f64.const 1 + local.set $22 + local.get $24 + local.get $23 + f64.max + local.get $22 + f64.min f64.mul i32.trunc_f64_u local.set $20 @@ -245,8 +245,7 @@ i32.const 1 i32.add local.set $12 - br $repeat|0 - unreachable + br $loop|0 end unreachable end diff --git a/examples/n-body/build/index.asm.js b/examples/n-body/build/index.asm.js index 1f65685e..b36a3540 100644 --- a/examples/n-body/build/index.asm.js +++ b/examples/n-body/build/index.asm.js @@ -50,7 +50,7 @@ function asmFunc(global, env, buffer) { function assembly_index_NBodySystem_constructor($0) { var $1 = 0, $2 = 0, $3 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0; $7 = HEAP32[($0 + 12 | 0) >> 2]; - repeat_0 : while (1) { + loop_0 : while (1) { if (($1 | 0) < ($7 | 0)) { $2 = HEAP32[(HEAP32[($0 + 4 | 0) >> 2] + ($1 << 2 | 0) | 0) >> 2]; $3 = HEAPF64[($2 + 48 | 0) >> 3]; @@ -58,9 +58,9 @@ function asmFunc(global, env, buffer) { $5 = $5 + HEAPF64[($2 + 32 | 0) >> 3] * $3; $6 = $6 + HEAPF64[($2 + 40 | 0) >> 3] * $3; $1 = $1 + 1 | 0; - continue repeat_0; + continue loop_0; } - break repeat_0; + break loop_0; }; $1 = HEAP32[HEAP32[($0 + 4 | 0) >> 2] >> 2]; HEAPF64[($1 + 24 | 0) >> 3] = -$4 / 39.47841760435743; @@ -111,7 +111,7 @@ function asmFunc(global, env, buffer) { var $1 = 0, $2 = 0.0, $3 = 0.0, $4 = 0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0, $9 = 0.0, $10 = 0.0, $11 = 0.0, $12 = 0, $13 = 0, $14 = 0.0, $15 = 0.0, $16 = 0.0, $17 = 0.0; $12 = HEAP32[$0 >> 2]; $13 = HEAP32[($12 + 12 | 0) >> 2]; - repeat_0 : while (1) { + loop_0 : while (1) { if ($4 >>> 0 < $13 >>> 0) { $0 = HEAP32[(HEAP32[($12 + 4 | 0) >> 2] + ($4 << 2 | 0) | 0) >> 2]; $14 = HEAPF64[$0 >> 3]; @@ -122,7 +122,7 @@ function asmFunc(global, env, buffer) { $7 = HEAPF64[($0 + 40 | 0) >> 3]; $17 = HEAPF64[($0 + 48 | 0) >> 3]; $8 = $4 + 1 | 0; - repeat_1 : while (1) { + loop_1 : while (1) { if ($8 >>> 0 < $13 >>> 0) { $1 = HEAP32[(HEAP32[($12 + 4 | 0) >> 2] + ($8 << 2 | 0) | 0) >> 2]; $2 = $14 - HEAPF64[$1 >> 3]; @@ -141,9 +141,9 @@ function asmFunc(global, env, buffer) { HEAPF64[($1 + 32 | 0) >> 3] = HEAPF64[($1 + 32 | 0) >> 3] + $9 * $2; HEAPF64[($1 + 40 | 0) >> 3] = HEAPF64[($1 + 40 | 0) >> 3] + $10 * $2; $8 = $8 + 1 | 0; - continue repeat_1; + continue loop_1; } - break repeat_1; + break loop_1; }; HEAPF64[($0 + 24 | 0) >> 3] = $5; HEAPF64[($0 + 32 | 0) >> 3] = $6; @@ -152,9 +152,9 @@ function asmFunc(global, env, buffer) { HEAPF64[($0 + 8 | 0) >> 3] = HEAPF64[($0 + 8 | 0) >> 3] + .01 * $6; HEAPF64[($0 + 16 | 0) >> 3] = HEAPF64[($0 + 16 | 0) >> 3] + .01 * $7; $4 = $4 + 1 | 0; - continue repeat_0; + continue loop_0; } - break repeat_0; + break loop_0; }; } @@ -162,7 +162,7 @@ function asmFunc(global, env, buffer) { var $1 = 0.0, $2 = 0.0, $3 = 0, $4 = 0, $5 = 0, $6 = 0.0, $7 = 0, $8 = 0.0, $9 = 0.0, $10 = 0.0, $11 = 0.0; $5 = HEAP32[$0 >> 2]; $7 = HEAP32[($5 + 12 | 0) >> 2]; - repeat_0 : while (1) { + loop_0 : while (1) { if ($3 >>> 0 < $7 >>> 0) { $0 = HEAP32[(HEAP32[($5 + 4 | 0) >> 2] + ($3 << 2 | 0) | 0) >> 2]; $9 = HEAPF64[$0 >> 3]; @@ -177,7 +177,7 @@ function asmFunc(global, env, buffer) { $1 = HEAPF64[($0 + 40 | 0) >> 3]; $1 = $6 + .5 * $8 * ($2 + $1 * $1); $0 = $3 + 1 | 0; - repeat_1 : while (1) { + loop_1 : while (1) { if ($0 >>> 0 < $7 >>> 0) { $4 = HEAP32[(HEAP32[($5 + 4 | 0) >> 2] + ($0 << 2 | 0) | 0) >> 2]; $6 = $1; @@ -188,14 +188,14 @@ function asmFunc(global, env, buffer) { $1 = $11 - HEAPF64[($4 + 16 | 0) >> 3]; $1 = $6 - $8 * HEAPF64[($4 + 48 | 0) >> 3] / Math_sqrt($2 + $1 * $1); $0 = $0 + 1 | 0; - continue repeat_1; + continue loop_1; } - break repeat_1; + break loop_1; }; $3 = $3 + 1 | 0; - continue repeat_0; + continue loop_0; } - break repeat_0; + break loop_0; }; return $1; } @@ -208,13 +208,13 @@ function asmFunc(global, env, buffer) { function assembly_index_bench($0) { $0 = $0 | 0; var $1 = 0; - repeat_0 : while (1) { + loop_0 : while (1) { if (!($1 >>> 0 >= $0 >>> 0)) { assembly_index_NBodySystem_advance(assembly_index_system); $1 = $1 + 1 | 0; - continue repeat_0; + continue loop_0; } - break repeat_0; + break loop_0; }; } diff --git a/examples/n-body/build/optimized.wat b/examples/n-body/build/optimized.wat index e0b5e082..74bc877f 100644 --- a/examples/n-body/build/optimized.wat +++ b/examples/n-body/build/optimized.wat @@ -102,7 +102,7 @@ local.get $0 i32.load offset=12 local.set $7 - loop $repeat|0 + loop $loop|0 local.get $1 local.get $7 i32.lt_s @@ -142,7 +142,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 + br $loop|0 end end local.get $0 @@ -308,7 +308,7 @@ local.tee $12 i32.load offset=12 local.set $13 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $13 i32.lt_u @@ -345,7 +345,7 @@ i32.const 1 i32.add local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 local.get $13 i32.lt_u @@ -441,7 +441,7 @@ i32.const 1 i32.add local.set $7 - br $repeat|1 + br $loop|1 end end local.get $0 @@ -481,7 +481,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 + br $loop|0 end end ) @@ -501,7 +501,7 @@ local.tee $4 i32.load offset=12 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $5 i32.lt_u @@ -552,7 +552,7 @@ i32.const 1 i32.add local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 local.get $5 i32.lt_u @@ -601,14 +601,14 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end end local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -622,7 +622,7 @@ (func $assembly/index/bench (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) block $break|0 - loop $repeat|0 + loop $loop|0 local.get $1 local.get $0 i32.ge_u @@ -633,8 +633,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end diff --git a/examples/n-body/build/untouched.wat b/examples/n-body/build/untouched.wat index d30d78e6..815c86fe 100644 --- a/examples/n-body/build/untouched.wat +++ b/examples/n-body/build/untouched.wat @@ -186,7 +186,7 @@ block $break|0 i32.const 0 local.set $6 - loop $repeat|0 + loop $loop|0 local.get $6 local.get $5 i32.lt_s @@ -222,16 +222,15 @@ f64.mul f64.add local.set $4 - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release local.get $6 i32.const 1 i32.add local.set $6 - br $repeat|0 - unreachable + local.get $7 + call $~lib/rt/stub/__release + local.get $8 + call $~lib/rt/stub/__release + br $loop|0 end unreachable end @@ -256,6 +255,10 @@ local.get $0 local.get $1 i32.store + local.get $8 + call $~lib/rt/stub/__release + local.get $1 + call $~lib/rt/stub/__release local.get $0 ) (func $assembly/index/Body#constructor (; 7 ;) (type $FUNCSIG$iiddddddd) (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) (param $7 f64) (result i32) @@ -392,32 +395,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -430,50 +430,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -538,22 +539,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -585,338 +582,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -924,15 +661,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -940,15 +677,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -956,10 +693,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -975,306 +712,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1282,148 +1182,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1431,76 +1299,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1508,40 +1360,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1549,22 +1393,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1625,94 +1465,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -1730,54 +1565,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -1789,9 +1583,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -1842,51 +1680,47 @@ (local $4 i32) (local $5 i32) (local $6 i32) - block (result i32) - i32.const 0 - block (result i32) - i32.const 5 - i32.const 2 - i32.const 5 - i32.const 0 - call $~lib/rt/__allocArray - local.set $0 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - call $assembly/index/Sun - local.tee $2 - call $~lib/rt/stub/__retain - i32.store - local.get $1 - call $assembly/index/Jupiter - local.tee $3 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $1 - call $assembly/index/Saturn - local.tee $4 - call $~lib/rt/stub/__retain - i32.store offset=8 - local.get $1 - call $assembly/index/Uranus - local.tee $5 - call $~lib/rt/stub/__retain - i32.store offset=12 - local.get $1 - call $assembly/index/Neptune - local.tee $6 - call $~lib/rt/stub/__retain - i32.store offset=16 - local.get $0 - end - call $assembly/index/NBodySystem#constructor - local.set $0 - global.get $assembly/index/system - call $~lib/rt/stub/__release - local.get $0 - end + i32.const 0 + i32.const 5 + i32.const 2 + i32.const 5 + i32.const 0 + call $~lib/rt/__allocArray + local.set $0 + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + call $assembly/index/Sun + local.tee $2 + call $~lib/rt/stub/__retain + i32.store + local.get $1 + call $assembly/index/Jupiter + local.tee $3 + call $~lib/rt/stub/__retain + i32.store offset=4 + local.get $1 + call $assembly/index/Saturn + local.tee $4 + call $~lib/rt/stub/__retain + i32.store offset=8 + local.get $1 + call $assembly/index/Uranus + local.tee $5 + call $~lib/rt/stub/__retain + i32.store offset=12 + local.get $1 + call $assembly/index/Neptune + local.tee $6 + call $~lib/rt/stub/__retain + i32.store offset=16 + local.get $0 + call $assembly/index/NBodySystem#constructor + local.set $0 + global.get $assembly/index/system + call $~lib/rt/stub/__release + local.get $0 global.set $assembly/index/system local.get $2 call $~lib/rt/stub/__release @@ -1933,7 +1767,7 @@ block $break|0 i32.const 0 local.set $4 - loop $repeat|0 + loop $loop|0 local.get $4 local.get $3 i32.lt_u @@ -1971,7 +1805,7 @@ i32.const 1 i32.add local.set $14 - loop $repeat|1 + loop $loop|1 local.get $14 local.get $3 i32.lt_u @@ -2010,12 +1844,10 @@ f64.mul f64.add local.set $20 - block $~lib/math/NativeMath.sqrt|inlined.0 (result f64) - local.get $20 - local.set $21 - local.get $21 - f64.sqrt - end + local.get $20 + local.set $21 + local.get $21 + f64.sqrt local.set $21 local.get $1 local.get $20 @@ -2074,16 +1906,15 @@ f64.mul f64.add f64.store offset=40 - local.get $15 - call $~lib/rt/stub/__release - local.get $16 - call $~lib/rt/stub/__release local.get $14 i32.const 1 i32.add local.set $14 - br $repeat|1 - unreachable + local.get $15 + call $~lib/rt/stub/__release + local.get $16 + call $~lib/rt/stub/__release + br $loop|1 end unreachable end @@ -2120,16 +1951,15 @@ f64.mul f64.add f64.store offset=16 - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release local.get $4 i32.const 1 i32.add local.set $4 - br $repeat|0 - unreachable + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + br $loop|0 end unreachable end @@ -2164,14 +1994,12 @@ call $~lib/rt/stub/__retain local.set $2 block $break|0 - block - i32.const 0 - local.set $3 - local.get $2 - call $~lib/array/Array#get:length - local.set $4 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $2 + call $~lib/array/Array#get:length + local.set $4 + loop $loop|0 local.get $3 local.get $4 i32.lt_u @@ -2227,7 +2055,7 @@ i32.const 1 i32.add local.set $14 - loop $repeat|1 + loop $loop|1 local.get $14 local.get $4 i32.lt_u @@ -2254,22 +2082,20 @@ f64.load offset=16 f64.sub local.set $19 - block $~lib/math/NativeMath.sqrt|inlined.1 (result f64) - local.get $17 - local.get $17 - f64.mul - local.get $18 - local.get $18 - f64.mul - f64.add - local.get $19 - local.get $19 - f64.mul - f64.add - local.set $20 - local.get $20 - f64.sqrt - end + local.get $17 + local.get $17 + f64.mul + local.get $18 + local.get $18 + f64.mul + f64.add + local.get $19 + local.get $19 + f64.mul + f64.add + local.set $20 + local.get $20 + f64.sqrt local.set $20 local.get $1 local.get $13 @@ -2280,29 +2106,27 @@ f64.div f64.sub local.set $1 - local.get $15 - call $~lib/rt/stub/__release - local.get $16 - call $~lib/rt/stub/__release local.get $14 i32.const 1 i32.add local.set $14 - br $repeat|1 - unreachable + local.get $15 + call $~lib/rt/stub/__release + local.get $16 + call $~lib/rt/stub/__release + br $loop|1 end unreachable end - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release local.get $3 i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + local.get $5 + call $~lib/rt/stub/__release + local.get $6 + call $~lib/rt/stub/__release + br $loop|0 end unreachable end @@ -2324,7 +2148,7 @@ block $break|0 i32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 local.get $0 i32.lt_u @@ -2337,8 +2161,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end diff --git a/lib/i64/build/optimized.d.ts b/lib/i64/build/optimized.d.ts index 9a936f58..848ca0a1 100644 --- a/lib/i64/build/optimized.d.ts +++ b/lib/i64/build/optimized.d.ts @@ -8,36 +8,36 @@ declare module ASModule { type f32 = number; type f64 = number; type bool = any; - function getLo(): u32; - function getHi(): u32; - function clz(loLeft: u32, hiLeft: u32): void; - function ctz(loLeft: u32, hiLeft: u32): void; - function popcnt(loLeft: u32, hiLeft: u32): void; - function eqz(loLeft: u32, hiLeft: u32): void; - function add(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function sub(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function mul(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function div_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function div_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function rem_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function rem_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function and(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function or(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function xor(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function shl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function shr_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function shr_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function rotl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function rotr(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function eq(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function ne(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function lt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function lt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function le_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function le_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function gt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function gt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function ge_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; - function ge_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function getLo(): u32; + export function getHi(): u32; + export function clz(loLeft: u32, hiLeft: u32): void; + export function ctz(loLeft: u32, hiLeft: u32): void; + export function popcnt(loLeft: u32, hiLeft: u32): void; + export function eqz(loLeft: u32, hiLeft: u32): void; + export function add(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function sub(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function mul(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function div_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function div_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function rem_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function rem_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function and(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function or(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function xor(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function shl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function shr_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function shr_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function rotl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function rotr(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function eq(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function ne(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function lt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function lt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function le_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function le_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function gt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function gt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function ge_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; + export function ge_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void; } export default ASModule; diff --git a/lib/libm/build/libm.wat b/lib/libm/build/libm.wat index 8b8ce0e1..0964816b 100644 --- a/lib/libm/build/libm.wat +++ b/lib/libm/build/libm.wat @@ -2174,10 +2174,8 @@ i64.lt_u if local.get $4 - local.set $11 local.get $2 local.set $4 - local.get $11 local.set $2 end local.get $4 diff --git a/lib/libm/build/libmf.wat b/lib/libm/build/libmf.wat index 6841cb6a..be1edd9d 100644 --- a/lib/libm/build/libmf.wat +++ b/lib/libm/build/libmf.wat @@ -2382,10 +2382,8 @@ i32.lt_u if local.get $3 - local.set $6 local.get $2 local.set $3 - local.get $6 local.set $2 end local.get $3 diff --git a/lib/parse/build/index.wat b/lib/parse/build/index.wat index 1d63582a..73b58157 100644 --- a/lib/parse/build/index.wat +++ b/lib/parse/build/index.wat @@ -236,12 +236,10 @@ global.get $assembly/index/off local.tee $1 i32.load8_u - local.set $0 local.get $1 i32.const 1 i32.add global.set $assembly/index/off - local.get $0 i32.const 11 i32.ne if @@ -267,12 +265,10 @@ global.get $assembly/index/off local.tee $0 i32.load - local.set $2 local.get $0 i32.const 4 i32.add global.set $assembly/index/off - local.get $2 i32.const 1836278016 i32.ne if @@ -281,12 +277,10 @@ global.get $assembly/index/off local.tee $0 i32.load - local.set $2 local.get $0 i32.const 4 i32.add global.set $assembly/index/off - local.get $2 i32.const 1 i32.ne if @@ -368,7 +362,7 @@ local.set $4 i32.const 0 local.set $2 - loop $repeat|2 + loop $loop|2 local.get $2 local.get $4 i32.lt_u @@ -383,7 +377,7 @@ local.set $5 i32.const 0 local.set $3 - loop $repeat|3 + loop $loop|3 local.get $3 local.get $5 i32.lt_u @@ -399,14 +393,14 @@ i32.const 1 i32.add local.set $3 - br $repeat|3 + br $loop|3 end end call $assembly/index/readVaruint local.set $5 i32.const 0 local.set $3 - loop $repeat|4 + loop $loop|4 local.get $3 local.get $5 i32.lt_u @@ -422,14 +416,14 @@ i32.const 1 i32.add local.set $3 - br $repeat|4 + br $loop|4 end end local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|2 + br $loop|2 end end br $break|1 @@ -438,7 +432,7 @@ local.set $7 i32.const 0 local.set $4 - loop $repeat|5 + loop $loop|5 local.get $4 local.get $7 i32.lt_u @@ -560,7 +554,7 @@ i32.const 1 i32.add local.set $4 - br $repeat|5 + br $loop|5 end end br $break|1 @@ -569,7 +563,7 @@ local.set $4 i32.const 0 local.set $3 - loop $repeat|7 + loop $loop|7 local.get $3 local.get $4 i32.lt_u @@ -586,7 +580,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|7 + br $loop|7 end end br $break|1 @@ -595,7 +589,7 @@ local.set $7 i32.const 0 local.set $4 - loop $repeat|8 + loop $loop|8 local.get $4 local.get $7 i32.lt_u @@ -628,7 +622,7 @@ i32.const 1 i32.add local.set $4 - br $repeat|8 + br $loop|8 end end br $break|1 @@ -637,7 +631,7 @@ local.set $6 i32.const 0 local.set $3 - loop $repeat|9 + loop $loop|9 local.get $3 local.get $6 i32.lt_u @@ -665,7 +659,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|9 + br $loop|9 end end br $break|1 @@ -674,7 +668,7 @@ local.set $4 i32.const 0 local.set $3 - loop $repeat|10 + loop $loop|10 local.get $3 local.get $4 i32.lt_u @@ -700,7 +694,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|10 + br $loop|10 end end br $break|1 @@ -709,7 +703,7 @@ local.set $3 i32.const 0 local.set $2 - loop $repeat|11 + loop $loop|11 local.get $2 local.get $3 i32.lt_u @@ -738,7 +732,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|11 + br $loop|11 end end br $break|1 @@ -762,9 +756,7 @@ call $assembly/index/readVaruint local.set $2 call $assembly/index/readVaruint - local.set $4 global.get $assembly/index/off - local.set $5 block $break|12 block $case3|12 block $case2|12 @@ -792,20 +784,18 @@ local.set $2 i32.const 0 local.set $3 - loop $repeat|13 + loop $loop|13 local.get $3 local.get $2 i32.lt_u if call $assembly/index/readVaruint - local.set $6 call $assembly/index/readVaruint local.tee $7 global.get $assembly/index/off local.tee $8 i32.add global.set $assembly/index/off - local.get $6 local.get $8 local.get $7 call $assembly/options/onFunctionName @@ -813,7 +803,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|13 + br $loop|13 end end br $break|12 @@ -822,7 +812,7 @@ local.set $6 i32.const 0 local.set $2 - loop $repeat|14 + loop $loop|14 local.get $2 local.get $6 i32.lt_u @@ -833,7 +823,7 @@ local.set $8 i32.const 0 local.set $3 - loop $repeat|15 + loop $loop|15 local.get $3 local.get $8 i32.lt_u @@ -855,22 +845,20 @@ i32.const 1 i32.add local.set $3 - br $repeat|15 + br $loop|15 end end local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|14 + br $loop|14 end end br $break|12 end unreachable end - local.get $4 - local.get $5 i32.add global.set $assembly/index/off br $break|1 diff --git a/src/compiler.ts b/src/compiler.ts index cedc477c..c55b6cf4 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -38,11 +38,11 @@ import { getBlockChildCount, getBlockChild, getBlockName, - needsExplicitUnreachable, getLocalGetIndex, - FeatureFlags, isLocalTee, - getLocalSetIndex + getLocalSetIndex, + FeatureFlags, + needsExplicitUnreachable } from "./module"; import { @@ -1144,7 +1144,7 @@ export class Compiler extends DiagnosticEmitter { ); if (!stmts) stmts = [ expr ]; else stmts.push(expr); - if (!flow.isAny(FlowFlags.ANY_TERMINATING)) { // TODO: detect if returning an autorelease local? + if (!flow.is(FlowFlags.TERMINATES)) { // TODO: detect if returning an autorelease local? let indexBefore = stmts.length; this.performAutoreleases(flow, stmts); this.finishAutoreleases(flow, stmts); @@ -1159,7 +1159,7 @@ export class Compiler extends DiagnosticEmitter { } if (!canOverflow) flow.set(FlowFlags.RETURNS_WRAPPED); if (nonNull) flow.set(FlowFlags.RETURNS_NONNULL); - flow.set(FlowFlags.RETURNS); // now is terminating + flow.set(FlowFlags.RETURNS | FlowFlags.TERMINATES); } } @@ -1169,7 +1169,7 @@ export class Compiler extends DiagnosticEmitter { assert(instance.is(CommonFlags.INSTANCE)); let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS); - if (!flow.isAny(FlowFlags.ANY_TERMINATING)) { + if (!flow.is(FlowFlags.TERMINATES)) { let thisLocal = assert(flow.lookupLocal(CommonSymbols.this_)); // if `this` wasn't accessed before, allocate if necessary and initialize `this` @@ -1196,7 +1196,7 @@ export class Compiler extends DiagnosticEmitter { this.performAutoreleases(flow, stmts); // `this` is excluded anyway this.finishAutoreleases(flow, stmts); stmts.push(module.local_get(thisLocal.index, this.options.nativeSizeType)); - flow.set(FlowFlags.RETURNS | FlowFlags.RETURNS_NONNULL); + flow.set(FlowFlags.RETURNS | FlowFlags.RETURNS_NONNULL | FlowFlags.TERMINATES); } // check that super has been called if this is a derived class @@ -1207,8 +1207,8 @@ export class Compiler extends DiagnosticEmitter { ); } - // if this is a normal function, make sure that all branches return - } else if (returnType != Type.void && !flow.is(FlowFlags.RETURNS)) { + // if this is a normal function, make sure that all branches terminate + } else if (returnType != Type.void && !flow.is(FlowFlags.TERMINATES)) { this.error( DiagnosticCode.A_function_whose_declared_type_is_not_void_must_return_a_value, instance.prototype.signatureNode.returnType.range @@ -1283,7 +1283,7 @@ export class Compiler extends DiagnosticEmitter { } this.compileFunctionBody(instance, stmts); - if (!flow.isAny(FlowFlags.ANY_TERMINATING)) { + if (!flow.is(FlowFlags.TERMINATES)) { this.performAutoreleases(flow, stmts); this.finishAutoreleases(flow, stmts); } @@ -1780,6 +1780,7 @@ export class Compiler extends DiagnosticEmitter { stmts = new Array(numStatements); stmts.length = 0; } + var module = this.module; var flow = this.currentFlow; for (let i = 0; i < numStatements; ++i) { let stmt = this.compileStatement(statements[i], @@ -1798,8 +1799,8 @@ export class Compiler extends DiagnosticEmitter { default: stmts.push(stmt); case ExpressionId.Nop: } - if (flow.isAny(FlowFlags.ANY_TERMINATING)) { - if (needsExplicitUnreachable(stmt)) stmts.push(this.module.unreachable()); + if (flow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) { + if (needsExplicitUnreachable(stmt)) stmts.push(module.unreachable()); break; } } @@ -1816,7 +1817,7 @@ export class Compiler extends DiagnosticEmitter { this.currentFlow = innerFlow; var stmts = this.compileStatements(statements); - if (!innerFlow.isAny(FlowFlags.ANY_TERMINATING)) this.performAutoreleases(innerFlow, stmts); + if (!innerFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) this.performAutoreleases(innerFlow, stmts); innerFlow.freeScopedLocals(); outerFlow.inherit(innerFlow); // TODO: only if not terminated? this.currentFlow = outerFlow; @@ -1846,10 +1847,10 @@ export class Compiler extends DiagnosticEmitter { } var stmts = new Array(); this.performAutoreleases(flow, stmts); - var current: Flow | null = flow.parent; - while (current && current.breakLabel === breakLabel) { - this.performAutoreleases(current, stmts, /* clearFlags */ false); - current = current.parent; + var parent = flow.parent; + while (parent !== null && parent.breakLabel == breakLabel) { + this.performAutoreleases(parent, stmts, /* clearFlags */ false); + parent = parent.parent; } flow.freeScopedLocals(); stmts.push(module.br(breakLabel)); @@ -1880,7 +1881,7 @@ export class Compiler extends DiagnosticEmitter { ); return module.unreachable(); } - flow.set(FlowFlags.CONTINUES); + flow.set(FlowFlags.CONTINUES | FlowFlags.TERMINATES); var stmts = new Array(); this.performAutoreleases(flow, stmts); var current: Flow | null = flow.parent; @@ -1916,18 +1917,44 @@ export class Compiler extends DiagnosticEmitter { this.compileStatement(statement.statement) ); } - var condExpr = this.makeIsTrueish( - this.compileExpression(statement.condition, Type.i32), - this.currentType + var condExpr = module.precomputeExpression( + this.makeIsTrueish( + this.compileExpression(statement.condition, Type.i32), + this.currentType + ) ); - // TODO: check if condition is always false and if so, omit it (just a block) + var alwaysFalse = false; + if (getExpressionId(condExpr) == ExpressionId.Const) { + assert(getExpressionType(condExpr) == NativeType.I32); + if (!getConstValueI32(condExpr)) alwaysFalse = true; + } + var terminates = innerFlow.is(FlowFlags.TERMINATES); + var continues = innerFlow.isAny(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES); + var breaks = innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS); + + // (block $break ;; (1) skip if no breaks + // (loop $continue ;; (2) skip if skipping (4) + no continues + // (...) ;; (3) + // (br_if cond $continue) ;; (4) skip if (3) does not fall through or always false + // ) + // ) + var fallsThrough = !terminates && !innerFlow.is(FlowFlags.BREAKS); + + if (fallsThrough && !alwaysFalse) { // (4) + stmts.push(module.br(continueLabel, condExpr)); + } + var expr = flatten(module, stmts, NativeType.None); + if (fallsThrough && !alwaysFalse || continues) { // (2) + expr = module.loop(continueLabel, expr); + } + if (breaks) { // (1) + expr = module.block(breakLabel, [ expr ]); + } // Switch back to the parent flow - var terminated = innerFlow.isAny(FlowFlags.ANY_TERMINATING); - if (!terminated) this.performAutoreleases(innerFlow, stmts); + if (!terminates) this.performAutoreleases(innerFlow, stmts); innerFlow.freeScopedLocals(); outerFlow.popBreakLabel(); - this.currentFlow = outerFlow; innerFlow.unset( FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS | @@ -1935,19 +1962,8 @@ export class Compiler extends DiagnosticEmitter { FlowFlags.CONDITIONALLY_CONTINUES ); outerFlow.inherit(innerFlow); - - var block: ExpressionRef[] = [ - module.loop(continueLabel, - terminated - ? flatten(module, stmts, NativeType.None) // skip trailing continue if unnecessary - : module.block(null, [ - flatten(module, stmts, NativeType.None), - module.br(continueLabel, condExpr) - ], NativeType.None) - ) - ]; - if (terminated) block.push(module.unreachable()); - return module.block(breakLabel, block); + this.currentFlow = outerFlow; + return expr; } compileEmptyStatement( @@ -1970,23 +1986,20 @@ export class Compiler extends DiagnosticEmitter { statement: ForStatement, contextualFlags: ContextualFlags ): ExpressionRef { - // A for statement initiates a new branch with its own scoped variables - // possibly declared in its initializer, and break context. + var module = this.module; + + // Set up and use the inner flow var outerFlow = this.currentFlow; var label = outerFlow.pushBreakLabel(); var innerFlow = outerFlow.fork(); this.currentFlow = innerFlow; - var breakLabel = innerFlow.breakLabel = "break|" + label; - innerFlow.breakLabel = breakLabel; - var continueLabel = "continue|" + label; - innerFlow.continueLabel = continueLabel; - var repeatLabel = "repeat|" + label; - // Compile in correct order - var module = this.module; - var initExpr = statement.initializer - ? this.compileStatement(statement.initializer) - : 0; + // Compile the initializer + var initializer = statement.initializer; + var initExpr: ExpressionRef = 0; + if (initializer) initExpr = this.compileStatement(initializer); + + // Compile the condition var condExpr: ExpressionRef = 0; var alwaysTrue = false; if (statement.condition) { @@ -1996,40 +2009,97 @@ export class Compiler extends DiagnosticEmitter { this.currentType ) ); - // check if the condition is always true + // Simplify if the condition is constant if (getExpressionId(condExpr) == ExpressionId.Const) { assert(getExpressionType(condExpr) == NativeType.I32); - if (getConstValueI32(condExpr) != 0) alwaysTrue = true; - // TODO: could skip compilation if the condition is always false here, but beware that the - // initializer could still declare new 'var's that are used later on. + if (getConstValueI32(condExpr) == /* false */ 0) { + let stmts = new Array(); + if (initExpr) stmts.push(initExpr); + this.performAutoreleases(innerFlow, stmts); + innerFlow.freeScopedLocals(); + outerFlow.popBreakLabel(); + this.currentFlow = outerFlow; + return flatten(module, stmts, NativeType.None); + } + alwaysTrue = true; } - } else { - // omitted condition is always true + } else { // Omitted condition is always true condExpr = module.i32(1); alwaysTrue = true; } innerFlow.inheritNonnullIfTrue(condExpr); - var incrExpr = statement.incrementor - ? this.compileExpression(statement.incrementor, Type.void, - ContextualFlags.IMPLICIT | ContextualFlags.WILL_DROP - ) - : 0; + + // Compile incrementor + var incrementor = statement.incrementor; + var incrExpr: ExpressionRef = 0; + if (incrementor) incrExpr = this.compileExpression(incrementor, Type.void, ContextualFlags.IMPLICIT | ContextualFlags.WILL_DROP); + + // Compile body (break: drop out, continue: fall through to incrementor, + loop) + var breakLabel = innerFlow.breakLabel = "break|" + label; innerFlow.breakLabel = breakLabel; + innerFlow.breakLabel = breakLabel; + var continueLabel = "continue|" + label; + innerFlow.continueLabel = continueLabel; + var loopLabel = "loop|" + label; var bodyStatement = statement.statement; var stmts = new Array(); if (bodyStatement.kind == NodeKind.BLOCK) { this.compileStatements((bodyStatement).statements, false, stmts); } else { - stmts.push( - this.compileStatement(bodyStatement) - ); + stmts.push(this.compileStatement(bodyStatement)); + } + var terminates = innerFlow.is(FlowFlags.TERMINATES); + var continues = innerFlow.isAny(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES); + var breaks = innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS); + + // (block $break ;; (1) skip label (needed anyway) if skipping (4) + no breaks + // (initializer) ;; (2) [may be empty] + // (loop $loop ;; (3) skip if (6) does not fall through + no continues + // (br_if !cond $break) ;; (4) skip if always true + // (block $continue ;; (5) skip if no continues or nothing else than continue + // (...) ;; (6) + // ) + // (incrementor) ;; (7) skip if skipping (3) [may be empty] + // (br $loop) ;; (8) skip if skipping (3) + // ) + // ) + var fallsThrough = !terminates && !innerFlow.is(FlowFlags.BREAKS); + var needsLabel = !alwaysTrue || breaks; + + var loop = new Array(); + if (!alwaysTrue) { // (4) + loop.push(module.br(breakLabel, module.unary(UnaryOp.EqzI32, condExpr))); + } + if (continues) { // (5) + if (stmts.length > 1 || getExpressionId(stmts[0]) != ExpressionId.Break) { // otherwise lonely continue + loop.push(module.block(continueLabel, stmts)); + } + } else { + for (let i = 0, k = stmts.length; i < k; ++i) loop.push(stmts[i]); + } + var expr: ExpressionRef; + if (fallsThrough || continues) { // (3) + if (incrExpr) loop.push(incrExpr); // (7) + this.performAutoreleases(innerFlow, loop); + loop.push(module.br(loopLabel)); // (8) + if (initExpr) { // (2) + expr = module.block(needsLabel ? breakLabel : null, [ + initExpr, + module.loop(loopLabel, module.block(null, loop)) + ]); + } else { + expr = module.block(needsLabel ? breakLabel : null, [ + module.loop(loopLabel, flatten(module, loop, NativeType.None)) + ]); + } + } else { + if (initExpr) loop.unshift(initExpr); // (2) + this.performAutoreleases(innerFlow, loop); + expr = module.block(needsLabel ? breakLabel : null, loop); } - if (!innerFlow.isAny(FlowFlags.ANY_TERMINATING)) this.performAutoreleases(innerFlow, stmts); // Switch back to the parent flow innerFlow.freeScopedLocals(); outerFlow.popBreakLabel(); - this.currentFlow = outerFlow; - var usesContinue = innerFlow.isAny(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES); innerFlow.unset( FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS | @@ -2038,36 +2108,8 @@ export class Compiler extends DiagnosticEmitter { ); if (alwaysTrue) outerFlow.inherit(innerFlow); else outerFlow.inheritConditional(innerFlow); - - var breakBlock = new Array(); // outer 'break' block - if (initExpr) breakBlock.push(initExpr); - - var repeatBlock = new Array(); // block repeating the loop - if (usesContinue) { - stmts.unshift( - module.br(breakLabel, module.unary(UnaryOp.EqzI32, condExpr)) - ); - repeatBlock.push( - module.block(continueLabel, stmts, NativeType.None) - ); - } else { // can omit the 'continue' block - repeatBlock.push( - module.br(breakLabel, module.unary(UnaryOp.EqzI32, condExpr)) - ); - for (let i = 0, k = stmts.length; i < k; ++i) { - repeatBlock.push(stmts[i]); - } - } - if (incrExpr) repeatBlock.push(incrExpr); - repeatBlock.push( - module.br(repeatLabel) - ); - - breakBlock.push( - module.loop(repeatLabel, module.block(null, repeatBlock, NativeType.None)) - ); - - return module.block(breakLabel, breakBlock); + this.currentFlow = outerFlow; + return expr; } compileIfStatement( @@ -2109,7 +2151,7 @@ export class Compiler extends DiagnosticEmitter { } else { ifTrueStmts.push(this.compileStatement(ifTrue)); } - if (!ifTrueFlow.isAny(FlowFlags.ANY_TERMINATING)) this.performAutoreleases(ifTrueFlow, ifTrueStmts); + if (!ifTrueFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) this.performAutoreleases(ifTrueFlow, ifTrueStmts); ifTrueFlow.freeScopedLocals(); this.currentFlow = outerFlow; @@ -2123,7 +2165,7 @@ export class Compiler extends DiagnosticEmitter { } else { ifFalseStmts.push(this.compileStatement(ifFalse)); } - if (!ifFalseFlow.isAny(FlowFlags.ANY_TERMINATING)) this.performAutoreleases(ifFalseFlow, ifFalseStmts); + if (!ifFalseFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) this.performAutoreleases(ifFalseFlow, ifFalseStmts); ifFalseFlow.freeScopedLocals(); this.currentFlow = outerFlow; outerFlow.inheritMutual(ifTrueFlow, ifFalseFlow); @@ -2133,9 +2175,7 @@ export class Compiler extends DiagnosticEmitter { ); } else { outerFlow.inheritConditional(ifTrueFlow); - if (ifTrueFlow.isAny(FlowFlags.ANY_TERMINATING)) { - outerFlow.inheritNonnullIfFalse(condExpr); - } + if (ifTrueFlow.is(FlowFlags.TERMINATES)) outerFlow.inheritNonnullIfFalse(condExpr); return module.if(condExpr, flatten(module, ifTrueStmts, NativeType.None) ); @@ -2157,7 +2197,7 @@ export class Compiler extends DiagnosticEmitter { var returnType = flow.returnType; // Remember that this flow returns - flow.set(FlowFlags.RETURNS); + flow.set(FlowFlags.RETURNS | FlowFlags.TERMINATES); var valueExpression = statement.value; if (valueExpression) { @@ -2294,10 +2334,8 @@ export class Compiler extends DiagnosticEmitter { // nest blocks in order var currentBlock = module.block("case0|" + context, breaks, NativeType.None); - var alwaysReturns = true; - var alwaysReturnsWrapped = true; - var alwaysThrows = true; - var alwaysAllocates = true; + var commonCategorical = FlowFlags.ANY_CATEGORICAL; + var commonConditional = 0; for (let i = 0; i < numCases; ++i) { let case_ = cases[i]; let statements = case_.statements; @@ -2314,27 +2352,25 @@ export class Compiler extends DiagnosticEmitter { let stmts = new Array(1 + numStatements); stmts[0] = currentBlock; let count = 1; - let terminated = false; + let terminates = false; for (let j = 0; j < numStatements; ++j) { let stmt = this.compileStatement(statements[j]); if (getExpressionId(stmt) != ExpressionId.Nop) { stmts[count++] = stmt; - if (innerFlow.isAny(FlowFlags.ANY_TERMINATING)) { - terminated = true; - break; - } + } + if (innerFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) { + if (innerFlow.is(FlowFlags.TERMINATES)) terminates = true; + break; } } stmts.length = count; - if (terminated || isLast) { - if (!innerFlow.is(FlowFlags.RETURNS)) alwaysReturns = false; - if (!innerFlow.is(FlowFlags.RETURNS_WRAPPED)) alwaysReturnsWrapped = false; - if (!innerFlow.is(FlowFlags.THROWS)) alwaysThrows = false; - if (!innerFlow.is(FlowFlags.ALLOCATES)) alwaysAllocates = false; + if (terminates || isLast || innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) { + commonCategorical &= innerFlow.flags; } + commonConditional |= innerFlow.flags & FlowFlags.ANY_CONDITIONAL; // Switch back to the parent flow - if (!innerFlow.isAny(FlowFlags.ANY_TERMINATING)) this.performAutoreleases(innerFlow, stmts); + if (!terminates) this.performAutoreleases(innerFlow, stmts); innerFlow.unset( FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS @@ -2346,12 +2382,9 @@ export class Compiler extends DiagnosticEmitter { outerFlow.popBreakLabel(); // If the switch has a default (guaranteed to handle any value), propagate common flags - if (defaultIndex >= 0) { - if (alwaysReturns) outerFlow.set(FlowFlags.RETURNS); - if (alwaysReturnsWrapped) outerFlow.set(FlowFlags.RETURNS_WRAPPED); - if (alwaysThrows) outerFlow.set(FlowFlags.THROWS); - if (alwaysAllocates) outerFlow.set(FlowFlags.ALLOCATES); - } + if (defaultIndex >= 0) outerFlow.flags |= commonCategorical & ~FlowFlags.BREAKS; + outerFlow.flags |= commonConditional & ~FlowFlags.CONDITIONALLY_BREAKS; + // TODO: what about local states? return currentBlock; } @@ -2362,10 +2395,7 @@ export class Compiler extends DiagnosticEmitter { var flow = this.currentFlow; // Remember that this branch throws - flow.set(FlowFlags.THROWS); - - // FIXME: without try-catch it is safe to assume RETURNS as well for now - flow.set(FlowFlags.RETURNS); + flow.set(FlowFlags.THROWS | FlowFlags.TERMINATES); var stmts = new Array(); this.finishAutoreleases(flow, stmts); @@ -2597,7 +2627,7 @@ export class Compiler extends DiagnosticEmitter { var module = this.module; var outerFlow = this.currentFlow; - // The condition does not yet initialize a branch + // Compile condition var condExpr = module.precomputeExpression( this.makeIsTrueish( this.compileExpressionRetainType(statement.condition, Type.bool), @@ -2605,15 +2635,15 @@ export class Compiler extends DiagnosticEmitter { ) ); - // Try to eliminate unnecesssary loops if the condition is constant - if ( - getExpressionId(condExpr) == ExpressionId.Const && - getExpressionType(condExpr) == NativeType.I32 - ) { - if (!getConstValueI32(condExpr)) return module.nop(); + // Simplify if the condition is constant + var alwaysTrue = false; + if (getExpressionId(condExpr) == ExpressionId.Const) { + assert(getExpressionType(condExpr) == NativeType.I32); + if (!getConstValueI32(condExpr)) return module.nop(); // simplify + alwaysTrue = true; } - // Statements initiate a new branch with its own break context + // Compile body var label = outerFlow.pushBreakLabel(); var innerFlow = outerFlow.fork(); this.currentFlow = innerFlow; @@ -2621,7 +2651,6 @@ export class Compiler extends DiagnosticEmitter { innerFlow.breakLabel = breakLabel; var continueLabel = "continue|" + label; innerFlow.continueLabel = continueLabel; - innerFlow.inheritNonnullIfTrue(condExpr); var stmts = new Array(); if (statement.statement.kind == NodeKind.BLOCK) { @@ -2629,17 +2658,35 @@ export class Compiler extends DiagnosticEmitter { } else { stmts.push(this.compileStatement(statement.statement)); } - var alwaysTrue = false; // TODO - var terminated = innerFlow.isAny(FlowFlags.ANY_TERMINATING); - if (!terminated) { + var terminates = innerFlow.is(FlowFlags.TERMINATES); + + // (block $break ;; (1) skip if skipping (3) + no breaks + // (loop $continue ;; (2) skip if skipping (5) + no continues + // (br_if !cond $break) ;; (3) skip if always true + // (...) ;; (4) + // (br $continue) ;; (5) skip if (4) does not fall through + // ) + // ) + var fallsThrough = !terminates && !innerFlow.is(FlowFlags.BREAKS); + + if (fallsThrough) { // (5) this.performAutoreleases(innerFlow, stmts); stmts.push(module.br(continueLabel)); } - innerFlow.freeScopedLocals(); + if (!alwaysTrue) { // (3) + stmts.unshift(module.br(breakLabel, module.unary(UnaryOp.EqzI32, condExpr))); + } + var expr = flatten(module, stmts, NativeType.None); + if (fallsThrough || innerFlow.isAny(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES)) { // (2) + expr = module.loop(continueLabel, expr); + } + if (!alwaysTrue || innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) { // (1) + expr = module.block(breakLabel, [ expr ]); + } // Switch back to the parent flow + innerFlow.freeScopedLocals(); outerFlow.popBreakLabel(); - this.currentFlow = outerFlow; innerFlow.unset( FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS | @@ -2648,14 +2695,8 @@ export class Compiler extends DiagnosticEmitter { ); if (alwaysTrue) outerFlow.inherit(innerFlow); else outerFlow.inheritConditional(innerFlow); - - return module.block(breakLabel, [ - module.loop(continueLabel, - module.if(condExpr, - flatten(module, stmts, NativeType.None) - ) - ) - ]); + this.currentFlow = outerFlow; + return expr; } // === Expressions ============================================================================== @@ -6282,7 +6323,7 @@ export class Compiler extends DiagnosticEmitter { this.compileFunctionBody(instance, body); // Free any new scoped locals and reset to the original flow - if (!flow.isAny(FlowFlags.ANY_TERMINATING)) { + if (!flow.is(FlowFlags.TERMINATES)) { this.performAutoreleases(flow, body); this.finishAutoreleases(flow, body); } @@ -9028,7 +9069,16 @@ var mangleImportName_elementName: string; export function flatten(module: Module, stmts: ExpressionRef[], type: NativeType): ExpressionRef { var length = stmts.length; if (length == 0) return module.nop(); // usually filtered out again - if (length == 1) return stmts[0]; + if (length == 1) { + let single = stmts[0]; + if (getExpressionType(single) == type) return single; + if (getExpressionId(single) == ExpressionId.Block) { + let count = getBlockChildCount(single); + let children = new Array(count); + for (let i = 0; i < count; ++i) children[i] = getBlockChild(single, i); + return module.block(getBlockName(single), children, type); + } + } return module.block(null, stmts, type == NativeType.Auto ? getExpressionType(stmts[length - 1]) diff --git a/src/flow.ts b/src/flow.ts index f8822def..ce4a250a 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -91,35 +91,33 @@ export const enum FlowFlags { ALLOCATES = 1 << 6, /** This flow calls super. Constructors only. */ CALLS_SUPER = 1 << 7, + /** This flow terminates (returns, throws or continues). */ + TERMINATES = 1 << 8, // conditional /** This flow conditionally returns in a child flow. */ - CONDITIONALLY_RETURNS = 1 << 8, + CONDITIONALLY_RETURNS = 1 << 9, /** This flow conditionally throws in a child flow. */ - CONDITIONALLY_THROWS = 1 << 9, + CONDITIONALLY_THROWS = 1 << 10, + /** This flow conditionally terminates in a child flow. */ + CONDITIONALLY_TERMINATES = 1 << 11, /** This flow conditionally breaks in a child flow. */ - CONDITIONALLY_BREAKS = 1 << 10, + CONDITIONALLY_BREAKS = 1 << 12, /** This flow conditionally continues in a child flow. */ - CONDITIONALLY_CONTINUES = 1 << 11, + CONDITIONALLY_CONTINUES = 1 << 13, /** This flow conditionally allocates in a child flow. Constructors only. */ - CONDITIONALLY_ALLOCATES = 1 << 12, + CONDITIONALLY_ALLOCATES = 1 << 14, // special /** This is an inlining flow. */ - INLINE_CONTEXT = 1 << 13, + INLINE_CONTEXT = 1 << 15, /** This is a flow with explicitly disabled bounds checking. */ - UNCHECKED_CONTEXT = 1 << 14, + UNCHECKED_CONTEXT = 1 << 16, // masks - /** Any terminating flag. */ - ANY_TERMINATING = FlowFlags.RETURNS - | FlowFlags.THROWS - | FlowFlags.BREAKS - | FlowFlags.CONTINUES, - /** Any categorical flag. */ ANY_CATEGORICAL = FlowFlags.RETURNS | FlowFlags.RETURNS_WRAPPED @@ -128,7 +126,8 @@ export const enum FlowFlags { | FlowFlags.BREAKS | FlowFlags.CONTINUES | FlowFlags.ALLOCATES - | FlowFlags.CALLS_SUPER, + | FlowFlags.CALLS_SUPER + | FlowFlags.TERMINATES, /** Any conditional flag. */ ANY_CONDITIONAL = FlowFlags.CONDITIONALLY_RETURNS @@ -551,10 +550,14 @@ export class Flow { // categorical flags set in both arms this.set(left.flags & right.flags & FlowFlags.ANY_CATEGORICAL); - // conditional flags set in at least one arm + // conditional flags set in any arm this.set(left.flags & FlowFlags.ANY_CONDITIONAL); this.set(right.flags & FlowFlags.ANY_CONDITIONAL); + // categorical flags in either arm as conditional + this.inheritConditional(left); + this.inheritConditional(right); + // categorical local flags set in both arms / conditional local flags set in at least one arm var leftLocalFlags = left.localFlags; var numLeftLocalFlags = leftLocalFlags.length; diff --git a/src/glue/js/index.ts b/src/glue/js/index.ts index 03dffbc5..fe8d14e7 100644 --- a/src/glue/js/index.ts +++ b/src/glue/js/index.ts @@ -14,7 +14,11 @@ import "./i64"; import { Module } from "../../module"; Module.prototype.toText = function(this: Module) { - return binaryen.wrapModule(this.ref).emitStackIR(); + // NOTE: Conversion to StackIR can yield conversion artifacts like sequences + // of unreachable statements not actually emitted by the compiler. Optimizing + // StackIR removes these again, but may also suppress useless code emitted by + // the compiler that's then no longer visible in tests. Both not ideal. + return binaryen.wrapModule(this.ref).emitStackIR(/* optimize-stack-ir */ true); }; Module.prototype.toAsmjs = function(this: Module) { diff --git a/src/program.ts b/src/program.ts index 9fd16a66..5c7082ee 100644 --- a/src/program.ts +++ b/src/program.ts @@ -1566,7 +1566,7 @@ export class Program extends DiagnosticEmitter { this.error( DiagnosticCode.Duplicate_identifier_0, declaration.name.range, "default" - ) + ); return; } exports.set("default", element); diff --git a/tests/binaryen/unreachable-spam.js b/tests/binaryen/unreachable-spam.js new file mode 100644 index 00000000..e5d4b214 --- /dev/null +++ b/tests/binaryen/unreachable-spam.js @@ -0,0 +1,25 @@ +var binaryen = require("binaryen"); + +var mod = new binaryen.Module(); +var funcType = mod.addFunctionType("ii", binaryen.i32, [ binaryen.i32 ]); +mod.addFunction("0", funcType, [], + mod.block(null, [ + mod.loop("continue", + mod.block(null, [ + mod.if( + mod.local.get(0, binaryen.i32), + mod.return(mod.i32.const(1)), + mod.return(mod.i32.const(2)) + ), + mod.unreachable() + ]) + ), + mod.unreachable() + ], binaryen.i32) +); +mod.addExport("0", "0"); + +if (!mod.validate()) + console.log("-> does not validate"); +console.log(mod.emitText()); +console.log(mod.emitStackIR(/*true*/)); // optimize-stack-ir fixes this diff --git a/tests/compiler/abi.untouched.wat b/tests/compiler/abi.untouched.wat index 93d816db..887c65e1 100644 --- a/tests/compiler/abi.untouched.wat +++ b/tests/compiler/abi.untouched.wat @@ -25,171 +25,161 @@ i32.const 0 i32.eqz global.set $abi/condition - block - i32.const 256 - local.set $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 32 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - end - block - i32.const 256 - local.set $0 - global.get $abi/condition - if - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.div_s - local.set $0 - else - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.div_s - local.set $0 - end - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 45 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - end - block - i32.const 256 - local.set $0 - global.get $abi/condition - if - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 24 - i32.shr_s - local.set $0 - else - local.get $0 - i32.const 127 - i32.and - local.set $0 - end - local.get $0 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 58 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - end - block - i32.const 256 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - global.set $abi/y - global.get $abi/y - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 65 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - end - block - i32.const 2 - i32.ctz - local.set $0 - local.get $0 + i32.const 256 + local.set $0 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.eqz + i32.eqz + if i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 72 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.clz - local.set $0 - local.get $0 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 74 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + i32.const 24 + i32.const 32 i32.const 2 - i32.ctz - local.set $1 - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 77 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.clz - local.set $1 - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 79 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + call $~lib/builtins/abort + unreachable + end + i32.const 256 + local.set $0 + global.get $abi/condition + if + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 2 + i32.div_s + local.set $0 + else + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 2 + i32.div_s + local.set $0 + end + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 45 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 256 + local.set $0 + global.get $abi/condition + if + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 24 + i32.shr_s + local.set $0 + else + local.get $0 + i32.const 127 + i32.and + local.set $0 + end + local.get $0 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 58 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 256 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + global.set $abi/y + global.get $abi/y + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 65 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.ctz + local.set $0 + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 72 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.clz + local.set $0 + local.get $0 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 74 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.ctz + local.set $1 + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 77 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.clz + local.set $1 + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 79 + i32.const 2 + call $~lib/builtins/abort + unreachable end ) (func $abi/exported (; 3 ;) (type $FUNCSIG$i) (result i32) diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index ed5bd823..34da49a3 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -157,13 +157,11 @@ local.get $0 call_indirect (type $FUNCSIG$i) local.tee $0 - local.set $1 local.get $0 i32.eqz if unreachable end - local.get $1 ) (func $assert-nonnull/testObjFn (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 @@ -180,13 +178,11 @@ i32.load offset=4 call_indirect (type $FUNCSIG$i) local.tee $0 - local.set $1 local.get $0 i32.eqz if unreachable end - local.get $1 ) (func $null (; 15 ;) (type $FUNCSIG$v) nop diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index 780007f7..99aed7ec 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -260,13 +260,11 @@ (func $assert-nonnull/testFn (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - block (result i32) - i32.const 0 - global.set $~lib/argc - local.get $0 - call_indirect (type $FUNCSIG$i) - local.tee $1 - end + i32.const 0 + global.set $~lib/argc + local.get $0 + call_indirect (type $FUNCSIG$i) + local.tee $1 call $~lib/rt/stub/__retain local.set $2 local.get $1 @@ -285,13 +283,11 @@ unreachable end local.set $2 - block (result i32) - i32.const 0 - global.set $~lib/argc - local.get $2 - call_indirect (type $FUNCSIG$i) - local.tee $1 - end + i32.const 0 + global.set $~lib/argc + local.get $2 + call_indirect (type $FUNCSIG$i) + local.tee $1 call $~lib/rt/stub/__retain local.set $3 local.get $1 @@ -301,13 +297,11 @@ (func $assert-nonnull/testRet (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - block (result i32) - i32.const 0 - global.set $~lib/argc - local.get $0 - call_indirect (type $FUNCSIG$i) - local.tee $1 - end + i32.const 0 + global.set $~lib/argc + local.get $0 + call_indirect (type $FUNCSIG$i) + local.tee $1 local.tee $2 if (result i32) local.get $2 @@ -326,14 +320,12 @@ local.get $0 call $~lib/rt/stub/__retain drop - block (result i32) - i32.const 0 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - call_indirect (type $FUNCSIG$i) - local.tee $1 - end + i32.const 0 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + call_indirect (type $FUNCSIG$i) + local.tee $1 call $~lib/rt/stub/__retain local.set $2 local.get $1 @@ -348,14 +340,12 @@ local.get $0 call $~lib/rt/stub/__retain drop - block (result i32) - i32.const 0 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - call_indirect (type $FUNCSIG$i) - local.tee $1 - end + i32.const 0 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + call_indirect (type $FUNCSIG$i) + local.tee $1 local.tee $2 if (result i32) local.get $2 diff --git a/tests/compiler/binary.untouched.wat b/tests/compiler/binary.untouched.wat index 696dd9c7..80dd5993 100644 --- a/tests/compiler/binary.untouched.wat +++ b/tests/compiler/binary.untouched.wat @@ -337,7 +337,6 @@ unreachable end unreachable - unreachable end local.get $8 i32.const 1072693248 @@ -1344,36 +1343,37 @@ local.get $4 local.get $5 i32.gt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.ge_u if local.get $2 local.get $3 - i32.ge_u + i32.eq if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - local.set $2 + f32.const 0 + local.get $0 + f32.mul + return end local.get $2 - i32.const 1 - i32.shl - local.set $2 - local.get $4 - i32.const 1 + local.get $3 i32.sub - local.set $4 - br $continue|0 + local.set $2 end + local.get $2 + i32.const 1 + i32.shl + local.set $2 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $continue|0 end + unreachable end local.get $2 local.get $3 @@ -1688,7 +1688,6 @@ unreachable end unreachable - unreachable end local.get $5 i32.const 1065353216 @@ -2620,36 +2619,37 @@ local.get $4 local.get $5 i64.gt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i64.ge_u if local.get $2 local.get $3 - i64.ge_u + i64.eq if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 - i64.sub - local.set $2 + f64.const 0 + local.get $0 + f64.mul + return end local.get $2 - i64.const 1 - i64.shl - local.set $2 - local.get $4 - i64.const 1 + local.get $3 i64.sub - local.set $4 - br $continue|0 + local.set $2 end + local.get $2 + i64.const 1 + i64.shl + local.set $2 + local.get $4 + i64.const 1 + i64.sub + local.set $4 + br $continue|0 end + unreachable end local.get $2 local.get $3 diff --git a/tests/compiler/call-optional.untouched.wat b/tests/compiler/call-optional.untouched.wat index da1f755b..57740d1e 100644 --- a/tests/compiler/call-optional.untouched.wat +++ b/tests/compiler/call-optional.untouched.wat @@ -42,14 +42,12 @@ call $call-optional/opt ) (func $start:call-optional (; 3 ;) (type $FUNCSIG$v) - block (result i32) - i32.const 1 - global.set $~lib/argc - i32.const 3 - i32.const 0 - i32.const 0 - call $call-optional/opt|trampoline - end + i32.const 1 + global.set $~lib/argc + i32.const 3 + i32.const 0 + i32.const 0 + call $call-optional/opt|trampoline i32.const 0 i32.eq i32.eqz @@ -61,14 +59,12 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 2 - global.set $~lib/argc - i32.const 3 - i32.const 4 - i32.const 0 - call $call-optional/opt|trampoline - end + i32.const 2 + global.set $~lib/argc + i32.const 3 + i32.const 4 + i32.const 0 + call $call-optional/opt|trampoline i32.const 5 i32.eq i32.eqz @@ -95,15 +91,13 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 1 - global.set $~lib/argc - i32.const 3 - i32.const 0 - i32.const 0 - global.get $call-optional/optIndirect - call_indirect (type $FUNCSIG$iiii) - end + i32.const 1 + global.set $~lib/argc + i32.const 3 + i32.const 0 + i32.const 0 + global.get $call-optional/optIndirect + call_indirect (type $FUNCSIG$iiii) i32.const 0 i32.eq i32.eqz @@ -115,15 +109,13 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 2 - global.set $~lib/argc - i32.const 3 - i32.const 4 - i32.const 0 - global.get $call-optional/optIndirect - call_indirect (type $FUNCSIG$iiii) - end + i32.const 2 + global.set $~lib/argc + i32.const 3 + i32.const 4 + i32.const 0 + global.get $call-optional/optIndirect + call_indirect (type $FUNCSIG$iiii) i32.const 5 i32.eq i32.eqz @@ -135,15 +127,13 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 3 - global.set $~lib/argc - i32.const 3 - i32.const 4 - i32.const 5 - global.get $call-optional/optIndirect - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + i32.const 3 + i32.const 4 + i32.const 5 + global.get $call-optional/optIndirect + call_indirect (type $FUNCSIG$iiii) i32.const 12 i32.eq i32.eqz diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 17f181cb..19f45f6b 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -330,9 +330,7 @@ ) (func $call-super/test4 (; 10 ;) (type $FUNCSIG$v) (local $0 i32) - block (result i32) - call $call-super/H#constructor - end + call $call-super/H#constructor local.tee $0 i32.load i32.const 1 @@ -381,9 +379,7 @@ ) (func $call-super/test5 (; 12 ;) (type $FUNCSIG$v) (local $0 i32) - block (result i32) - call $call-super/J#constructor - end + call $call-super/J#constructor local.tee $0 i32.load i32.const 1 diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index d6d81f87..d0365d64 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -110,21 +110,19 @@ local.get $0 ) (func $call-super/A#constructor (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 + local.get $0 + i32.eqz + if + i32.const 4 + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end + local.get $0 + i32.const 1 + i32.store + local.get $0 i32.load i32.const 1 i32.eq @@ -312,21 +310,19 @@ call $~lib/rt/stub/__release ) (func $call-super/E#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 7 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 + local.get $0 + i32.eqz + if + i32.const 4 + i32.const 7 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end + local.get $0 + i32.const 1 + i32.store + local.get $0 i32.load i32.const 1 i32.eq diff --git a/tests/compiler/comma.optimized.wat b/tests/compiler/comma.optimized.wat index c8e6b507..1ca52c71 100644 --- a/tests/compiler/comma.optimized.wat +++ b/tests/compiler/comma.optimized.wat @@ -129,7 +129,7 @@ end i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 global.get $comma/a @@ -143,7 +143,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $0 diff --git a/tests/compiler/comma.untouched.wat b/tests/compiler/comma.untouched.wat index 8dac9f76..7c038e5d 100644 --- a/tests/compiler/comma.untouched.wat +++ b/tests/compiler/comma.untouched.wat @@ -13,19 +13,15 @@ (func $start:comma (; 1 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - block - block (result i32) - global.get $comma/a - local.tee $0 - i32.const 1 - i32.add - global.set $comma/a - local.get $0 - end - global.set $comma/b - global.get $comma/a - drop - end + global.get $comma/a + local.tee $0 + i32.const 1 + i32.add + global.set $comma/a + local.get $0 + global.set $comma/b + global.get $comma/a + drop global.get $comma/a i32.const 1 i32.eq @@ -50,14 +46,12 @@ call $~lib/builtins/abort unreachable end - block - global.get $comma/a - i32.const 1 - i32.add - global.set $comma/a - global.get $comma/a - global.set $comma/b - end + global.get $comma/a + i32.const 1 + i32.add + global.set $comma/a + global.get $comma/a + global.set $comma/b global.get $comma/a i32.const 2 i32.eq @@ -82,19 +76,15 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 0 - global.set $comma/b - global.get $comma/b - end + i32.const 0 + global.set $comma/b + global.get $comma/b global.set $comma/a - block (result i32) - global.get $comma/a - i32.const 1 - i32.add - global.set $comma/a - global.get $comma/a - end + global.get $comma/a + i32.const 1 + i32.add + global.set $comma/a + global.get $comma/a global.set $comma/b global.get $comma/a i32.const 1 @@ -120,17 +110,13 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $comma/a - i32.const 1 - i32.add - global.set $comma/a - block (result i32) - global.get $comma/a - global.set $comma/b - global.get $comma/b - end - end + global.get $comma/a + i32.const 1 + i32.add + global.set $comma/a + global.get $comma/a + global.set $comma/b + global.get $comma/b global.set $comma/a global.get $comma/a i32.const 2 @@ -159,25 +145,22 @@ block $break|0 i32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 global.get $comma/a i32.lt_s i32.eqz br_if $break|0 nop - block - global.get $comma/a - i32.const 1 - i32.sub - global.set $comma/a - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - br $repeat|0 - unreachable + global.get $comma/a + i32.const 1 + i32.sub + global.set $comma/a + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $loop|0 end unreachable end @@ -193,14 +176,12 @@ call $~lib/builtins/abort unreachable end - block - i32.const 1 - drop - i32.const 2 - drop - i32.const 3 - drop - end + i32.const 1 + drop + i32.const 2 + drop + i32.const 3 + drop ) (func $start (; 2 ;) (type $FUNCSIG$v) call $start:comma diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index 3e80c484..4fac0d0a 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -154,17 +154,15 @@ global.set $constructor/ctorAllocates i32.const 0 local.set $0 - block (result i32) - global.get $constructor/b - if - i32.const 0 - i32.const 12 - call $~lib/rt/stub/__alloc - local.set $0 - end - local.get $0 - i32.eqz + global.get $constructor/b + if + i32.const 0 + i32.const 12 + call $~lib/rt/stub/__alloc + local.set $0 end + local.get $0 + i32.eqz if i32.const 0 i32.const 12 diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index c9e07820..1ae5687c 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -223,36 +223,32 @@ local.get $0 ) (func $constructor/CtorAllocates#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 11 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 11 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end + local.get $0 drop local.get $0 ) (func $constructor/CtorConditionallyAllocates#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) global.get $constructor/b if - block (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 12 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 12 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end + local.get $0 drop end local.get $0 diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index 90ae424b..dada59c3 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.untouched.wat @@ -13,21 +13,17 @@ (start $start) (func $start:do (; 1 ;) (type $FUNCSIG$v) (local $0 i32) - block $break|0 - loop $continue|0 - block - global.get $do/n - i32.const 1 - i32.sub - global.set $do/n - global.get $do/m - i32.const 1 - i32.add - global.set $do/m - end - global.get $do/n - br_if $continue|0 - end + loop $continue|0 + global.get $do/n + i32.const 1 + i32.sub + global.set $do/n + global.get $do/m + i32.const 1 + i32.add + global.set $do/m + global.get $do/n + br_if $continue|0 end global.get $do/n i32.const 0 @@ -55,19 +51,15 @@ end i32.const 10 global.set $do/n - block $break|1 - loop $continue|1 - nop - block (result i32) - global.get $do/n - local.tee $0 - i32.const 1 - i32.sub - global.set $do/n - local.get $0 - end - br_if $continue|1 - end + loop $continue|1 + nop + global.get $do/n + local.tee $0 + i32.const 1 + i32.sub + global.set $do/n + local.get $0 + br_if $continue|1 end global.get $do/n i32.const -1 @@ -85,61 +77,53 @@ global.set $do/n i32.const 0 global.set $do/m - block $break|2 - loop $continue|2 - block - global.get $do/n - i32.const 1 - i32.sub - global.set $do/n - global.get $do/m - i32.const 1 - i32.add - global.set $do/m - block $break|3 - loop $continue|3 - block - global.get $do/n - i32.const 1 - i32.sub - global.set $do/n - global.get $do/o - i32.const 1 - i32.add - global.set $do/o - end - global.get $do/n - br_if $continue|3 - end - end - global.get $do/n - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 24 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $do/o - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 25 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - end + loop $continue|2 + global.get $do/n + i32.const 1 + i32.sub + global.set $do/n + global.get $do/m + i32.const 1 + i32.add + global.set $do/m + loop $continue|3 global.get $do/n - br_if $continue|2 + i32.const 1 + i32.sub + global.set $do/n + global.get $do/o + i32.const 1 + i32.add + global.set $do/o + global.get $do/n + br_if $continue|3 end + global.get $do/n + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 24 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $do/o + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 25 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $do/n + br_if $continue|2 end global.get $do/n i32.const 0 diff --git a/tests/compiler/empty.json b/tests/compiler/empty.json index 8ee35e6e..fc976a8b 100644 --- a/tests/compiler/empty.json +++ b/tests/compiler/empty.json @@ -1,6 +1,6 @@ { "asc_flags": [ - "--runtime half", + "--runtime none", "--use ASC_RTRACE=1" ] } diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 1284679a..437afdba 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -164,21 +164,19 @@ local.get $0 ) (func $exports/Car#constructor (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 + local.get $0 + i32.eqz + if + i32.const 4 + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end + local.get $0 + local.get $1 + i32.store + local.get $0 local.get $1 i32.store local.get $0 @@ -199,21 +197,19 @@ global.get $exports/vehicles.Car.TIRES ) (func $exports/vehicles.Car#constructor (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 + local.get $0 + i32.eqz + if + i32.const 4 + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end + local.get $0 + local.get $1 + i32.store + local.get $0 local.get $1 i32.store local.get $0 diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index b3875d78..39454bff 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -12,7 +12,7 @@ (local $1 i32) i32.const 0 global.set $for/i - loop $repeat|0 + loop $loop|0 block $break|0 global.get $for/i i32.const 10 @@ -22,7 +22,7 @@ i32.const 1 i32.add global.set $for/i - br $repeat|0 + br $loop|0 end end global.get $for/i @@ -36,7 +36,7 @@ call $~lib/builtins/abort unreachable end - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 i32.const 10 @@ -46,10 +46,10 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end end - loop $repeat|2 + loop $loop|2 global.get $for/i i32.const 0 i32.le_s @@ -59,7 +59,7 @@ i32.const 1 i32.sub global.set $for/i - br $repeat|2 + br $loop|2 end end global.get $for/i @@ -71,7 +71,7 @@ call $~lib/builtins/abort unreachable end - loop $repeat|3 + loop $loop|3 global.get $for/i i32.const 10 i32.eq @@ -81,20 +81,20 @@ i32.const 1 i32.add global.set $for/i - br $repeat|3 + br $loop|3 end end - loop $repeat|4 + loop $loop|4 global.get $for/i i32.const 1 i32.sub global.set $for/i global.get $for/i - br_if $repeat|4 + br_if $loop|4 end i32.const 0 local.set $0 - loop $repeat|5 + loop $loop|5 block $break|5 local.get $0 i32.const 10 @@ -104,7 +104,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|5 + br $loop|5 end end local.get $0 @@ -120,7 +120,7 @@ end i32.const 0 local.set $0 - loop $repeat|6 + loop $loop|6 block $break|6 local.get $0 i32.const 10 @@ -128,7 +128,7 @@ br_if $break|6 i32.const 0 local.set $1 - loop $repeat|7 + loop $loop|7 block $break|7 local.get $1 i32.const 10 @@ -144,14 +144,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|7 + br $loop|7 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|6 + br $loop|6 end end ) diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index 11e16036..dad71958 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -17,7 +17,7 @@ block $break|0 i32.const 0 global.set $for/i - loop $repeat|0 + loop $loop|0 global.get $for/i i32.const 10 i32.lt_s @@ -27,8 +27,7 @@ i32.const 1 i32.add global.set $for/i - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -47,7 +46,7 @@ block $break|1 i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i32.const 10 i32.lt_s @@ -57,13 +56,12 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 - unreachable + br $loop|1 end unreachable end block $break|2 - loop $repeat|2 + loop $loop|2 global.get $for/i i32.const 0 i32.gt_s @@ -74,8 +72,7 @@ i32.const 1 i32.sub global.set $for/i - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -92,10 +89,7 @@ unreachable end block $break|3 - loop $repeat|3 - i32.const 1 - i32.eqz - br_if $break|3 + loop $loop|3 global.get $for/i i32.const 10 i32.eq @@ -106,51 +100,43 @@ i32.const 1 i32.add global.set $for/i - br $repeat|3 - unreachable + br $loop|3 end unreachable end block $break|4 - loop $repeat|4 + loop $loop|4 + global.get $for/i i32.const 1 - i32.eqz - br_if $break|4 - block (result i32) - global.get $for/i - i32.const 1 - i32.sub - global.set $for/i - global.get $for/i - end + i32.sub + global.set $for/i + global.get $for/i i32.const 0 i32.eq if br $break|4 end - br $repeat|4 - unreachable + br $loop|4 end unreachable end block $break|5 i32.const 0 local.set $1 - loop $repeat|5 + loop $loop|5 + local.get $1 + i32.const 10 + i32.lt_s + i32.eqz + br_if $break|5 block $continue|5 - local.get $1 - i32.const 10 - i32.lt_s - i32.eqz - br_if $break|5 br $continue|5 end local.get $1 i32.const 1 i32.add local.set $1 - br $repeat|5 - unreachable + br $loop|5 end unreachable end @@ -169,7 +155,7 @@ block $break|6 i32.const 0 local.set $2 - loop $repeat|6 + loop $loop|6 local.get $2 i32.const 10 i32.lt_s @@ -178,13 +164,13 @@ block $break|7 i32.const 0 local.set $3 - loop $repeat|7 + loop $loop|7 + local.get $3 + i32.const 10 + i32.lt_s + i32.eqz + br_if $break|7 block $continue|7 - local.get $3 - i32.const 10 - i32.lt_s - i32.eqz - br_if $break|7 local.get $2 local.get $3 i32.eq @@ -196,8 +182,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|7 - unreachable + br $loop|7 end unreachable end @@ -205,8 +190,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|6 - unreachable + br $loop|6 end unreachable end diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index c5751357..77547bfb 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -68,13 +68,11 @@ i32.const 10 ) (func $start:function-expression (; 15 ;) (type $FUNCSIG$v) - block (result i32) - i32.const 1 - global.set $~lib/argc - i32.const 1 - global.get $function-expression/f1 - call_indirect (type $FUNCSIG$ii) - end + i32.const 1 + global.set $~lib/argc + i32.const 1 + global.get $function-expression/f1 + call_indirect (type $FUNCSIG$ii) i32.const 1 i32.eq i32.eqz @@ -86,13 +84,11 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 1 - global.set $~lib/argc - i32.const 2 - global.get $function-expression/f2 - call_indirect (type $FUNCSIG$ii) - end + i32.const 1 + global.set $~lib/argc + i32.const 2 + global.get $function-expression/f2 + call_indirect (type $FUNCSIG$ii) i32.const 2 i32.eq i32.eqz @@ -104,18 +100,14 @@ call $~lib/builtins/abort unreachable end - block - i32.const 0 - global.set $~lib/argc - global.get $function-expression/f3 - call_indirect (type $FUNCSIG$v) - end - block (result i32) - i32.const 0 - global.set $~lib/argc - global.get $function-expression/f4 - call_indirect (type $FUNCSIG$i) - end + i32.const 0 + global.set $~lib/argc + global.get $function-expression/f3 + call_indirect (type $FUNCSIG$v) + i32.const 0 + global.set $~lib/argc + global.get $function-expression/f4 + call_indirect (type $FUNCSIG$i) i32.const 1 i32.eq i32.eqz @@ -166,14 +158,12 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 2 - global.set $~lib/argc - i32.const 1 - i32.const 2 - call $function-expression/testOmittedReturn1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + i32.const 1 + i32.const 2 + call $function-expression/testOmittedReturn1 + call_indirect (type $FUNCSIG$iii) i32.const 3 i32.eq i32.eqz @@ -185,14 +175,12 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 2 - global.set $~lib/argc - i32.const 1 - i32.const 2 - call $function-expression/testOmittedReturn2 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + i32.const 1 + i32.const 2 + call $function-expression/testOmittedReturn2 + call_indirect (type $FUNCSIG$iii) i32.const 1 i32.eq i32.eqz @@ -204,14 +192,12 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 2 - global.set $~lib/argc - i32.const 1 - i32.const 2 - call $function-expression/testOmittedReturn3 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + i32.const 1 + i32.const 2 + call $function-expression/testOmittedReturn3 + call_indirect (type $FUNCSIG$iii) i32.const 42 i32.eq i32.eqz diff --git a/tests/compiler/function-types.untouched.wat b/tests/compiler/function-types.untouched.wat index a02dbe06..62d37d5c 100644 --- a/tests/compiler/function-types.untouched.wat +++ b/tests/compiler/function-types.untouched.wat @@ -91,14 +91,12 @@ (func $start:function-types (; 12 ;) (type $FUNCSIG$v) call $function-types/makeAdder global.set $function-types/i32Adder - block (result i32) - i32.const 2 - global.set $~lib/argc - i32.const 1 - i32.const 2 - global.get $function-types/i32Adder - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + i32.const 1 + i32.const 2 + global.get $function-types/i32Adder + call_indirect (type $FUNCSIG$iii) i32.const 3 i32.eq i32.eqz @@ -112,14 +110,12 @@ end call $function-types/makeAdder global.set $function-types/i64Adder - block (result i64) - i32.const 2 - global.set $~lib/argc - i64.const 10 - i64.const 20 - global.get $function-types/i64Adder - call_indirect (type $FUNCSIG$jjj) - end + i32.const 2 + global.set $~lib/argc + i64.const 10 + i64.const 20 + global.get $function-types/i64Adder + call_indirect (type $FUNCSIG$jjj) i64.const 30 i64.eq i32.eqz @@ -131,14 +127,12 @@ call $~lib/builtins/abort unreachable end - block (result f64) - i32.const 2 - global.set $~lib/argc - f64.const 1.5 - f64.const 2.5 - call $function-types/makeAdder - call_indirect (type $FUNCSIG$ddd) - end + i32.const 2 + global.set $~lib/argc + f64.const 1.5 + f64.const 2.5 + call $function-types/makeAdder + call_indirect (type $FUNCSIG$ddd) f64.const 4 f64.eq i32.eqz @@ -194,14 +188,12 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 2 - global.set $~lib/argc - i32.const 1 - i32.const 2 - i32.const 0 - call $function-types/makeAndAdd|trampoline - end + i32.const 2 + global.set $~lib/argc + i32.const 1 + i32.const 2 + i32.const 0 + call $function-types/makeAndAdd|trampoline i32.const 3 i32.eq i32.eqz diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index fa86224e..7aa2b4fb 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -136,13 +136,11 @@ i32.const 0 call $getter-call/C#constructor local.set $0 - block (result i32) - i32.const 0 - global.set $~lib/argc - local.get $0 - call $getter-call/C#get:x - call_indirect (type $FUNCSIG$i) - end + i32.const 0 + global.set $~lib/argc + local.get $0 + call $getter-call/C#get:x + call_indirect (type $FUNCSIG$i) local.set $1 local.get $0 call $~lib/rt/stub/__release diff --git a/tests/compiler/getter-setter.untouched.wat b/tests/compiler/getter-setter.untouched.wat index e6322ce2..a31ef8ab 100644 --- a/tests/compiler/getter-setter.untouched.wat +++ b/tests/compiler/getter-setter.untouched.wat @@ -45,11 +45,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 2 - call $getter-setter/Foo.bar.set:bar - call $getter-setter/Foo.bar.get:bar - end + i32.const 2 + call $getter-setter/Foo.bar.set:bar + call $getter-setter/Foo.bar.get:bar i32.const 2 i32.eq i32.eqz diff --git a/tests/compiler/if.untouched.wat b/tests/compiler/if.untouched.wat index b89e81e9..f65292c6 100644 --- a/tests/compiler/if.untouched.wat +++ b/tests/compiler/if.untouched.wat @@ -24,7 +24,6 @@ return end unreachable - unreachable ) (func $if/ifThen (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 @@ -44,7 +43,6 @@ return end unreachable - unreachable ) (func $start:if (; 4 ;) (type $FUNCSIG$v) i32.const 0 @@ -140,7 +138,6 @@ unreachable end unreachable - unreachable ) (func $start (; 6 ;) (type $FUNCSIG$v) call $start:if diff --git a/tests/compiler/infer-type.optimized.wat b/tests/compiler/infer-type.optimized.wat index e299ad1a..bc2a3ccf 100644 --- a/tests/compiler/infer-type.optimized.wat +++ b/tests/compiler/infer-type.optimized.wat @@ -18,7 +18,7 @@ global.set $infer-type/rf f64.const 0 global.set $infer-type/rF - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 10 i32.lt_s @@ -27,7 +27,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end ) diff --git a/tests/compiler/infer-type.untouched.wat b/tests/compiler/infer-type.untouched.wat index 66b69e7e..215e6626 100644 --- a/tests/compiler/infer-type.untouched.wat +++ b/tests/compiler/infer-type.untouched.wat @@ -80,13 +80,11 @@ global.get $infer-type/rF drop block $break|0 - block - i32.const 0 - local.set $0 - i32.const 10 - local.set $1 - end - loop $repeat|0 + i32.const 0 + local.set $0 + i32.const 10 + local.set $1 + loop $loop|0 local.get $0 local.get $1 i32.lt_s @@ -96,8 +94,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 - unreachable + br $loop|0 end unreachable end diff --git a/tests/compiler/inlining-blocklocals.untouched.wat b/tests/compiler/inlining-blocklocals.untouched.wat index 7f265c36..6330ed8b 100644 --- a/tests/compiler/inlining-blocklocals.untouched.wat +++ b/tests/compiler/inlining-blocklocals.untouched.wat @@ -19,37 +19,31 @@ (local $3 i32) i32.const 1 local.set $0 - block $inlining-blocklocals/theCall|inlined.0 - block (result i32) - local.get $0 - local.tee $1 - i32.const 1 - i32.add - local.set $0 - local.get $1 - end - local.set $3 - block (result i32) - global.get $inlining-blocklocals/b - local.tee $1 - i32.const 1 - i32.add - global.set $inlining-blocklocals/b - local.get $1 - end - local.set $2 - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.set $1 - local.get $3 - global.set $inlining-blocklocals/theCall_a - local.get $2 - global.set $inlining-blocklocals/theCall_b - local.get $1 - global.set $inlining-blocklocals/theCall_c - end + local.get $0 + local.tee $1 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.set $3 + global.get $inlining-blocklocals/b + local.tee $1 + i32.const 1 + i32.add + global.set $inlining-blocklocals/b + local.get $1 + local.set $2 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.set $1 + local.get $3 + global.set $inlining-blocklocals/theCall_a + local.get $2 + global.set $inlining-blocklocals/theCall_b + local.get $1 + global.set $inlining-blocklocals/theCall_c global.get $inlining-blocklocals/theCall_a i32.const 1 i32.eq diff --git a/tests/compiler/inlining-recursive.untouched.wat b/tests/compiler/inlining-recursive.untouched.wat index c8f5c4fa..4cc3e73c 100644 --- a/tests/compiler/inlining-recursive.untouched.wat +++ b/tests/compiler/inlining-recursive.untouched.wat @@ -14,9 +14,7 @@ call $inlining-recursive/bar ) (func $inlining-recursive/bar (; 2 ;) (type $FUNCSIG$v) - block $inlining-recursive/bar|inlined.0 - call $inlining-recursive/baz - end + call $inlining-recursive/baz ) (func $null (; 3 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 986f76a3..a7fe2b0a 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -135,11 +135,9 @@ call $~lib/builtins/abort unreachable end - block $inlining/func_ii_opt|inlined.0 (result i32) - i32.const 0 - local.set $2 - local.get $2 - end + i32.const 0 + local.set $2 + local.get $2 i32.const 0 i32.eq i32.eqz @@ -151,11 +149,9 @@ call $~lib/builtins/abort unreachable end - block $inlining/func_ii_opt|inlined.1 (result i32) - i32.const 1 - local.set $2 - local.get $2 - end + i32.const 1 + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz @@ -167,21 +163,19 @@ call $~lib/builtins/abort unreachable end - block $inlining/func_ii_loc|inlined.0 (result i32) - i32.const 2 - local.set $2 - local.get $2 - local.set $3 - local.get $3 - local.set $5 - local.get $5 - local.set $6 - local.get $6 - i32.const 1 - i32.add - local.set $4 - local.get $4 - end + i32.const 2 + local.set $2 + local.get $2 + local.set $3 + local.get $3 + local.set $5 + local.get $5 + local.set $6 + local.get $6 + i32.const 1 + i32.add + local.set $4 + local.get $4 i32.const 3 i32.eq i32.eqz @@ -193,21 +187,19 @@ call $~lib/builtins/abort unreachable end - block $inlining/func_ii_loc|inlined.1 (result i32) - i32.const 3 - local.set $5 - local.get $5 - local.set $4 - local.get $4 - local.set $2 - local.get $2 - local.set $6 - local.get $6 - i32.const 1 - i32.add - local.set $3 - local.get $3 - end + i32.const 3 + local.set $5 + local.get $5 + local.set $4 + local.get $4 + local.set $2 + local.get $2 + local.set $6 + local.get $6 + i32.const 1 + i32.add + local.set $3 + local.get $3 i32.const 4 i32.eq i32.eqz @@ -219,19 +211,13 @@ call $~lib/builtins/abort unreachable end - block $inlining/func_iv|inlined.0 - i32.const 0 - local.set $2 - end - block (result i32) - i32.const 1 - global.set $~lib/argc - i32.const 2 - block $inlining/func_fe|inlined.0 (result i32) - i32.const 1 - end - call_indirect (type $FUNCSIG$ii) - end + i32.const 0 + local.set $2 + i32.const 1 + global.set $~lib/argc + i32.const 2 + i32.const 1 + call_indirect (type $FUNCSIG$ii) i32.const 2 i32.eq i32.eqz @@ -243,15 +229,13 @@ call $~lib/builtins/abort unreachable end - block $inlining/Foo.method_static|inlined.0 (result i32) - i32.const 42 - local.set $6 - i32.const 2 - local.set $2 - local.get $6 - local.get $2 - i32.add - end + i32.const 42 + local.set $6 + i32.const 2 + local.set $2 + local.get $6 + local.get $2 + i32.add i32.const 44 i32.eq i32.eqz @@ -266,16 +250,14 @@ i32.const 123 call $~lib/rt/stub/__retain local.set $7 - block $inlining/Foo#method_this|inlined.0 (result i32) - local.get $7 - local.set $4 - i32.const 43 - local.set $5 - i32.const 3 - local.set $2 - local.get $4 - call $~lib/rt/stub/__retain - end + local.get $7 + local.set $4 + i32.const 43 + local.set $5 + i32.const 3 + local.set $2 + local.get $4 + call $~lib/rt/stub/__retain local.tee $2 i32.const 123 i32.eq @@ -391,58 +373,52 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $inlining/Bar#constructor|inlined.0 (result i32) - i32.const 0 - local.set $1 - i32.const 4 - local.set $0 - block $inlining/Baz#constructor|inlined.0 (result i32) - local.get $1 - if (result i32) - local.get $1 - else - i32.const 16 - i32.const 5 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - end - local.set $3 - i32.const 2 - local.set $2 - block (result i32) - local.get $3 - i32.eqz - if - i32.const 8 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $3 - end - local.get $3 - i32.const 1 - i32.store - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - end - local.get $2 - i32.store offset=4 - local.get $3 - end - local.set $1 - local.get $1 - i32.const 3 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $1 - local.get $0 - i32.store offset=12 + i32.const 0 + local.set $1 + i32.const 4 + local.set $0 + local.get $1 + if (result i32) local.get $1 + else + i32.const 16 + i32.const 5 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain end + local.set $3 + i32.const 2 + local.set $2 + local.get $3 + i32.eqz + if + i32.const 8 + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $3 + end + local.get $3 + i32.const 1 + i32.store + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=4 + local.get $3 + local.set $1 + local.get $1 + i32.const 3 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=12 + local.get $1 local.set $4 local.get $4 i32.load diff --git a/tests/compiler/instanceof.untouched.wat b/tests/compiler/instanceof.untouched.wat index 89144264..7136f6e1 100644 --- a/tests/compiler/instanceof.untouched.wat +++ b/tests/compiler/instanceof.untouched.wat @@ -19,11 +19,9 @@ (export "memory" (memory $0)) (start $start) (func $instanceof/isI32 (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - drop - i32.const 1 - end + local.get $0 + drop + i32.const 1 if i32.const 1 return @@ -32,14 +30,11 @@ return end unreachable - unreachable ) (func $instanceof/isI32 (; 2 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return @@ -48,14 +43,11 @@ return end unreachable - unreachable ) (func $instanceof/isI32 (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return @@ -64,14 +56,11 @@ return end unreachable - unreachable ) (func $instanceof/isI32 (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return @@ -80,7 +69,6 @@ return end unreachable - unreachable ) (func $~lib/rt/stub/__retain (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 @@ -91,11 +79,9 @@ (func $start:instanceof (; 7 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - block (result i32) - global.get $instanceof/a - drop - i32.const 1 - end + global.get $instanceof/a + drop + i32.const 1 i32.eqz if i32.const 0 @@ -105,11 +91,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/b - drop - i32.const 1 - end + global.get $instanceof/b + drop + i32.const 1 i32.eqz if i32.const 0 @@ -119,11 +103,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/i - drop - i32.const 0 - end + global.get $instanceof/i + drop + i32.const 0 i32.eqz i32.eqz if @@ -134,11 +116,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/I - drop - i32.const 0 - end + global.get $instanceof/I + drop + i32.const 0 i32.eqz i32.eqz if @@ -149,11 +129,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/f - drop - i32.const 0 - end + global.get $instanceof/f + drop + i32.const 0 i32.eqz i32.eqz if @@ -164,11 +142,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/F - drop - i32.const 0 - end + global.get $instanceof/F + drop + i32.const 0 i32.eqz i32.eqz if @@ -179,11 +155,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/b - drop - i32.const 1 - end + global.get $instanceof/b + drop + i32.const 1 i32.eqz if i32.const 0 @@ -193,11 +167,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/i - drop - i32.const 0 - end + global.get $instanceof/i + drop + i32.const 0 i32.eqz i32.eqz if @@ -208,11 +180,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/I - drop - i32.const 0 - end + global.get $instanceof/I + drop + i32.const 0 i32.eqz i32.eqz if @@ -223,11 +193,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/f - drop - i32.const 0 - end + global.get $instanceof/f + drop + i32.const 0 i32.eqz i32.eqz if @@ -238,11 +206,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/F - drop - i32.const 0 - end + global.get $instanceof/F + drop + i32.const 0 i32.eqz i32.eqz if @@ -253,11 +219,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/a - drop - i32.const 0 - end + global.get $instanceof/a + drop + i32.const 0 i32.eqz i32.eqz if @@ -268,11 +232,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/b - drop - i32.const 0 - end + global.get $instanceof/b + drop + i32.const 0 i32.eqz i32.eqz if @@ -283,11 +245,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/i - drop - i32.const 1 - end + global.get $instanceof/i + drop + i32.const 1 i32.eqz if i32.const 0 @@ -297,11 +257,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/I - drop - i32.const 0 - end + global.get $instanceof/I + drop + i32.const 0 i32.eqz i32.eqz if @@ -312,11 +270,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/f - drop - i32.const 0 - end + global.get $instanceof/f + drop + i32.const 0 i32.eqz i32.eqz if @@ -327,11 +283,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/F - drop - i32.const 0 - end + global.get $instanceof/F + drop + i32.const 0 i32.eqz i32.eqz if @@ -342,11 +296,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/a - drop - i32.const 0 - end + global.get $instanceof/a + drop + i32.const 0 i32.eqz i32.eqz if @@ -357,11 +309,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/b - drop - i32.const 0 - end + global.get $instanceof/b + drop + i32.const 0 i32.eqz i32.eqz if @@ -372,11 +322,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/i - drop - i32.const 0 - end + global.get $instanceof/i + drop + i32.const 0 i32.eqz i32.eqz if @@ -387,11 +335,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/I - drop - i32.const 1 - end + global.get $instanceof/I + drop + i32.const 1 i32.eqz if i32.const 0 @@ -401,11 +347,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/f - drop - i32.const 0 - end + global.get $instanceof/f + drop + i32.const 0 i32.eqz i32.eqz if @@ -416,11 +360,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/F - drop - i32.const 0 - end + global.get $instanceof/F + drop + i32.const 0 i32.eqz i32.eqz if @@ -431,11 +373,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/a - drop - i32.const 0 - end + global.get $instanceof/a + drop + i32.const 0 i32.eqz i32.eqz if @@ -446,11 +386,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/b - drop - i32.const 0 - end + global.get $instanceof/b + drop + i32.const 0 i32.eqz i32.eqz if @@ -461,11 +399,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/i - drop - i32.const 0 - end + global.get $instanceof/i + drop + i32.const 0 i32.eqz i32.eqz if @@ -476,11 +412,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/I - drop - i32.const 0 - end + global.get $instanceof/I + drop + i32.const 0 i32.eqz i32.eqz if @@ -491,11 +425,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/f - drop - i32.const 1 - end + global.get $instanceof/f + drop + i32.const 1 i32.eqz if i32.const 0 @@ -505,11 +437,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/F - drop - i32.const 0 - end + global.get $instanceof/F + drop + i32.const 0 i32.eqz i32.eqz if @@ -520,11 +450,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/a - drop - i32.const 0 - end + global.get $instanceof/a + drop + i32.const 0 i32.eqz i32.eqz if @@ -535,11 +463,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/b - drop - i32.const 0 - end + global.get $instanceof/b + drop + i32.const 0 i32.eqz i32.eqz if @@ -550,11 +476,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/i - drop - i32.const 0 - end + global.get $instanceof/i + drop + i32.const 0 i32.eqz i32.eqz if @@ -565,11 +489,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/I - drop - i32.const 0 - end + global.get $instanceof/I + drop + i32.const 0 i32.eqz i32.eqz if @@ -580,11 +502,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/f - drop - i32.const 0 - end + global.get $instanceof/f + drop + i32.const 0 i32.eqz i32.eqz if @@ -595,11 +515,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/F - drop - i32.const 1 - end + global.get $instanceof/F + drop + i32.const 1 i32.eqz if i32.const 0 @@ -669,11 +587,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/an - drop - i32.const 1 - end + global.get $instanceof/an + drop + i32.const 1 i32.eqz if i32.const 0 @@ -683,21 +599,19 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 1 - local.tee $0 - global.get $instanceof/an - local.tee $1 - i32.ne - if - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__release - end + i32.const 1 + local.tee $0 + global.get $instanceof/an + local.tee $1 + i32.ne + if local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__release end + local.get $0 global.set $instanceof/an global.get $instanceof/an i32.const 0 @@ -711,11 +625,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $instanceof/an - drop - i32.const 1 - end + global.get $instanceof/an + drop + i32.const 1 i32.eqz if i32.const 0 diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.untouched.wat index e4115bc6..91f581db 100644 --- a/tests/compiler/logical.untouched.wat +++ b/tests/compiler/logical.untouched.wat @@ -25,8 +25,6 @@ f64.ne if (result i32) unreachable - f64.const 0 - unreachable else i32.const 0 end @@ -45,8 +43,6 @@ i32.const 1 else unreachable - f64.const 0 - unreachable end drop i32.const 1 @@ -75,8 +71,6 @@ i32.const 1 else unreachable - f64.const 0 - unreachable end drop i32.const 1 diff --git a/tests/compiler/loop-flow.json b/tests/compiler/loop-flow.json new file mode 100644 index 00000000..b1da366f --- /dev/null +++ b/tests/compiler/loop-flow.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--runtime none" + ] +} \ No newline at end of file diff --git a/tests/compiler/loop-flow.optimized.wat b/tests/compiler/loop-flow.optimized.wat new file mode 100644 index 00000000..c553dfa2 --- /dev/null +++ b/tests/compiler/loop-flow.optimized.wat @@ -0,0 +1,165 @@ +(module + (type $FUNCSIG$i (func (result i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$v (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 8) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s") + (data (i32.const 48) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00r\00m") + (export "memory" (memory $0)) + (export "whileReturn" (func $loop-flow/whileReturn)) + (export "whileThrow" (func $loop-flow/whileThrow)) + (export "whileContinue" (func $loop-flow/whileContinue)) + (export "whileAny" (func $loop-flow/whileAny)) + (export "forReturn" (func $loop-flow/whileReturn)) + (export "forThrow" (func $loop-flow/forThrow)) + (export "forContinue" (func $loop-flow/whileContinue)) + (export "forAny" (func $loop-flow/forAny)) + (export "doReturn" (func $loop-flow/whileReturn)) + (export "doThrow" (func $loop-flow/doThrow)) + (export "doAny" (func $loop-flow/doAny)) + (start $start) + (func $loop-flow/whileReturn (; 1 ;) (type $FUNCSIG$i) (result i32) + i32.const 1 + ) + (func $loop-flow/whileAny (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + loop $continue|0 (result i32) + local.get $0 + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 2 + i32.ne + br_if $continue|0 + i32.const 64 + i32.const 24 + i32.const 24 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + end + ) + (func $loop-flow/forAny (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + loop $loop|0 (result i32) + local.get $0 + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 2 + i32.eq + if + i32.const 64 + i32.const 24 + i32.const 54 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + br $loop|0 + end + end + ) + (func $loop-flow/doAny (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + loop $continue|0 (result i32) + local.get $0 + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 2 + i32.ne + br_if $continue|0 + i32.const 64 + i32.const 24 + i32.const 78 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + end + ) + (func $start:loop-flow (; 5 ;) (type $FUNCSIG$v) + i32.const 1 + call $loop-flow/whileAny + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 29 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $loop-flow/forAny + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 59 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $loop-flow/doAny + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 24 + i32.const 83 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + ) + (func $loop-flow/whileThrow (; 6 ;) (type $FUNCSIG$i) (result i32) + i32.const 64 + i32.const 24 + i32.const 11 + i32.const 4 + call $~lib/builtins/abort + unreachable + ) + (func $loop-flow/whileContinue (; 7 ;) (type $FUNCSIG$i) (result i32) + loop $continue|0 + br $continue|0 + end + unreachable + ) + (func $loop-flow/forThrow (; 8 ;) (type $FUNCSIG$i) (result i32) + i32.const 64 + i32.const 24 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + ) + (func $loop-flow/doThrow (; 9 ;) (type $FUNCSIG$i) (result i32) + i32.const 64 + i32.const 24 + i32.const 71 + i32.const 4 + call $~lib/builtins/abort + unreachable + ) + (func $start (; 10 ;) (type $FUNCSIG$v) + call $start:loop-flow + ) + (func $null (; 11 ;) (type $FUNCSIG$v) + nop + ) +) diff --git a/tests/compiler/loop-flow.ts b/tests/compiler/loop-flow.ts new file mode 100644 index 00000000..08319e0b --- /dev/null +++ b/tests/compiler/loop-flow.ts @@ -0,0 +1,83 @@ +export function whileReturn(): i32 { + while (true) { + return 1; + } +} + +assert(whileReturn() == 1); + +export function whileThrow(): i32 { + while (true) { + throw new Error("term"); + } +} + +export function whileContinue(): i32 { + while (true) { + continue; + } +} + +export function whileAny(a: i32): i32 { + while (true) { + if (a == 1) return 1; + else if (a == 2) throw new Error("term"); + else continue; + } +} + +assert(whileAny(1) == 1); + +export function forReturn(): i32 { + for (;;) { + return 1; + } +} + +assert(forReturn() == 1); + +export function forThrow(): i32 { + for (;;) { + throw new Error("term"); + } +} + +export function forContinue(): i32 { + for (;;) { + continue; + } +} + +export function forAny(a: i32): i32 { + for (;;) { + if (a == 1) return 1; + else if (a == 2) throw new Error("term"); + else continue; + } +} + +assert(forAny(1) == 1); + +export function doReturn(): i32 { + do { + return 1; + } while (true); +} + +assert(doReturn() == 1); + +export function doThrow(): i32 { + do { + throw new Error("term"); + } while (true); +} + +export function doAny(a: i32): i32 { + do { + if (a == 1) return 1; + else if (a == 2) throw new Error("term"); + else continue; + } while (true); +} + +assert(doAny(1) == 1); diff --git a/tests/compiler/loop-flow.untouched.wat b/tests/compiler/loop-flow.untouched.wat new file mode 100644 index 00000000..acb91642 --- /dev/null +++ b/tests/compiler/loop-flow.untouched.wat @@ -0,0 +1,242 @@ +(module + (type $FUNCSIG$i (func (result i32))) + (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) + (type $FUNCSIG$v (func)) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (memory $0 1) + (data (i32.const 8) "\18\00\00\00\01\00\00\00\01\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s\00") + (data (i32.const 48) "\08\00\00\00\01\00\00\00\01\00\00\00\08\00\00\00t\00e\00r\00m\00") + (table $0 1 funcref) + (elem (i32.const 0) $null) + (export "memory" (memory $0)) + (export "whileReturn" (func $loop-flow/whileReturn)) + (export "whileThrow" (func $loop-flow/whileThrow)) + (export "whileContinue" (func $loop-flow/whileContinue)) + (export "whileAny" (func $loop-flow/whileAny)) + (export "forReturn" (func $loop-flow/forReturn)) + (export "forThrow" (func $loop-flow/forThrow)) + (export "forContinue" (func $loop-flow/forContinue)) + (export "forAny" (func $loop-flow/forAny)) + (export "doReturn" (func $loop-flow/doReturn)) + (export "doThrow" (func $loop-flow/doThrow)) + (export "doAny" (func $loop-flow/doAny)) + (start $start) + (func $loop-flow/whileReturn (; 1 ;) (type $FUNCSIG$i) (result i32) + i32.const 1 + return + ) + (func $loop-flow/whileAny (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + loop $continue|0 + local.get $0 + i32.const 1 + i32.eq + if + i32.const 1 + return + else + local.get $0 + i32.const 2 + i32.eq + if + i32.const 64 + i32.const 24 + i32.const 24 + i32.const 21 + call $~lib/builtins/abort + unreachable + else + br $continue|0 + end + unreachable + end + unreachable + end + unreachable + ) + (func $loop-flow/forReturn (; 3 ;) (type $FUNCSIG$i) (result i32) + i32.const 1 + return + ) + (func $loop-flow/forAny (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + loop $loop|0 + block $continue|0 + local.get $0 + i32.const 1 + i32.eq + if + i32.const 1 + return + else + local.get $0 + i32.const 2 + i32.eq + if + i32.const 64 + i32.const 24 + i32.const 54 + i32.const 21 + call $~lib/builtins/abort + unreachable + else + br $continue|0 + end + unreachable + end + unreachable + end + br $loop|0 + end + unreachable + ) + (func $loop-flow/doReturn (; 5 ;) (type $FUNCSIG$i) (result i32) + i32.const 1 + return + ) + (func $loop-flow/doAny (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + loop $continue|0 + local.get $0 + i32.const 1 + i32.eq + if + i32.const 1 + return + else + local.get $0 + i32.const 2 + i32.eq + if + i32.const 64 + i32.const 24 + i32.const 78 + i32.const 21 + call $~lib/builtins/abort + unreachable + else + br $continue|0 + end + unreachable + end + unreachable + end + unreachable + ) + (func $start:loop-flow (; 7 ;) (type $FUNCSIG$v) + call $loop-flow/whileReturn + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 7 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $loop-flow/whileAny + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 29 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + call $loop-flow/forReturn + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 37 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $loop-flow/forAny + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 59 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + call $loop-flow/doReturn + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 67 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $loop-flow/doAny + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 83 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + ) + (func $loop-flow/whileThrow (; 8 ;) (type $FUNCSIG$i) (result i32) + i32.const 64 + i32.const 24 + i32.const 11 + i32.const 4 + call $~lib/builtins/abort + unreachable + ) + (func $loop-flow/whileContinue (; 9 ;) (type $FUNCSIG$i) (result i32) + loop $continue|0 + br $continue|0 + end + unreachable + ) + (func $loop-flow/forThrow (; 10 ;) (type $FUNCSIG$i) (result i32) + i32.const 64 + i32.const 24 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + ) + (func $loop-flow/forContinue (; 11 ;) (type $FUNCSIG$i) (result i32) + loop $loop|0 + br $loop|0 + end + unreachable + ) + (func $loop-flow/doThrow (; 12 ;) (type $FUNCSIG$i) (result i32) + i32.const 64 + i32.const 24 + i32.const 71 + i32.const 4 + call $~lib/builtins/abort + unreachable + ) + (func $start (; 13 ;) (type $FUNCSIG$v) + call $start:loop-flow + ) + (func $null (; 14 ;) (type $FUNCSIG$v) + ) +) diff --git a/tests/compiler/mandelbrot.optimized.wat b/tests/compiler/mandelbrot.optimized.wat index d7074dd0..db88a948 100644 --- a/tests/compiler/mandelbrot.optimized.wat +++ b/tests/compiler/mandelbrot.optimized.wat @@ -430,7 +430,7 @@ f64.convert_i32_u f64.min local.set $14 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $7 local.get $1 @@ -450,43 +450,43 @@ i32.const 0 local.set $6 loop $continue|1 - local.get $4 - local.get $4 - f64.mul - local.tee $15 - local.get $5 - local.get $5 - f64.mul - local.tee $8 - f64.add - f64.const 4 - f64.le - if - block $break|1 - f64.const 2 - local.get $4 - f64.mul - local.get $5 - f64.mul - local.get $10 - f64.add - local.set $5 - local.get $15 - local.get $8 - f64.sub - local.get $11 - f64.add - local.set $4 - local.get $6 - local.get $3 - i32.ge_u - br_if $break|1 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $continue|1 - end + block $break|1 + local.get $4 + local.get $4 + f64.mul + local.tee $15 + local.get $5 + local.get $5 + f64.mul + local.tee $8 + f64.add + f64.const 4 + f64.le + i32.eqz + br_if $break|1 + f64.const 2 + local.get $4 + f64.mul + local.get $5 + f64.mul + local.get $10 + f64.add + local.set $5 + local.get $15 + local.get $8 + f64.sub + local.get $11 + f64.add + local.set $4 + local.get $6 + local.get $3 + i32.ge_u + br_if $break|1 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $continue|1 end end loop $continue|2 @@ -504,7 +504,6 @@ f64.sub local.get $11 f64.add - local.set $8 f64.const 2 local.get $4 f64.mul @@ -513,7 +512,6 @@ local.get $10 f64.add local.set $5 - local.get $8 local.set $4 local.get $6 i32.const 1 @@ -567,7 +565,7 @@ i32.const 1 i32.add local.set $7 - br $repeat|0 + br $loop|0 end end ) diff --git a/tests/compiler/mandelbrot.untouched.wat b/tests/compiler/mandelbrot.untouched.wat index 0b686f89..2f198a59 100644 --- a/tests/compiler/mandelbrot.untouched.wat +++ b/tests/compiler/mandelbrot.untouched.wat @@ -549,7 +549,7 @@ block $break|0 i32.const 0 local.set $12 - loop $repeat|0 + loop $loop|0 local.get $12 local.get $1 i32.lt_u @@ -581,34 +581,35 @@ f64.add f64.const 4 f64.le + i32.eqz + br_if $break|1 + f64.const 2 + local.get $14 + f64.mul + local.get $15 + f64.mul + local.get $7 + f64.add + local.set $15 + local.get $16 + local.get $17 + f64.sub + local.get $13 + f64.add + local.set $14 + local.get $18 + local.get $3 + i32.ge_u if - f64.const 2 - local.get $14 - f64.mul - local.get $15 - f64.mul - local.get $7 - f64.add - local.set $15 - local.get $16 - local.get $17 - f64.sub - local.get $13 - f64.add - local.set $14 - local.get $18 - local.get $3 - i32.ge_u - if - br $break|1 - end - local.get $18 - i32.const 1 - i32.add - local.set $18 - br $continue|1 + br $break|1 end + local.get $18 + i32.const 1 + i32.add + local.set $18 + br $continue|1 end + unreachable end block $break|2 loop $continue|2 @@ -616,34 +617,35 @@ f64.convert_i32_u local.get $11 f64.lt - if - local.get $14 - local.get $14 - f64.mul - local.get $15 - local.get $15 - f64.mul - f64.sub - local.get $13 - f64.add - local.set $19 - f64.const 2 - local.get $14 - f64.mul - local.get $15 - f64.mul - local.get $7 - f64.add - local.set $15 - local.get $19 - local.set $14 - local.get $18 - i32.const 1 - i32.add - local.set $18 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $14 + local.get $14 + f64.mul + local.get $15 + local.get $15 + f64.mul + f64.sub + local.get $13 + f64.add + local.set $19 + f64.const 2 + local.get $14 + f64.mul + local.get $15 + f64.mul + local.get $7 + f64.add + local.set $15 + local.get $19 + local.set $14 + local.get $18 + i32.const 1 + i32.add + local.set $18 + br $continue|2 end + unreachable end global.get $../../examples/mandelbrot/assembly/index/NUM_COLORS i32.const 1 @@ -671,26 +673,24 @@ i32.const 1 i32.sub f64.convert_i32_s - block $../../examples/mandelbrot/assembly/index/clamp|inlined.0 (result f64) - local.get $18 - i32.const 1 - i32.add - f64.convert_i32_u - local.get $21 - f64.sub - local.get $10 - f64.mul - local.set $24 - f64.const 0 - local.set $23 - f64.const 1 - local.set $22 - local.get $24 - local.get $23 - f64.max - local.get $22 - f64.min - end + local.get $18 + i32.const 1 + i32.add + f64.convert_i32_u + local.get $21 + f64.sub + local.get $10 + f64.mul + local.set $24 + f64.const 0 + local.set $23 + f64.const 1 + local.set $22 + local.get $24 + local.get $23 + f64.max + local.get $22 + f64.min f64.mul i32.trunc_f64_u local.set $20 @@ -706,8 +706,7 @@ i32.const 1 i32.add local.set $12 - br $repeat|0 - unreachable + br $loop|0 end unreachable end diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat index e6b913ca..80e86c86 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -53,7 +53,8 @@ loop $continue|1 local.get $2 i32.const 16 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -235,7 +236,8 @@ loop $continue|3 local.get $2 i32.const 17 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -344,7 +346,8 @@ loop $continue|4 local.get $2 i32.const 18 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -445,7 +448,8 @@ loop $continue|5 local.get $2 i32.const 19 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 diff --git a/tests/compiler/memcpy.untouched.wat b/tests/compiler/memcpy.untouched.wat index 8c39b266..a46300d3 100644 --- a/tests/compiler/memcpy.untouched.wat +++ b/tests/compiler/memcpy.untouched.wat @@ -29,32 +29,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 4 @@ -67,50 +64,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -175,22 +173,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 end @@ -226,58 +220,46 @@ local.get $1 i32.load local.set $4 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 local.get $2 @@ -289,152 +271,24 @@ local.get $2 i32.const 17 i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $5 - local.get $0 - local.get $4 - i32.const 24 - i32.shr_u - local.get $5 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 4 - i32.add - local.get $5 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $5 - local.get $0 - i32.const 8 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $5 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 12 - i32.add - local.get $5 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - end - local.get $1 - i32.load - local.set $4 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if + i32.eqz + br_if $break|3 local.get $1 - i32.const 2 + i32.const 1 i32.add i32.load local.set $5 local.get $0 local.get $4 - i32.const 16 + i32.const 24 i32.shr_u local.get $5 - i32.const 16 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 6 + i32.const 5 i32.add i32.load local.set $4 @@ -442,15 +296,15 @@ i32.const 4 i32.add local.get $5 - i32.const 16 + i32.const 24 i32.shr_u local.get $4 - i32.const 16 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 10 + i32.const 9 i32.add i32.load local.set $5 @@ -458,15 +312,15 @@ i32.const 8 i32.add local.get $4 - i32.const 16 + i32.const 24 i32.shr_u local.get $5 - i32.const 16 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 14 + i32.const 13 i32.add i32.load local.set $4 @@ -474,10 +328,10 @@ i32.const 12 i32.add local.get $5 - i32.const 16 + i32.const 24 i32.shr_u local.get $4 - i32.const 16 + i32.const 8 i32.shl i32.or i32.store @@ -493,59 +347,70 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $continue|3 end + unreachable end + br $break|2 end - br $break|2 - end - local.get $1 - i32.load - local.set $4 - block (result i32) + local.get $1 + i32.load + local.set $4 local.get $0 local.tee $6 i32.const 1 i32.add local.set $0 local.get $6 - end - block (result i32) local.get $1 local.tee $6 i32.const 1 i32.add local.set $1 local.get $6 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 local.get $1 - i32.const 3 + i32.const 2 i32.add i32.load local.set $5 local.get $0 local.get $4 - i32.const 8 + i32.const 16 i32.shr_u local.get $5 - i32.const 24 + i32.const 16 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 6 i32.add i32.load local.set $4 @@ -553,15 +418,15 @@ i32.const 4 i32.add local.get $5 - i32.const 8 + i32.const 16 i32.shr_u local.get $4 - i32.const 24 + i32.const 16 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 10 i32.add i32.load local.set $5 @@ -569,15 +434,15 @@ i32.const 8 i32.add local.get $4 - i32.const 8 + i32.const 16 i32.shr_u local.get $5 - i32.const 24 + i32.const 16 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 14 i32.add i32.load local.set $4 @@ -585,10 +450,10 @@ i32.const 12 i32.add local.get $5 - i32.const 8 + i32.const 16 i32.shr_u local.get $4 - i32.const 24 + i32.const 16 i32.shl i32.or i32.store @@ -604,9 +469,117 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|4 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $4 + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $5 + local.get $0 + local.get $4 + i32.const 8 + i32.shr_u + local.get $5 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 4 + i32.add + local.get $5 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $5 + local.get $0 + i32.const 8 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $5 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 12 + i32.add + local.get $5 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end + unreachable end br $break|2 end @@ -615,292 +588,228 @@ i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 end @@ -908,148 +817,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 end @@ -1057,76 +934,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 end @@ -1134,40 +995,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 end @@ -1175,22 +1028,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 - end - block (result i32) - local.get $1 - local.tee $6 - i32.const 1 - i32.add - local.set $1 - local.get $6 - end + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 i32.load8_u i32.store8 end diff --git a/tests/compiler/memmove.optimized.wat b/tests/compiler/memmove.optimized.wat index 151315b5..7bb61ef4 100644 --- a/tests/compiler/memmove.optimized.wat +++ b/tests/compiler/memmove.optimized.wat @@ -39,36 +39,38 @@ i32.and if local.get $2 - i32.eqz if + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.tee $4 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.load8_u + i32.store8 + br $continue|0 + else local.get $3 return end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.tee $4 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.load8_u - i32.store8 - br $continue|0 + unreachable end end loop $continue|1 local.get $2 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -131,29 +133,31 @@ i32.and if local.get $2 - i32.eqz if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $0 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $continue|3 + else local.get $3 return end - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - local.get $0 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $continue|3 + unreachable end end loop $continue|4 local.get $2 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $2 i32.const 8 diff --git a/tests/compiler/memmove.untouched.wat b/tests/compiler/memmove.untouched.wat index 8b820dde..f7ca1cfa 100644 --- a/tests/compiler/memmove.untouched.wat +++ b/tests/compiler/memmove.untouched.wat @@ -40,95 +40,90 @@ local.get $0 i32.const 8 i32.rem_u + i32.eqz + br_if $break|0 + local.get $2 + i32.eqz if - local.get $2 - i32.eqz - if - local.get $3 - return - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block (result i32) - local.get $0 - local.tee $4 - i32.const 1 - i32.add - local.set $0 - local.get $4 - end - block (result i32) - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $4 - end - i32.load8_u - i32.store8 - br $continue|0 + local.get $3 + return end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.tee $4 + i32.const 1 + i32.add + local.set $0 + local.get $4 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $4 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $2 i32.const 8 i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i64.load + i64.store + local.get $2 + i32.const 8 + i32.sub + local.set $2 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $2 - if - block (result i32) - local.get $0 - local.tee $4 - i32.const 1 - i32.add - local.set $0 - local.get $4 - end - block (result i32) - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $4 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $0 + local.tee $4 + i32.const 1 + i32.add + local.set $0 + local.get $4 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $4 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|2 end + unreachable end else local.get $1 @@ -146,55 +141,14 @@ i32.add i32.const 8 i32.rem_u - if - local.get $2 - i32.eqz - if - local.get $3 - return - end - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $2 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $2 - i32.const 8 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.add - local.get $1 - local.get $2 - i32.add - i64.load - i64.store - br $continue|4 + local.get $3 + return end - end - end - end - block $break|5 - loop $continue|5 - local.get $2 - if local.get $0 local.get $2 i32.const 1 @@ -206,9 +160,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $2 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $2 + i32.const 8 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.add + local.get $1 + local.get $2 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $2 + i32.eqz + br_if $break|5 + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end local.get $3 diff --git a/tests/compiler/memset.optimized.wat b/tests/compiler/memset.optimized.wat index c5d4ebd3..b3c5d17a 100644 --- a/tests/compiler/memset.optimized.wat +++ b/tests/compiler/memset.optimized.wat @@ -80,7 +80,6 @@ i32.and local.tee $2 i32.sub - local.set $3 local.get $0 local.get $2 i32.add @@ -92,7 +91,6 @@ i32.mul local.tee $1 i32.store - local.get $3 i32.const -4 i32.and local.tee $2 diff --git a/tests/compiler/memset.untouched.wat b/tests/compiler/memset.untouched.wat index e9ebe3ba..f4d16e28 100644 --- a/tests/compiler/memset.untouched.wat +++ b/tests/compiler/memset.untouched.wat @@ -240,36 +240,37 @@ local.get $2 i32.const 32 i32.ge_u - if - local.get $0 - local.get $6 - i64.store - local.get $0 - i32.const 8 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 16 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 24 - i32.add - local.get $6 - i64.store - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.get $6 + i64.store + local.get $0 + i32.const 8 + i32.add + local.get $6 + i64.store + local.get $0 + i32.const 16 + i32.add + local.get $6 + i64.store + local.get $0 + i32.const 24 + i32.add + local.get $6 + i64.store + local.get $2 + i32.const 32 + i32.sub + local.set $2 + local.get $0 + i32.const 32 + i32.add + local.set $0 + br $continue|0 end + unreachable end local.get $3 ) diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index d2fb694b..35ba8c49 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -171,8 +171,12 @@ loop $continue|0 local.get $1 i32.const 10 - i32.div_u + i32.rem_u local.set $3 + local.get $1 + i32.const 10 + i32.div_u + local.set $1 local.get $2 i32.const 1 i32.sub @@ -181,14 +185,11 @@ i32.shl local.get $0 i32.add - local.get $1 - i32.const 10 - i32.rem_u + local.get $3 i32.const 48 i32.add i32.store16 - local.get $3 - local.tee $1 + local.get $1 br_if $continue|0 end ) @@ -523,79 +524,77 @@ i64.add local.tee $1 local.get $5 - i64.le_u - if - global.get $~lib/util/number/_K - local.get $4 - i32.add - global.set $~lib/util/number/_K - local.get $4 - i32.const 2 - i32.shl - local.get $12 - i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl - local.set $3 - local.get $2 + i64.gt_u + br_if $continue|0 + global.get $~lib/util/number/_K + local.get $4 + i32.add + global.set $~lib/util/number/_K + local.get $4 + i32.const 2 + i32.shl + local.get $12 + i32.add + i64.load32_u + local.get $10 + i64.extend_i32_s + i64.shl + local.set $3 + local.get $2 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $0 + i32.load16_u + local.set $4 + loop $continue|2 i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $0 - i32.load16_u - local.set $4 - loop $continue|2 + local.get $9 + local.get $1 + i64.sub + local.get $1 + local.get $3 + i64.add + local.tee $8 + local.get $9 + i64.sub + i64.gt_u + local.get $8 + local.get $9 + i64.lt_u + select + i32.const 0 + local.get $5 + local.get $1 + i64.sub + local.get $3 + i64.ge_u + i32.const 0 + local.get $1 + local.get $9 + i64.lt_u + select + select + if + local.get $4 i32.const 1 - local.get $9 - local.get $1 - i64.sub + i32.sub + local.set $4 local.get $1 local.get $3 i64.add - local.tee $8 - local.get $9 - i64.sub - i64.gt_u - local.get $8 - local.get $9 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $3 - i64.ge_u - i32.const 0 - local.get $1 - local.get $9 - i64.lt_u - select - select - if - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $1 - local.get $3 - i64.add - local.set $1 - br $continue|2 - end + local.set $1 + br $continue|2 end - local.get $0 - local.get $4 - i32.store16 - local.get $2 - return end - br $continue|0 + local.get $0 + local.get $4 + i32.store16 + local.get $2 + return end end loop $continue|3 @@ -773,7 +772,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -855,7 +855,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 @@ -923,7 +924,7 @@ i32.const 0 end if (result i32) - loop $repeat|0 + loop $loop|0 block $break|0 local.get $1 local.get $3 @@ -940,7 +941,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -1012,7 +1013,7 @@ i32.store i32.const 2 local.set $2 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $2 local.get $3 @@ -1029,7 +1030,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|1 + br $loop|1 end end local.get $1 @@ -1047,23 +1048,21 @@ i32.const 4 i32.add local.tee $0 - block (result i32) - local.get $3 - i32.const 1 - i32.sub - local.tee $2 + local.get $3 + i32.const 1 + i32.sub + local.tee $2 + i32.const 0 + i32.lt_s + local.tee $1 + if i32.const 0 - i32.lt_s - local.tee $1 - if - i32.const 0 - local.get $2 - i32.sub - local.set $2 - end local.get $2 + i32.sub + local.set $2 end local.get $2 + local.get $2 call $~lib/util/number/decimalCount32 i32.const 1 i32.add @@ -1105,23 +1104,21 @@ i32.const 4 i32.add local.tee $2 - block (result i32) - local.get $3 - i32.const 1 - i32.sub - local.tee $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $3 + if i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end local.get $0 + i32.sub + local.set $0 end local.get $0 + local.get $0 call $~lib/util/number/decimalCount32 i32.const 1 i32.add diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 329dd674..5668a545 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -99,7 +99,6 @@ return end unreachable - unreachable else local.get $0 i32.const 10000000 @@ -129,10 +128,8 @@ return end unreachable - unreachable end unreachable - unreachable ) (func $~lib/rt/stub/__alloc (; 3 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -242,57 +239,58 @@ local.get $1 i32.const 10000 i32.ge_u - if - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - local.get $3 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $1 + i32.const 10000 + i32.div_u + local.set $4 + local.get $1 + i32.const 10000 + i32.rem_u + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $7 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $8 + local.get $3 + local.get $7 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $9 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $9 + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 end + unreachable end local.get $1 i32.const 100 @@ -403,18 +401,16 @@ i32.const 1 call $~lib/rt/stub/__alloc local.set $3 - block $~lib/util/number/utoa32_core|inlined.0 - local.get $3 - local.set $6 - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end + local.get $3 + local.set $6 + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut local.get $1 if local.get $3 @@ -491,22 +487,23 @@ else i32.const 0 end - if - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $continue|0 end + unreachable end local.get $5 local.set $8 @@ -682,498 +679,444 @@ local.get $14 i32.const 0 i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $14 - local.set $18 - local.get $18 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $18 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $18 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $18 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $18 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $18 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $18 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $18 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $18 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $18 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - block - local.get $12 - i32.const 1000000000 - i32.div_u - local.set $17 - local.get $12 - i32.const 1000000000 - i32.rem_u - local.set $12 - br $break|1 - unreachable - end - unreachable + i32.eqz + br_if $break|0 + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $14 + local.set $18 + local.get $18 + i32.const 10 + i32.eq + br_if $case0|1 + local.get $18 + i32.const 9 + i32.eq + br_if $case1|1 + local.get $18 + i32.const 8 + i32.eq + br_if $case2|1 + local.get $18 + i32.const 7 + i32.eq + br_if $case3|1 + local.get $18 + i32.const 6 + i32.eq + br_if $case4|1 + local.get $18 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $18 + i32.const 4 + i32.eq + br_if $case6|1 + local.get $18 + i32.const 3 + i32.eq + br_if $case7|1 + local.get $18 + i32.const 2 + i32.eq + br_if $case8|1 + local.get $18 + i32.const 1 + i32.eq + br_if $case9|1 + br $case10|1 end - block - local.get $12 - i32.const 100000000 - i32.div_u - local.set $17 - local.get $12 - i32.const 100000000 - i32.rem_u - local.set $12 - br $break|1 - unreachable - end - unreachable - end - block local.get $12 - i32.const 10000000 + i32.const 1000000000 i32.div_u local.set $17 local.get $12 - i32.const 10000000 + i32.const 1000000000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 1000000 + i32.const 100000000 i32.div_u local.set $17 local.get $12 - i32.const 1000000 + i32.const 100000000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 100000 + i32.const 10000000 i32.div_u local.set $17 local.get $12 - i32.const 100000 + i32.const 10000000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 10000 + i32.const 1000000 i32.div_u local.set $17 local.get $12 - i32.const 10000 + i32.const 1000000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 1000 + i32.const 100000 i32.div_u local.set $17 local.get $12 - i32.const 1000 + i32.const 100000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 100 + i32.const 10000 i32.div_u local.set $17 local.get $12 - i32.const 100 + i32.const 10000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 10 + i32.const 1000 i32.div_u local.set $17 local.get $12 - i32.const 10 + i32.const 1000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 + i32.const 100 + i32.div_u local.set $17 - i32.const 0 + local.get $12 + i32.const 100 + i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block - i32.const 0 + local.get $12 + i32.const 10 + i32.div_u local.set $17 + local.get $12 + i32.const 10 + i32.rem_u + local.set $12 br $break|1 - unreachable end - unreachable + local.get $12 + local.set $17 + i32.const 0 + local.set $12 + br $break|1 end - local.get $17 + i32.const 0 + local.set $17 + br $break|1 + end + local.get $17 + local.get $15 + i32.or + if + local.get $0 local.get $15 - i32.or - if - local.get $0 - block (result i32) - local.get $15 - local.tee $18 - i32.const 1 - i32.add - local.set $15 - local.get $18 - end - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $17 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $14 + local.tee $18 i32.const 1 - i32.sub - local.set $14 - local.get $12 - i64.extend_i32_u + i32.add + local.set $15 + local.get $18 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $17 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $14 + i32.const 1 + i32.sub + local.set $14 + local.get $12 + i64.extend_i32_u + local.get $7 + i64.extend_i32_s + i64.shl + local.get $13 + i64.add + local.set $19 + local.get $19 + local.get $5 + i64.le_u + if + global.get $~lib/util/number/_K + local.get $14 + i32.add + global.set $~lib/util/number/_K + local.get $0 + local.set $24 + local.get $15 + local.set $18 + local.get $5 + local.set $23 + local.get $19 + local.set $22 + local.get $16 + local.get $14 + i32.const 2 + i32.shl + i32.add + i64.load32_u local.get $7 i64.extend_i32_s i64.shl - local.get $13 - i64.add - local.set $19 - local.get $19 - local.get $5 - i64.le_u - if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - block $~lib/util/number/grisuRound|inlined.0 - local.get $0 - local.set $24 - local.get $15 - local.set $18 - local.get $5 - local.set $23 - local.get $19 - local.set $22 - local.get $16 - local.get $14 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $7 - i64.extend_i32_s - i64.shl - local.set $21 - local.get $10 - local.set $20 - local.get $24 - local.get $18 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $25 - local.get $25 - i32.load16_u - local.set $26 - block $break|2 - loop $continue|2 - local.get $22 - local.get $20 - i64.lt_u - if (result i32) - local.get $23 - local.get $22 - i64.sub - local.get $21 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $20 - local.get $22 - i64.sub - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $22 - local.get $21 - i64.add - local.set $22 - br $continue|2 - end - end - end - local.get $25 - local.get $26 - i32.store16 - end - local.get $15 - return - end - br $continue|0 - end - end - end - block $break|3 - loop $continue|3 - i32.const 1 - if - local.get $13 - i64.const 10 - i64.mul - local.set $13 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $13 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $19 - local.get $19 - local.get $15 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - block (result i32) - local.get $15 - local.tee $17 - i32.const 1 - i32.add - local.set $15 - local.get $17 - end - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $19 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - local.get $9 - i64.and - local.set $13 - local.get $14 + local.set $21 + local.get $10 + local.set $20 + local.get $24 + local.get $18 i32.const 1 i32.sub - local.set $14 - local.get $13 - local.get $5 - i64.lt_u - if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - local.get $10 - local.get $16 - i32.const 0 - local.get $14 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $10 - block $~lib/util/number/grisuRound|inlined.1 - local.get $0 - local.set $24 - local.get $15 - local.set $18 - local.get $5 - local.set $23 - local.get $13 - local.set $22 - local.get $8 - local.set $21 - local.get $10 - local.set $20 - local.get $24 - local.get $18 + i32.const 1 + i32.shl + i32.add + local.set $25 + local.get $25 + i32.load16_u + local.set $26 + block $break|2 + loop $continue|2 + local.get $22 + local.get $20 + i64.lt_u + if (result i32) + local.get $23 + local.get $22 + i64.sub + local.get $21 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $22 + local.get $21 + i64.add + local.get $20 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $20 + local.get $22 + i64.sub + local.get $22 + local.get $21 + i64.add + local.get $20 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + i32.eqz + br_if $break|2 + local.get $26 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.set $17 - local.get $17 - i32.load16_u local.set $26 - block $break|4 - loop $continue|4 - local.get $22 - local.get $20 - i64.lt_u - if (result i32) - local.get $23 - local.get $22 - i64.sub - local.get $21 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $20 - local.get $22 - i64.sub - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $22 - local.get $21 - i64.add - local.set $22 - br $continue|4 - end - end - end - local.get $17 - local.get $26 - i32.store16 + local.get $22 + local.get $21 + i64.add + local.set $22 + br $continue|2 end - local.get $15 - return + unreachable end - br $continue|3 + local.get $25 + local.get $26 + i32.store16 + local.get $15 + return end + br $continue|0 end + unreachable end - local.get $15 + loop $continue|3 + local.get $13 + i64.const 10 + i64.mul + local.set $13 + local.get $5 + i64.const 10 + i64.mul + local.set $5 + local.get $13 + local.get $7 + i64.extend_i32_s + i64.shr_u + local.set $19 + local.get $19 + local.get $15 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $15 + local.tee $17 + i32.const 1 + i32.add + local.set $15 + local.get $17 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $19 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $13 + local.get $9 + i64.and + local.set $13 + local.get $14 + i32.const 1 + i32.sub + local.set $14 + local.get $13 + local.get $5 + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $14 + i32.add + global.set $~lib/util/number/_K + local.get $10 + local.get $16 + i32.const 0 + local.get $14 + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $10 + local.get $0 + local.set $24 + local.get $15 + local.set $18 + local.get $5 + local.set $23 + local.get $13 + local.set $22 + local.get $8 + local.set $21 + local.get $10 + local.set $20 + local.get $24 + local.get $18 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $17 + local.get $17 + i32.load16_u + local.set $26 + block $break|4 + loop $continue|4 + local.get $22 + local.get $20 + i64.lt_u + if (result i32) + local.get $23 + local.get $22 + i64.sub + local.get $21 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $22 + local.get $21 + i64.add + local.get $20 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $20 + local.get $22 + i64.sub + local.get $22 + local.get $21 + i64.add + local.get $20 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + i32.eqz + br_if $break|4 + local.get $26 + i32.const 1 + i32.sub + local.set $26 + local.get $22 + local.get $21 + i64.add + local.set $22 + br $continue|4 + end + unreachable + end + local.get $17 + local.get $26 + i32.store16 + local.get $15 + return + end + br $continue|3 + end + unreachable ) (func $~lib/util/memory/memcpy (; 17 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1189,32 +1132,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1227,50 +1167,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1335,22 +1276,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1382,338 +1319,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -1721,15 +1398,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -1737,15 +1414,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -1753,10 +1430,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -1772,306 +1449,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2079,148 +1919,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2228,76 +2036,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2305,40 +2097,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2346,22 +2130,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2422,94 +2202,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -2527,54 +2302,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -2586,9 +2320,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -2640,7 +2418,7 @@ block $break|0 local.get $1 local.set $4 - loop $repeat|0 + loop $loop|0 local.get $4 local.get $3 i32.lt_s @@ -2657,8 +2435,7 @@ i32.const 1 i32.add local.set $4 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -2752,7 +2529,7 @@ block $break|1 i32.const 2 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 local.get $4 i32.lt_s @@ -2769,8 +2546,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -2786,51 +2562,47 @@ local.get $0 i32.const 101 i32.store16 offset=2 - block $~lib/util/number/genExponent|inlined.0 (result i32) - local.get $0 - i32.const 4 - i32.add - local.set $4 - local.get $3 - i32.const 1 + local.get $0 + i32.const 4 + i32.add + local.set $4 + local.get $3 + i32.const 1 + i32.sub + local.set $5 + local.get $5 + i32.const 0 + i32.lt_s + local.set $6 + local.get $6 + if + i32.const 0 + local.get $5 i32.sub local.set $5 - local.get $5 - i32.const 0 - i32.lt_s - local.set $6 - local.get $6 - if - i32.const 0 - local.get $5 - i32.sub - local.set $5 - end - local.get $5 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $7 - block $~lib/util/number/utoa32_core|inlined.1 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/number/utoa32_lut - end - local.get $4 - i32.const 45 - i32.const 43 - local.get $6 - select - i32.store16 - local.get $7 end + local.get $5 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $7 + local.get $4 + local.set $10 + local.get $5 + local.set $9 + local.get $7 + local.set $8 + local.get $10 + local.get $9 + local.get $8 + call $~lib/util/number/utoa32_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $6 + select + i32.store16 + local.get $7 local.set $1 local.get $1 i32.const 2 @@ -2860,53 +2632,49 @@ i32.const 101 i32.store16 offset=2 local.get $1 - block $~lib/util/number/genExponent|inlined.1 (result i32) - local.get $0 - local.get $7 - i32.add - i32.const 4 - i32.add - local.set $9 - local.get $3 - i32.const 1 + local.get $0 + local.get $7 + i32.add + i32.const 4 + i32.add + local.set $9 + local.get $3 + i32.const 1 + i32.sub + local.set $8 + local.get $8 + i32.const 0 + i32.lt_s + local.set $6 + local.get $6 + if + i32.const 0 + local.get $8 i32.sub local.set $8 - local.get $8 - i32.const 0 - i32.lt_s - local.set $6 - local.get $6 - if - i32.const 0 - local.get $8 - i32.sub - local.set $8 - end - local.get $8 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $4 - block $~lib/util/number/utoa32_core|inlined.2 - local.get $9 - local.set $11 - local.get $8 - local.set $5 - local.get $4 - local.set $10 - local.get $11 - local.get $5 - local.get $10 - call $~lib/util/number/utoa32_lut - end - local.get $9 - i32.const 45 - i32.const 43 - local.get $6 - select - i32.store16 - local.get $4 end + local.get $8 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $4 + local.get $9 + local.set $11 + local.get $8 + local.set $5 + local.get $4 + local.set $10 + local.get $11 + local.get $5 + local.get $10 + call $~lib/util/number/utoa32_lut + local.get $9 + i32.const 45 + i32.const 43 + local.get $6 + select + i32.store16 + local.get $4 i32.add local.set $1 local.get $1 @@ -2921,7 +2689,6 @@ unreachable end unreachable - unreachable ) (func $~lib/util/number/dtoa_core (; 20 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) @@ -2964,387 +2731,371 @@ i32.const 45 i32.store16 end - block $~lib/util/number/grisu2|inlined.0 (result i32) - local.get $1 - local.set $5 - local.get $0 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i64.reinterpret_f64 - local.set $6 - local.get $6 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $7 - local.get $6 - i64.const 4503599627370495 - i64.and - local.set $8 - local.get $7 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $8 - i64.add - local.set $9 - local.get $7 - i32.const 1 - local.get $7 - i32.const 0 - i32.ne - select - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $7 - block $~lib/util/number/normalizedBoundaries|inlined.0 - local.get $9 - local.set $11 - local.get $7 - local.set $10 - local.get $11 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $12 - local.get $10 - i32.const 1 - i32.sub - local.set $13 - local.get $12 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $12 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $12 - local.get $13 - local.get $14 - i32.sub - local.set $13 - i32.const 1 - local.get $11 - i64.const 4503599627370496 - i64.eq - i32.add - local.set $15 - local.get $12 - global.set $~lib/util/number/_frc_plus - local.get $11 - local.get $15 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $10 - local.get $15 - i32.sub - local.get $13 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $13 - global.set $~lib/util/number/_exp - end - block $~lib/util/number/getCachedPower|inlined.0 - global.get $~lib/util/number/_exp - local.set $10 - i32.const -61 - local.get $10 - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $16 - local.get $16 - i32.trunc_f64_s - local.set $15 - local.get $15 - local.get $15 - f64.convert_i32_s - local.get $16 - f64.ne - i32.add - local.set $15 - local.get $15 - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $14 - i32.const 348 - local.get $14 - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 1392 - local.get $14 - call $~lib/array/Array#__unchecked_get - global.set $~lib/util/number/_frc_pow - i32.const 1616 - local.get $14 - call $~lib/array/Array#__unchecked_get - global.set $~lib/util/number/_exp_pow - end - local.get $9 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $9 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $9 - local.get $7 - local.get $14 - i32.sub - local.set $7 - global.get $~lib/util/number/_frc_pow - local.set $12 - global.get $~lib/util/number/_exp_pow - local.set $15 - block $~lib/util/number/umul64f|inlined.0 (result i64) - local.get $9 - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $11 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $11 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $24 - local.get $24 - i64.const 2147483647 - i64.add - local.set $24 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $24 - i64.const 32 - i64.shr_u - local.set $24 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $24 - i64.add - end - local.set $24 - block $~lib/util/number/umul64e|inlined.0 (result i32) - local.get $7 - local.set $10 - local.get $15 - local.set $13 - local.get $10 - local.get $13 - i32.add - i32.const 64 - i32.add - end - local.set $10 - block $~lib/util/number/umul64f|inlined.1 (result i64) - global.get $~lib/util/number/_frc_plus - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $23 - local.get $11 - i64.const 4294967295 - i64.and - local.set $22 - local.get $17 - i64.const 32 - i64.shr_u - local.set $21 - local.get $11 - i64.const 32 - i64.shr_u - local.set $20 - local.get $23 - local.get $22 - i64.mul - local.set $19 - local.get $21 - local.get $22 - i64.mul - local.get $19 - i64.const 32 - i64.shr_u - i64.add - local.set $18 - local.get $23 - local.get $20 - i64.mul - local.get $18 - i64.const 4294967295 - i64.and - i64.add - local.set $25 - local.get $25 - i64.const 2147483647 - i64.add - local.set $25 - local.get $18 - i64.const 32 - i64.shr_u - local.set $18 - local.get $25 - i64.const 32 - i64.shr_u - local.set $25 - local.get $21 - local.get $20 - i64.mul - local.get $18 - i64.add - local.get $25 - i64.add - end - i64.const 1 - i64.sub - local.set $25 - block $~lib/util/number/umul64e|inlined.1 (result i32) - global.get $~lib/util/number/_exp - local.set $26 - local.get $15 - local.set $13 - local.get $26 - local.get $13 - i32.add - i32.const 64 - i32.add - end - local.set $26 - block $~lib/util/number/umul64f|inlined.2 (result i64) - global.get $~lib/util/number/_frc_minus - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $11 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $11 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $27 - local.get $27 - i64.const 2147483647 - i64.add - local.set $27 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $27 - i64.const 32 - i64.shr_u - local.set $27 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $27 - i64.add - end - i64.const 1 - i64.add - local.set $27 - local.get $25 - local.get $27 - i64.sub - local.set $23 - local.get $4 - local.get $24 - local.get $10 - local.get $25 - local.get $26 - local.get $23 - local.get $3 - call $~lib/util/number/genDigits - end + local.get $1 + local.set $5 + local.get $0 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + i64.reinterpret_f64 + local.set $6 + local.get $6 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $7 + local.get $6 + i64.const 4503599627370495 + i64.and + local.set $8 + local.get $7 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $8 + i64.add + local.set $9 + local.get $7 + i32.const 1 + local.get $7 + i32.const 0 + i32.ne + select + i32.const 1023 + i32.const 52 + i32.add + i32.sub + local.set $7 + local.get $9 + local.set $11 + local.get $7 + local.set $10 + local.get $11 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.set $12 + local.get $10 + i32.const 1 + i32.sub + local.set $13 + local.get $12 + i64.clz + i32.wrap_i64 + local.set $14 + local.get $12 + local.get $14 + i64.extend_i32_s + i64.shl + local.set $12 + local.get $13 + local.get $14 + i32.sub + local.set $13 + i32.const 1 + local.get $11 + i64.const 4503599627370496 + i64.eq + i32.add + local.set $15 + local.get $12 + global.set $~lib/util/number/_frc_plus + local.get $11 + local.get $15 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $10 + local.get $15 + i32.sub + local.get $13 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $13 + global.set $~lib/util/number/_exp + global.get $~lib/util/number/_exp + local.set $10 + i32.const -61 + local.get $10 + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.set $16 + local.get $16 + i32.trunc_f64_s + local.set $15 + local.get $15 + local.get $15 + f64.convert_i32_s + local.get $16 + f64.ne + i32.add + local.set $15 + local.get $15 + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.set $14 + i32.const 348 + local.get $14 + i32.const 3 + i32.shl + i32.sub + global.set $~lib/util/number/_K + i32.const 1392 + local.get $14 + call $~lib/array/Array#__unchecked_get + global.set $~lib/util/number/_frc_pow + i32.const 1616 + local.get $14 + call $~lib/array/Array#__unchecked_get + global.set $~lib/util/number/_exp_pow + local.get $9 + i64.clz + i32.wrap_i64 + local.set $14 + local.get $9 + local.get $14 + i64.extend_i32_s + i64.shl + local.set $9 + local.get $7 + local.get $14 + i32.sub + local.set $7 + global.get $~lib/util/number/_frc_pow + local.set $12 + global.get $~lib/util/number/_exp_pow + local.set $15 + local.get $9 + local.set $17 + local.get $12 + local.set $11 + local.get $17 + i64.const 4294967295 + i64.and + local.set $18 + local.get $11 + i64.const 4294967295 + i64.and + local.set $19 + local.get $17 + i64.const 32 + i64.shr_u + local.set $20 + local.get $11 + i64.const 32 + i64.shr_u + local.set $21 + local.get $18 + local.get $19 + i64.mul + local.set $22 + local.get $20 + local.get $19 + i64.mul + local.get $22 + i64.const 32 + i64.shr_u + i64.add + local.set $23 + local.get $18 + local.get $21 + i64.mul + local.get $23 + i64.const 4294967295 + i64.and + i64.add + local.set $24 + local.get $24 + i64.const 2147483647 + i64.add + local.set $24 + local.get $23 + i64.const 32 + i64.shr_u + local.set $23 + local.get $24 + i64.const 32 + i64.shr_u + local.set $24 + local.get $20 + local.get $21 + i64.mul + local.get $23 + i64.add + local.get $24 + i64.add + local.set $24 + local.get $7 + local.set $10 + local.get $15 + local.set $13 + local.get $10 + local.get $13 + i32.add + i32.const 64 + i32.add + local.set $10 + global.get $~lib/util/number/_frc_plus + local.set $17 + local.get $12 + local.set $11 + local.get $17 + i64.const 4294967295 + i64.and + local.set $23 + local.get $11 + i64.const 4294967295 + i64.and + local.set $22 + local.get $17 + i64.const 32 + i64.shr_u + local.set $21 + local.get $11 + i64.const 32 + i64.shr_u + local.set $20 + local.get $23 + local.get $22 + i64.mul + local.set $19 + local.get $21 + local.get $22 + i64.mul + local.get $19 + i64.const 32 + i64.shr_u + i64.add + local.set $18 + local.get $23 + local.get $20 + i64.mul + local.get $18 + i64.const 4294967295 + i64.and + i64.add + local.set $25 + local.get $25 + i64.const 2147483647 + i64.add + local.set $25 + local.get $18 + i64.const 32 + i64.shr_u + local.set $18 + local.get $25 + i64.const 32 + i64.shr_u + local.set $25 + local.get $21 + local.get $20 + i64.mul + local.get $18 + i64.add + local.get $25 + i64.add + i64.const 1 + i64.sub + local.set $25 + global.get $~lib/util/number/_exp + local.set $26 + local.get $15 + local.set $13 + local.get $26 + local.get $13 + i32.add + i32.const 64 + i32.add + local.set $26 + global.get $~lib/util/number/_frc_minus + local.set $17 + local.get $12 + local.set $11 + local.get $17 + i64.const 4294967295 + i64.and + local.set $18 + local.get $11 + i64.const 4294967295 + i64.and + local.set $19 + local.get $17 + i64.const 32 + i64.shr_u + local.set $20 + local.get $11 + i64.const 32 + i64.shr_u + local.set $21 + local.get $18 + local.get $19 + i64.mul + local.set $22 + local.get $20 + local.get $19 + i64.mul + local.get $22 + i64.const 32 + i64.shr_u + i64.add + local.set $23 + local.get $18 + local.get $21 + i64.mul + local.get $23 + i64.const 4294967295 + i64.and + i64.add + local.set $27 + local.get $27 + i64.const 2147483647 + i64.add + local.set $27 + local.get $23 + i64.const 32 + i64.shr_u + local.set $23 + local.get $27 + i64.const 32 + i64.shr_u + local.set $27 + local.get $20 + local.get $21 + i64.mul + local.get $23 + i64.add + local.get $27 + i64.add + i64.const 1 + i64.add + local.set $27 + local.get $25 + local.get $27 + i64.sub + local.set $23 + local.get $4 + local.get $24 + local.get $10 + local.get $25 + local.get $26 + local.get $23 + local.get $3 + call $~lib/util/number/genDigits local.set $28 local.get $0 local.get $2 @@ -3718,13 +3469,11 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $number/a - i32.const 1 - i32.add - global.set $number/a - global.get $number/a - end + global.get $number/a + i32.const 1 + i32.add + global.set $number/a + global.get $number/a call $~lib/number/I32#toString local.tee $5 i32.const 1896 @@ -3738,13 +3487,11 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $number/a - i32.const 1 - i32.sub - global.set $number/a - global.get $number/a - end + global.get $number/a + i32.const 1 + i32.sub + global.set $number/a + global.get $number/a call $~lib/number/I32#toString local.tee $6 i32.const 496 @@ -3788,14 +3535,12 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $number/a - local.tee $9 - i32.const 1 - i32.add - global.set $number/a - local.get $9 - end + global.get $number/a + local.tee $9 + i32.const 1 + i32.add + global.set $number/a + local.get $9 call $~lib/number/I32#toString local.tee $9 i32.const 496 @@ -3809,14 +3554,12 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $number/a - local.tee $10 - i32.const 1 - i32.sub - global.set $number/a - local.get $10 - end + global.get $number/a + local.tee $10 + i32.const 1 + i32.sub + global.set $number/a + local.get $10 call $~lib/number/I32#toString local.tee $10 i32.const 1896 diff --git a/tests/compiler/overflow.untouched.wat b/tests/compiler/overflow.untouched.wat index 67e0bb93..9acda5bf 100644 --- a/tests/compiler/overflow.untouched.wat +++ b/tests/compiler/overflow.untouched.wat @@ -12,745 +12,721 @@ (local $0 i32) (local $1 i32) (local $2 i32) - block - i32.const 127 - local.set $0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $0 + i32.const 127 + local.set $0 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -128 + i32.eq + i32.eqz + if + i32.const 0 i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 10 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 127 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 13 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $2 - end - local.set $1 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 16 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - end - local.set $1 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 127 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 19 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 22 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 127 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 25 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.set $1 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 28 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - local.set $1 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 127 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 31 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -128 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 33 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + i32.const 10 + i32.const 2 + call $~lib/builtins/abort + unreachable end - block - i32.const 32767 - local.set $1 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 42 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 32767 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 45 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $2 - end - local.set $0 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 48 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $1 - local.tee $2 - i32.const 1 - i32.sub - local.set $1 - local.get $2 - end - local.set $0 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 32767 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 51 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 54 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 32767 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 57 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.tee $1 - local.set $0 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 60 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - local.set $0 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 32767 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 63 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const -32768 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 65 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 127 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 13 + i32.const 2 + call $~lib/builtins/abort + unreachable end - block + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.set $1 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -128 + i32.eq + i32.eqz + if i32.const 0 - local.set $0 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $0 - i32.const 255 - i32.and - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 74 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $0 - i32.const 255 - i32.and - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 77 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - end - local.set $1 - local.get $0 - i32.const 255 - i32.and - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 80 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $2 - end - local.set $1 - local.get $0 - i32.const 255 - i32.and - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 83 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.sub - local.set $0 - local.get $0 - i32.const 255 - i32.and - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 86 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $0 - i32.const 255 - i32.and - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 89 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - local.set $1 - local.get $0 - i32.const 255 - i32.and - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 92 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.tee $0 - local.set $1 - local.get $0 - i32.const 255 - i32.and - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 95 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.sub - i32.const 255 - i32.and - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 97 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + i32.const 24 + i32.const 16 + i32.const 2 + call $~lib/builtins/abort + unreachable end - block + local.get $0 + local.tee $2 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + local.set $1 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 127 + i32.eq + i32.eqz + if i32.const 0 - local.set $1 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $1 - i32.const 65535 - i32.and - i32.const 65535 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 106 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.and + i32.const 24 + i32.const 19 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -128 + i32.eq + i32.eqz + if i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 109 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $1 - local.tee $2 - i32.const 1 - i32.sub - local.set $1 - local.get $2 - end - local.set $0 - local.get $1 - i32.const 65535 - i32.and - i32.const 65535 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 112 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $1 - local.tee $2 - i32.const 1 - i32.add - local.set $1 - local.get $2 - end - local.set $0 - local.get $1 - i32.const 65535 - i32.and + i32.const 24 + i32.const 22 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 127 + i32.eq + i32.eqz + if i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 115 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $1 - i32.const 65535 - i32.and - i32.const 65535 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 118 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $1 - i32.const 65535 - i32.and + i32.const 24 + i32.const 25 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.set $1 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -128 + i32.eq + i32.eqz + if i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 121 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - local.set $0 - local.get $1 - i32.const 65535 - i32.and - i32.const 65535 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 124 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.tee $1 - local.set $0 - local.get $1 - i32.const 65535 - i32.and + i32.const 24 + i32.const 28 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + local.set $1 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 127 + i32.eq + i32.eqz + if i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 127 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.sub - i32.const 65535 - i32.and - i32.const 65535 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 129 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + i32.const 24 + i32.const 31 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -128 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 33 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 32767 + local.set $1 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -32768 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 42 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 32767 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 45 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.set $0 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -32768 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 48 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.tee $2 + i32.const 1 + i32.sub + local.set $1 + local.get $2 + local.set $0 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 32767 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 51 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -32768 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 54 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 32767 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 57 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.tee $1 + local.set $0 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -32768 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 60 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + local.set $0 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 32767 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 63 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const -32768 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 65 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $0 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $0 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 74 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $0 + i32.const 255 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 77 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + local.set $1 + local.get $0 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 80 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $2 + local.set $1 + local.get $0 + i32.const 255 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 83 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.sub + local.set $0 + local.get $0 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 86 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $0 + i32.const 255 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 89 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + local.set $1 + local.get $0 + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 92 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.set $1 + local.get $0 + i32.const 255 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 95 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.sub + i32.const 255 + i32.and + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 97 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + local.get $1 + i32.const 65535 + i32.and + i32.const 65535 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 106 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 109 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.tee $2 + i32.const 1 + i32.sub + local.set $1 + local.get $2 + local.set $0 + local.get $1 + i32.const 65535 + i32.and + i32.const 65535 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 112 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.tee $2 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.set $0 + local.get $1 + i32.const 65535 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 115 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.sub + local.set $1 + local.get $1 + i32.const 65535 + i32.and + i32.const 65535 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 118 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 121 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + local.set $0 + local.get $1 + i32.const 65535 + i32.and + i32.const 65535 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 124 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.tee $1 + local.set $0 + local.get $1 + i32.const 65535 + i32.and + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 127 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.sub + i32.const 65535 + i32.and + i32.const 65535 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 129 + i32.const 2 + call $~lib/builtins/abort + unreachable end ) (func $start (; 2 ;) (type $FUNCSIG$v) diff --git a/tests/compiler/possibly-null.untouched.wat b/tests/compiler/possibly-null.untouched.wat index f597c77f..531dcd76 100644 --- a/tests/compiler/possibly-null.untouched.wat +++ b/tests/compiler/possibly-null.untouched.wat @@ -174,26 +174,25 @@ block $break|0 loop $continue|0 local.get $0 + i32.eqz + br_if $break|0 + i32.const 0 + local.tee $1 + local.get $0 + local.tee $2 + i32.ne if - block (result i32) - i32.const 0 - local.tee $1 - local.get $0 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release - end - local.get $1 - end - local.set $0 - br $continue|0 + local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $2 + call $~lib/rt/stub/__release end + local.get $1 + local.set $0 + br $continue|0 end + unreachable end local.get $0 call $~lib/rt/stub/__release @@ -210,26 +209,25 @@ block $break|0 loop $continue|0 local.get $0 + i32.eqz + br_if $break|0 + local.get $1 + local.tee $2 + local.get $0 + local.tee $3 + i32.ne if - block (result i32) - local.get $1 - local.tee $2 - local.get $0 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - end - local.set $0 - br $continue|0 + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release end + local.get $2 + local.set $0 + br $continue|0 end + unreachable end local.get $0 call $~lib/rt/stub/__release @@ -248,29 +246,28 @@ block $break|0 loop $continue|0 local.get $0 + i32.eqz + br_if $break|0 + local.get $1 if local.get $1 + local.tee $2 + local.get $0 + local.tee $3 + i32.ne if - block (result i32) - local.get $1 - local.tee $2 - local.get $0 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $2 - end - local.set $0 + local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release end - br $continue|0 + local.get $2 + local.set $0 end + br $continue|0 end + unreachable end local.get $0 call $~lib/rt/stub/__release @@ -387,21 +384,19 @@ local.get $1 call $~lib/rt/stub/__retain drop - block (result i32) - local.get $1 - local.tee $2 - local.get $0 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end + local.get $1 + local.tee $2 + local.get $0 + local.tee $3 + i32.ne + if local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release end + local.get $2 local.set $0 local.get $0 call $~lib/rt/stub/__release diff --git a/tests/compiler/rc/global-init.optimized.wat b/tests/compiler/rc/global-init.optimized.wat index 35711e9a..0126db9b 100644 --- a/tests/compiler/rc/global-init.optimized.wat +++ b/tests/compiler/rc/global-init.optimized.wat @@ -719,7 +719,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -734,7 +734,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -755,14 +755,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 304 @@ -1175,7 +1175,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1257,7 +1258,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 diff --git a/tests/compiler/rc/global-init.untouched.wat b/tests/compiler/rc/global-init.untouched.wat index ee4ba17c..0fa3947e 100644 --- a/tests/compiler/rc/global-init.untouched.wat +++ b/tests/compiler/rc/global-init.untouched.wat @@ -221,85 +221,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -355,20 +347,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -406,20 +396,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -430,14 +418,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -590,24 +576,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -621,27 +605,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -650,36 +632,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/freeBlock (; 10 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) @@ -771,12 +749,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -873,15 +849,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -941,75 +915,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -1017,8 +984,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1148,18 +1114,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1192,18 +1156,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1215,29 +1177,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1255,7 +1194,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1376,34 +1334,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1514,32 +1468,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1552,50 +1503,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1660,22 +1612,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1707,338 +1655,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2046,15 +1734,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2062,15 +1750,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2078,10 +1766,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2097,306 +1785,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2404,148 +2255,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2553,76 +2372,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2630,40 +2433,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2671,22 +2466,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2747,94 +2538,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -2852,54 +2638,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -2911,9 +2656,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3155,37 +2944,33 @@ global.set $rc/global-init/a call $rc/global-init/getRef global.set $rc/global-init/b - block (result i32) - i32.const 0 - local.tee $0 - global.get $rc/global-init/a - local.tee $1 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - drop - local.get $1 - call $~lib/rt/pure/__release - end + i32.const 0 + local.tee $0 + global.get $rc/global-init/a + local.tee $1 + i32.ne + if local.get $0 - end - global.set $rc/global-init/a - block (result i32) - i32.const 0 - local.tee $1 - global.get $rc/global-init/b - local.tee $0 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $0 - call $~lib/rt/pure/__release - end + call $~lib/rt/pure/__retain + drop local.get $1 + call $~lib/rt/pure/__release end + local.get $0 + global.set $rc/global-init/a + i32.const 0 + local.tee $1 + global.get $rc/global-init/b + local.tee $0 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + drop + local.get $0 + call $~lib/rt/pure/__release + end + local.get $1 global.set $rc/global-init/b ) (func $start (; 28 ;) (type $FUNCSIG$v) @@ -3354,103 +3139,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 40 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 40 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 40 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 40 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -3466,60 +3231,28 @@ ) (func $~lib/rt/__visit_members (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable + return end - block - block - unreachable - unreachable - end - unreachable - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end - unreachable + return end + unreachable ) (func $null (; 35 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/rc/local-init.optimized.wat b/tests/compiler/rc/local-init.optimized.wat index 3d341581..26110d71 100644 --- a/tests/compiler/rc/local-init.optimized.wat +++ b/tests/compiler/rc/local-init.optimized.wat @@ -717,7 +717,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -732,7 +732,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -753,14 +753,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 320 @@ -1172,7 +1172,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1254,7 +1255,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 diff --git a/tests/compiler/rc/local-init.untouched.wat b/tests/compiler/rc/local-init.untouched.wat index 05e49cbe..9d48bb4b 100644 --- a/tests/compiler/rc/local-init.untouched.wat +++ b/tests/compiler/rc/local-init.untouched.wat @@ -215,85 +215,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -349,20 +341,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -400,20 +390,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -424,14 +412,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -584,24 +570,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -615,27 +599,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -644,36 +626,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/freeBlock (; 9 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) @@ -765,12 +743,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -867,15 +843,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -935,75 +909,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -1011,8 +978,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1142,18 +1108,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1186,18 +1150,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1209,29 +1171,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1249,7 +1188,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1370,34 +1328,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1508,32 +1462,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1546,50 +1497,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1654,22 +1606,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1701,338 +1649,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2040,15 +1728,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2056,15 +1744,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2072,10 +1760,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2091,306 +1779,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2398,148 +2249,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2547,76 +2366,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2624,40 +2427,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2665,22 +2460,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2741,94 +2532,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -2846,54 +2632,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -2905,9 +2650,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3160,26 +2949,20 @@ ) (func $start:rc/local-init (; 28 ;) (type $FUNCSIG$v) (local $0 i32) - block - i32.const 24 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - block - call $rc/local-init/getRef - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - block - i32.const 0 - call $rc/local-init/Ref#constructor - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end + i32.const 24 + call $~lib/rt/pure/__retain + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + call $rc/local-init/getRef + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + call $rc/local-init/Ref#constructor + local.set $0 + local.get $0 + call $~lib/rt/pure/__release ) (func $start (; 29 ;) (type $FUNCSIG$v) call $start:rc/local-init @@ -3347,103 +3130,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 40 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 40 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 40 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 40 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -3459,60 +3222,28 @@ ) (func $~lib/rt/__visit_members (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable + return end - block - block - unreachable - unreachable - end - unreachable - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end - unreachable + return end + unreachable ) (func $null (; 36 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/rc/logical-and-mismatch.optimized.wat b/tests/compiler/rc/logical-and-mismatch.optimized.wat index 9398dada..ae907e6b 100644 --- a/tests/compiler/rc/logical-and-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-and-mismatch.optimized.wat @@ -619,7 +619,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -634,7 +634,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -655,14 +655,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 304 @@ -1179,7 +1179,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1261,7 +1262,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 diff --git a/tests/compiler/rc/logical-and-mismatch.untouched.wat b/tests/compiler/rc/logical-and-mismatch.untouched.wat index c6114f86..aff5fca9 100644 --- a/tests/compiler/rc/logical-and-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-and-mismatch.untouched.wat @@ -154,85 +154,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -288,20 +280,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -339,20 +329,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -363,14 +351,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -523,24 +509,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -554,27 +538,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -583,36 +565,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -650,12 +628,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -752,15 +728,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -820,75 +794,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -896,8 +863,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1027,18 +993,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1071,18 +1035,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1094,29 +1056,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1134,7 +1073,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1255,34 +1213,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1524,32 +1478,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1562,50 +1513,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1670,22 +1622,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1717,338 +1665,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2056,15 +1744,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2072,15 +1760,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2088,10 +1776,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2107,306 +1795,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2414,148 +2265,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2563,76 +2382,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2640,40 +2443,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2681,22 +2476,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2757,94 +2548,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -2862,54 +2648,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -2921,9 +2666,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3163,61 +2952,53 @@ i32.const 0 call $rc/logical-and-mismatch/Ref#constructor global.set $rc/logical-and-mismatch/gloRef - block - call $rc/logical-and-mismatch/getRef - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-and-mismatch/gloRef - call $~lib/rt/pure/__retain - else - local.get $0 - end - local.set $0 + call $rc/logical-and-mismatch/getRef + local.tee $0 + if (result i32) local.get $0 call $~lib/rt/pure/__release - end - block global.get $rc/logical-and-mismatch/gloRef - local.tee $0 - if (result i32) - call $rc/logical-and-mismatch/getRef - else - local.get $0 - call $~lib/rt/pure/__retain - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - block - call $rc/logical-and-mismatch/getRef - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__release - call $rc/logical-and-mismatch/getRef - else - local.get $0 - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - block - global.get $rc/logical-and-mismatch/gloRef - local.tee $0 - if (result i32) - global.get $rc/logical-and-mismatch/gloRef - else - local.get $0 - end call $~lib/rt/pure/__retain - local.set $0 + else + local.get $0 + end + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + global.get $rc/logical-and-mismatch/gloRef + local.tee $0 + if (result i32) + call $rc/logical-and-mismatch/getRef + else + local.get $0 + call $~lib/rt/pure/__retain + end + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + call $rc/logical-and-mismatch/getRef + local.tee $0 + if (result i32) local.get $0 call $~lib/rt/pure/__release + call $rc/logical-and-mismatch/getRef + else + local.get $0 end + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + global.get $rc/logical-and-mismatch/gloRef + local.tee $0 + if (result i32) + global.get $rc/logical-and-mismatch/gloRef + else + local.get $0 + end + call $~lib/rt/pure/__retain + local.set $0 + local.get $0 + call $~lib/rt/pure/__release global.get $rc/logical-and-mismatch/gloRef call $~lib/rt/pure/__release ) @@ -3387,103 +3168,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -3499,60 +3260,28 @@ ) (func $~lib/rt/__visit_members (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable + return end - block - block - unreachable - unreachable - end - unreachable - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end - unreachable + return end + unreachable ) (func $null (; 36 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/rc/logical-or-mismatch.optimized.wat b/tests/compiler/rc/logical-or-mismatch.optimized.wat index 85512bb4..e5401942 100644 --- a/tests/compiler/rc/logical-or-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-or-mismatch.optimized.wat @@ -619,7 +619,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -634,7 +634,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -655,14 +655,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 304 @@ -1179,7 +1179,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1261,7 +1262,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 diff --git a/tests/compiler/rc/logical-or-mismatch.untouched.wat b/tests/compiler/rc/logical-or-mismatch.untouched.wat index a5069543..1960f0fb 100644 --- a/tests/compiler/rc/logical-or-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-or-mismatch.untouched.wat @@ -154,85 +154,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -288,20 +280,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -339,20 +329,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -363,14 +351,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -523,24 +509,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -554,27 +538,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -583,36 +565,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -650,12 +628,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -752,15 +728,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -820,75 +794,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -896,8 +863,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1027,18 +993,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1071,18 +1035,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1094,29 +1056,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1134,7 +1073,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1255,34 +1213,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1524,32 +1478,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1562,50 +1513,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1670,22 +1622,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1717,338 +1665,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2056,15 +1744,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2072,15 +1760,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2088,10 +1776,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2107,306 +1795,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2414,148 +2265,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2563,76 +2382,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2640,40 +2443,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2681,22 +2476,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2757,94 +2548,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -2862,54 +2648,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -2921,9 +2666,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3163,61 +2952,53 @@ i32.const 0 call $rc/logical-or-mismatch/Ref#constructor global.set $rc/logical-or-mismatch/gloRef - block - call $rc/logical-or-mismatch/getRef - local.tee $0 - if (result i32) - local.get $0 - else - local.get $0 - call $~lib/rt/pure/__release - global.get $rc/logical-or-mismatch/gloRef - call $~lib/rt/pure/__retain - end - local.set $0 + call $rc/logical-or-mismatch/getRef + local.tee $0 + if (result i32) + local.get $0 + else local.get $0 call $~lib/rt/pure/__release - end - block global.get $rc/logical-or-mismatch/gloRef - local.tee $0 - if (result i32) - local.get $0 - call $~lib/rt/pure/__retain - else - call $rc/logical-or-mismatch/getRef - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - block - call $rc/logical-or-mismatch/getRef - local.tee $0 - if (result i32) - local.get $0 - else - local.get $0 - call $~lib/rt/pure/__release - call $rc/logical-or-mismatch/getRef - end - local.set $0 - local.get $0 - call $~lib/rt/pure/__release - end - block - global.get $rc/logical-or-mismatch/gloRef - local.tee $0 - if (result i32) - local.get $0 - else - global.get $rc/logical-or-mismatch/gloRef - end call $~lib/rt/pure/__retain - local.set $0 + end + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + global.get $rc/logical-or-mismatch/gloRef + local.tee $0 + if (result i32) + local.get $0 + call $~lib/rt/pure/__retain + else + call $rc/logical-or-mismatch/getRef + end + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + call $rc/logical-or-mismatch/getRef + local.tee $0 + if (result i32) + local.get $0 + else local.get $0 call $~lib/rt/pure/__release + call $rc/logical-or-mismatch/getRef end + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + global.get $rc/logical-or-mismatch/gloRef + local.tee $0 + if (result i32) + local.get $0 + else + global.get $rc/logical-or-mismatch/gloRef + end + call $~lib/rt/pure/__retain + local.set $0 + local.get $0 + call $~lib/rt/pure/__release global.get $rc/logical-or-mismatch/gloRef call $~lib/rt/pure/__release ) @@ -3387,103 +3168,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -3499,60 +3260,28 @@ ) (func $~lib/rt/__visit_members (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable + return end - block - block - unreachable - unreachable - end - unreachable - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end - unreachable + return end + unreachable ) (func $null (; 36 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/rc/rereturn.optimized.wat b/tests/compiler/rc/rereturn.optimized.wat index 7ba85c80..475d7446 100644 --- a/tests/compiler/rc/rereturn.optimized.wat +++ b/tests/compiler/rc/rereturn.optimized.wat @@ -619,7 +619,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -634,7 +634,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -655,14 +655,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 304 @@ -1167,7 +1167,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1249,7 +1250,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 @@ -1595,7 +1597,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $3 local.get $0 @@ -1655,14 +1657,14 @@ i32.const 4 i32.add local.set $3 - br $repeat|0 + br $loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 local.get $2 @@ -1675,12 +1677,12 @@ i32.const 4 i32.add local.set $0 - br $repeat|1 + br $loop|1 end end local.get $5 local.set $0 - loop $repeat|2 + loop $loop|2 block $break|2 local.get $0 local.get $2 @@ -1700,7 +1702,7 @@ i32.const 4 i32.add local.set $0 - br $repeat|2 + br $loop|2 end end local.get $5 diff --git a/tests/compiler/rc/rereturn.untouched.wat b/tests/compiler/rc/rereturn.untouched.wat index 4e97d973..07dadcff 100644 --- a/tests/compiler/rc/rereturn.untouched.wat +++ b/tests/compiler/rc/rereturn.untouched.wat @@ -154,85 +154,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -288,20 +280,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -339,20 +329,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -363,14 +351,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -523,24 +509,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -554,27 +538,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -583,36 +565,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (; 3 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -650,12 +628,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -752,15 +728,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -820,75 +794,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -896,8 +863,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1027,18 +993,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1071,18 +1035,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1094,29 +1056,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1134,7 +1073,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1255,34 +1213,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1502,32 +1456,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1540,50 +1491,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1648,22 +1600,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1695,338 +1643,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2034,15 +1722,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2050,15 +1738,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2066,10 +1754,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2085,306 +1773,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2392,148 +2243,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2541,76 +2360,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2618,40 +2421,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2659,22 +2454,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2735,94 +2526,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -2840,54 +2626,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -2899,9 +2644,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3257,13 +3046,11 @@ local.get $0 local.set $1 block $break|0 - block - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - end - loop $repeat|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $loop|0 local.get $2 local.get $3 i32.lt_u @@ -3331,8 +3118,7 @@ i32.const 4 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -3341,7 +3127,7 @@ block $break|1 local.get $0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 local.get $1 i32.lt_u @@ -3354,15 +3140,14 @@ i32.const 4 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end block $break|2 local.get $0 local.set $5 - loop $repeat|2 + loop $loop|2 local.get $5 local.get $1 i32.lt_u @@ -3385,8 +3170,7 @@ i32.const 4 i32.add local.set $5 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -3463,103 +3247,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -3575,60 +3339,28 @@ ) (func $~lib/rt/__visit_members (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable + return end - block - block - unreachable - unreachable - end - unreachable - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end - unreachable + return end + unreachable ) (func $null (; 34 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/rc/ternary-mismatch.optimized.wat b/tests/compiler/rc/ternary-mismatch.optimized.wat index 9bf6e0e4..a4786c34 100644 --- a/tests/compiler/rc/ternary-mismatch.optimized.wat +++ b/tests/compiler/rc/ternary-mismatch.optimized.wat @@ -621,7 +621,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -636,7 +636,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -657,14 +657,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 304 @@ -1190,7 +1190,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1272,7 +1273,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 diff --git a/tests/compiler/rc/ternary-mismatch.untouched.wat b/tests/compiler/rc/ternary-mismatch.untouched.wat index 7c15cab1..ac385544 100644 --- a/tests/compiler/rc/ternary-mismatch.untouched.wat +++ b/tests/compiler/rc/ternary-mismatch.untouched.wat @@ -156,85 +156,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -290,20 +282,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -341,20 +331,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -365,14 +353,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -525,24 +511,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -556,27 +540,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -585,36 +567,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -652,12 +630,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -754,15 +730,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -822,75 +796,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -898,8 +865,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1029,18 +995,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1073,18 +1037,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1096,29 +1058,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1136,7 +1075,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1257,34 +1215,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1535,32 +1489,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1573,50 +1524,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1681,22 +1633,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1728,338 +1676,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2067,15 +1755,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2083,15 +1771,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2099,10 +1787,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2118,306 +1806,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2425,148 +2276,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2574,76 +2393,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2651,40 +2454,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2692,22 +2487,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2768,94 +2559,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -2873,54 +2659,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -2932,9 +2677,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3363,103 +3152,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -3475,60 +3244,28 @@ ) (func $~lib/rt/__visit_members (; 37 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable + return end - block - block - unreachable - unreachable - end - unreachable - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end - unreachable + return end + unreachable ) (func $null (; 38 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/retain-i32.optimized.wat b/tests/compiler/retain-i32.optimized.wat index b85b2623..6cfabbee 100644 --- a/tests/compiler/retain-i32.optimized.wat +++ b/tests/compiler/retain-i32.optimized.wat @@ -12,7 +12,7 @@ (local $0 i32) i32.const -128 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 255 i32.le_s @@ -21,7 +21,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const -1 diff --git a/tests/compiler/retain-i32.untouched.wat b/tests/compiler/retain-i32.untouched.wat index 8dd06a47..fdad18d4 100644 --- a/tests/compiler/retain-i32.untouched.wat +++ b/tests/compiler/retain-i32.untouched.wat @@ -404,7 +404,7 @@ block $break|0 global.get $~lib/builtins/i8.MIN_VALUE local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 255 i32.le_s @@ -450,8 +450,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 - unreachable + br $loop|0 end unreachable end diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index 734e6095..55e4754d 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -628,7 +628,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -643,7 +643,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -664,14 +664,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 752 @@ -1182,7 +1182,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1264,7 +1265,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 @@ -1786,14 +1788,12 @@ i32.and local.tee $1 i32.sub - local.set $2 local.get $0 local.get $1 i32.add local.tee $0 i32.const 0 i32.store - local.get $2 i32.const -4 i32.and local.tee $1 @@ -2110,10 +2110,8 @@ if i32.const 584 call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 return end local.get $2 @@ -2148,12 +2146,10 @@ select local.get $1 call $~lib/string/String#concat - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 ) (func $~lib/rt/pure/markGray (; 36 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) @@ -2272,7 +2268,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $3 local.get $0 @@ -2332,14 +2328,14 @@ i32.const 4 i32.add local.set $3 - br $repeat|0 + br $loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 local.get $2 @@ -2352,12 +2348,12 @@ i32.const 4 i32.add local.set $0 - br $repeat|1 + br $loop|1 end end local.get $5 local.set $0 - loop $repeat|2 + loop $loop|2 block $break|2 local.get $0 local.get $2 @@ -2377,7 +2373,7 @@ i32.const 4 i32.add local.set $0 - br $repeat|2 + br $loop|2 end end local.get $5 @@ -2422,8 +2418,7 @@ i32.const 0 i32.store offset=12 local.get $0 - local.set $1 - loop $repeat|0 + loop $loop|0 local.get $3 i32.const 10 i32.lt_s @@ -2442,7 +2437,7 @@ i32.store offset=12 i32.const 0 local.set $2 - loop $repeat|1 + loop $loop|1 local.get $2 i32.const 10 i32.lt_s @@ -2453,19 +2448,18 @@ i32.const 1 i32.add local.set $2 - br $repeat|1 + br $loop|1 end end - local.get $0 - call $~lib/rt/pure/__release local.get $3 i32.const 1 i32.add local.set $3 - br $repeat|0 + local.get $0 + call $~lib/rt/pure/__release + br $loop|0 end end - local.get $1 call $~lib/rt/pure/__release i32.const 600 call $~lib/rt/pure/__retain @@ -2477,14 +2471,12 @@ local.tee $2 i32.const 672 call $~lib/string/String.__concat - local.set $3 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $3 call $~lib/rt/pure/__release i32.const 4 i32.const 6 @@ -2494,7 +2486,6 @@ i32.const 0 i32.store local.get $0 - local.set $3 i32.const 4 i32.const 7 call $~lib/rt/tlsf/__alloc @@ -2516,7 +2507,6 @@ local.get $4 call $~lib/rt/pure/__release end - local.get $3 local.get $2 i32.store local.get $0 diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat index 9a6e9bc7..42543afa 100644 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ b/tests/compiler/retain-release-sanity.untouched.wat @@ -162,85 +162,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -296,20 +288,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -347,20 +337,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -371,14 +359,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -531,24 +517,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -562,27 +546,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -591,36 +573,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -658,12 +636,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -760,15 +736,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -828,75 +802,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -904,8 +871,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1035,18 +1001,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1079,18 +1043,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1102,29 +1064,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1142,7 +1081,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1263,34 +1221,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1516,32 +1470,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1554,50 +1505,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1662,22 +1614,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1709,338 +1657,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2048,15 +1736,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2064,15 +1752,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2080,10 +1768,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2099,306 +1787,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2406,148 +2257,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2555,76 +2374,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2632,40 +2435,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2673,22 +2468,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2749,94 +2540,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -2854,54 +2640,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -2913,9 +2658,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3174,44 +2963,40 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 - block (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 local.tee $4 - block (result i32) - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - drop - local.get $4 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if local.get $5 + call $~lib/rt/pure/__retain + drop + local.get $4 + call $~lib/rt/pure/__release end + local.get $5 i32.store local.get $0 local.get $3 @@ -3285,20 +3070,18 @@ local.get $1 return end - block $~lib/rt/tlsf/GETRIGHT|inlined.4 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $6 local.get $6 i32.load @@ -3646,36 +3429,37 @@ local.get $3 i32.const 32 i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 end + unreachable end end ) @@ -3922,21 +3706,19 @@ i32.const 0 i32.eq if - block (result i32) - i32.const 648 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - drop - local.get $3 - call $~lib/rt/pure/__release - end + i32.const 648 + local.tee $2 + local.get $1 + local.tee $3 + i32.ne + if local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release end + local.get $2 local.set $1 end local.get $0 @@ -4170,13 +3952,11 @@ local.get $0 local.set $1 block $break|0 - block - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - end - loop $repeat|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $loop|0 local.get $2 local.get $3 i32.lt_u @@ -4244,8 +4024,7 @@ i32.const 4 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -4254,7 +4033,7 @@ block $break|1 local.get $0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 local.get $1 i32.lt_u @@ -4267,15 +4046,14 @@ i32.const 4 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end block $break|2 local.get $0 local.set $5 - loop $repeat|2 + loop $loop|2 local.get $5 local.get $1 i32.lt_u @@ -4298,8 +4076,7 @@ i32.const 4 i32.add local.set $5 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -4311,229 +4088,207 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block + i32.const 0 + i32.const 3 + call $~lib/array/Array#constructor + local.set $0 + local.get $0 + i32.const 123 + call $~lib/array/Array#push + drop + local.get $0 + i32.const 123 + call $~lib/array/Array#push + drop + local.get $0 + call $~lib/array/Array#pop + drop + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor + local.set $0 + block $break|0 i32.const 0 - i32.const 3 - call $~lib/array/Array#constructor - local.set $0 - local.get $0 - i32.const 123 - call $~lib/array/Array#push - drop - local.get $0 - i32.const 123 - call $~lib/array/Array#push - drop - local.get $0 - call $~lib/array/Array#pop - drop - local.get $0 - call $~lib/rt/pure/__release - end - block - i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor - local.set $0 - block $break|0 + local.set $1 + loop $loop|0 + local.get $1 + i32.const 10 + i32.lt_s + i32.eqz + br_if $break|0 i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 - i32.const 10 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#constructor + local.set $2 + block $break|1 i32.const 0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - block $break|1 - i32.const 0 + local.set $3 + loop $loop|1 + local.get $3 + i32.const 10 + i32.lt_s + i32.eqz + br_if $break|1 + local.get $2 + i32.const 584 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $3 + i32.const 1 + i32.add local.set $3 - loop $repeat|1 - local.get $3 - i32.const 10 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $2 - i32.const 584 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $repeat|1 - unreachable - end - unreachable + br $loop|1 end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|0 unreachable end - unreachable + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $2 + call $~lib/rt/pure/__release + br $loop|0 end + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + i32.const 600 + call $~lib/rt/pure/__retain + local.set $0 + local.get $0 + i32.const 624 + call $~lib/string/String.__concat + local.tee $2 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.const 672 + call $~lib/string/String.__concat + local.tee $3 + drop + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + i32.const 0 + call $retain-release-sanity/A#constructor + local.set $3 + i32.const 0 + call $retain-release-sanity/B#constructor + local.set $1 + local.get $3 + local.tee $2 + local.get $1 + local.tee $0 + local.get $2 + i32.load + local.tee $2 + i32.ne + if local.get $0 + call $~lib/rt/pure/__retain + drop + local.get $2 call $~lib/rt/pure/__release end - block - i32.const 600 + local.get $0 + i32.store + local.get $3 + local.tee $0 + local.get $1 + local.tee $2 + local.get $0 + i32.load + local.tee $0 + i32.ne + if + local.get $2 call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.const 624 - call $~lib/string/String.__concat - local.tee $2 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 672 - call $~lib/string/String.__concat - local.tee $3 drop local.get $0 call $~lib/rt/pure/__release + end + local.get $2 + i32.store + local.get $1 + local.tee $2 + local.get $3 + local.tee $0 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $0 + call $~lib/rt/pure/__retain + drop local.get $2 call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 + end + local.get $0 + i32.store + local.get $1 + local.tee $0 + local.get $3 + local.tee $2 + local.get $0 + i32.load + local.tee $0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 call $~lib/rt/pure/__release end - block - i32.const 0 - call $retain-release-sanity/A#constructor - local.set $3 - i32.const 0 - call $retain-release-sanity/B#constructor - local.set $1 - local.get $3 - local.tee $2 - block (result i32) - local.get $1 - local.tee $0 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - drop - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - end - i32.store - local.get $3 - local.tee $0 - block (result i32) - local.get $1 - local.tee $2 - local.get $0 - i32.load - local.tee $0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - drop - local.get $0 - call $~lib/rt/pure/__release - end - local.get $2 - end - i32.store - local.get $1 - local.tee $2 - block (result i32) - local.get $3 - local.tee $0 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - drop - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - end - i32.store - local.get $1 - local.tee $0 - block (result i32) - local.get $3 - local.tee $2 - local.get $0 - i32.load - local.tee $0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - drop - local.get $0 - call $~lib/rt/pure/__release - end - local.get $2 - end - i32.store - local.get $3 - local.tee $2 - block (result i32) - local.get $1 - local.tee $0 - local.get $2 - i32.load - local.tee $2 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - drop - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - end - i32.store - local.get $1 - local.tee $0 - block (result i32) - local.get $3 - local.tee $2 - local.get $0 - i32.load - local.tee $0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - drop - local.get $0 - call $~lib/rt/pure/__release - end - local.get $2 - end - i32.store - local.get $3 - call $~lib/rt/pure/__release - local.get $1 + local.get $2 + i32.store + local.get $3 + local.tee $2 + local.get $1 + local.tee $0 + local.get $2 + i32.load + local.tee $2 + i32.ne + if + local.get $0 + call $~lib/rt/pure/__retain + drop + local.get $2 call $~lib/rt/pure/__release end + local.get $0 + i32.store + local.get $1 + local.tee $0 + local.get $3 + local.tee $2 + local.get $0 + i32.load + local.tee $0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $0 + call $~lib/rt/pure/__release + end + local.get $2 + i32.store + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release call $~lib/rt/pure/__collect ) (func $start (; 48 ;) (type $FUNCSIG$v) @@ -4586,103 +4341,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -4715,23 +4450,24 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 if - local.get $2 - i32.load - local.set $4 local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + local.get $1 + call $~lib/rt/pure/__visit end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end + unreachable end ) (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__visit_impl (; 52 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -4753,138 +4489,71 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 if - local.get $2 - i32.load - local.set $4 local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + local.get $1 + call $~lib/rt/pure/__visit end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end + unreachable end ) (func $~lib/rt/__visit_members (; 53 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $block$4$break - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - br $block$4$break - unreachable - end - unreachable - end - block - block + block $switch$1$default + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$4 $switch$1$case$4 $switch$1$default end - unreachable - unreachable + return end - unreachable + br $block$4$break end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - end - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array<~lib/string/String>#__visit_impl + br $block$4$break end - return - unreachable + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__visit_impl + br $block$4$break end unreachable - unreachable end - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return ) (func $null (; 54 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/retain-release.optimized.wat b/tests/compiler/retain-release.optimized.wat index dec4930c..ec435905 100644 --- a/tests/compiler/retain-release.optimized.wat +++ b/tests/compiler/retain-release.optimized.wat @@ -152,8 +152,6 @@ (func $retain-release/assignGlobal (; 8 ;) (type $FUNCSIG$v) (local $0 i32) global.get $retain-release/REF - local.set $0 - local.get $0 global.set $retain-release/glo ) (func $retain-release/assignField (; 9 ;) (type $FUNCSIG$v) diff --git a/tests/compiler/retain-release.untouched.wat b/tests/compiler/retain-release.untouched.wat index d9f9fd3d..f8f33c11 100644 --- a/tests/compiler/retain-release.untouched.wat +++ b/tests/compiler/retain-release.untouched.wat @@ -257,21 +257,19 @@ (func $retain-release/assignGlobal (; 16 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) - block (result i32) - global.get $retain-release/REF - local.tee $0 - global.get $retain-release/glo - local.tee $1 - i32.ne - if - local.get $0 - call $~lib/rt/stub/__retain - drop - local.get $1 - call $~lib/rt/stub/__release - end + global.get $retain-release/REF + local.tee $0 + global.get $retain-release/glo + local.tee $1 + i32.ne + if local.get $0 + call $~lib/rt/stub/__retain + drop + local.get $1 + call $~lib/rt/stub/__release end + local.get $0 global.set $retain-release/glo ) (func $retain-release/assignField (; 17 ;) (type $FUNCSIG$v) @@ -279,22 +277,20 @@ (local $1 i32) global.get $retain-release/TARGET local.tee $0 - block (result i32) - global.get $retain-release/REF - local.tee $1 - local.get $0 - i32.load - local.tee $0 - i32.ne - if - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $0 - call $~lib/rt/stub/__release - end + global.get $retain-release/REF + local.tee $1 + local.get $0 + i32.load + local.tee $0 + i32.ne + if local.get $1 + call $~lib/rt/stub/__retain + drop + local.get $0 + call $~lib/rt/stub/__release end + local.get $1 i32.store ) (func $retain-release/scopeBlock (; 18 ;) (type $FUNCSIG$v) @@ -315,21 +311,19 @@ global.get $retain-release/REF call $~lib/rt/stub/__retain local.set $1 - block (result i32) - local.get $1 - local.tee $2 - local.get $0 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end + local.get $1 + local.tee $2 + local.get $0 + local.tee $3 + i32.ne + if local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release end + local.get $2 local.set $0 local.get $1 call $~lib/rt/stub/__release @@ -347,21 +341,19 @@ global.get $retain-release/REF call $~lib/rt/stub/__retain local.set $1 - block (result i32) - local.get $1 - local.tee $2 - local.get $0 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end + local.get $1 + local.tee $2 + local.get $0 + local.tee $3 + i32.ne + if local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release end + local.get $2 local.set $0 local.get $1 call $~lib/rt/stub/__release @@ -377,41 +369,37 @@ local.set $1 local.get $0 if - block (result i32) - global.get $retain-release/REF - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end + global.get $retain-release/REF + local.tee $2 + local.get $1 + local.tee $3 + i32.ne + if local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release end + local.get $2 local.set $1 end global.get $retain-release/REF call $~lib/rt/stub/__retain local.set $2 - block (result i32) - local.get $2 - local.tee $3 - local.get $1 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end + local.get $2 + local.tee $3 + local.get $1 + local.tee $4 + i32.ne + if local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release end + local.get $3 local.set $1 local.get $2 call $~lib/rt/stub/__release @@ -441,21 +429,19 @@ local.set $1 local.get $0 if - block (result i32) - global.get $retain-release/REF - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end + global.get $retain-release/REF + local.tee $2 + local.get $1 + local.tee $3 + i32.ne + if local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release end + local.get $2 local.set $1 end local.get $1 @@ -490,37 +476,9 @@ end ) (func $retain-release/scopeWhile (; 27 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - loop $continue|0 - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - br $continue|0 - end - end - ) - (func $retain-release/scopeDo (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - loop $continue|0 - block - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - end - local.get $0 - br_if $continue|0 - end - ) - (func $retain-release/scopeFor (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) block $break|0 - loop $repeat|0 + loop $continue|0 local.get $0 i32.eqz br_if $break|0 @@ -529,8 +487,34 @@ local.set $1 local.get $1 call $~lib/rt/stub/__release - br $repeat|0 - unreachable + br $continue|0 + end + unreachable + end + ) + (func $retain-release/scopeDo (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + loop $continue|0 + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $0 + br_if $continue|0 + end + ) + (func $retain-release/scopeFor (; 29 ;) (type $FUNCSIG$vi) (param $0 i32) + (local $1 i32) + block $break|0 + loop $loop|0 + local.get $0 + i32.eqz + br_if $break|0 + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + call $~lib/rt/stub/__release + br $loop|0 end unreachable end @@ -538,24 +522,24 @@ (func $retain-release/scopeBreak (; 30 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) block $break|0 - loop $continue|0 - local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - br $break|0 - end - end + local.get $0 + i32.eqz + br_if $break|0 + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + call $~lib/rt/stub/__release + br $break|0 end ) (func $retain-release/scopeContinue (; 31 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) - loop $continue|0 - local.get $0 - if + block $break|0 + loop $continue|0 + local.get $0 + i32.eqz + br_if $break|0 global.get $retain-release/REF call $~lib/rt/stub/__retain local.set $1 @@ -563,44 +547,41 @@ call $~lib/rt/stub/__release br $continue|0 end + unreachable end ) (func $retain-release/scopeThrow (; 32 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) - loop $continue|0 + block $break|0 local.get $0 - if - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - block - i32.const 24 - i32.const 56 - i32.const 313 - i32.const 4 - call $~lib/builtins/abort - unreachable - unreachable - end - unreachable - end + i32.eqz + br_if $break|0 + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + call $~lib/rt/stub/__release + i32.const 24 + i32.const 56 + i32.const 313 + i32.const 4 + call $~lib/builtins/abort + unreachable end ) (func $retain-release/scopeUnreachable (; 33 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) - loop $continue|0 - local.get $0 - if + block $break|0 + loop $continue|0 + local.get $0 + i32.eqz + br_if $break|0 global.get $retain-release/REF call $~lib/rt/stub/__retain local.set $1 unreachable - local.get $1 - call $~lib/rt/stub/__release - br $continue|0 end + unreachable end ) (func $retain-release/callInline (; 34 ;) (type $FUNCSIG$v) @@ -621,10 +602,8 @@ ) (func $retain-release/receiveRefInline (; 36 ;) (type $FUNCSIG$v) (local $0 i32) - block $retain-release/returnRefInline|inlined.0 (result i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - end + global.get $retain-release/REF + call $~lib/rt/stub/__retain local.tee $0 i32.eqz drop @@ -632,10 +611,8 @@ call $~lib/rt/stub/__release ) (func $retain-release/receiveRefInlineDrop (; 37 ;) (type $FUNCSIG$v) - block $retain-release/returnRefInline|inlined.1 (result i32) - global.get $retain-release/REF - call $~lib/rt/stub/__retain - end + global.get $retain-release/REF + call $~lib/rt/stub/__retain call $~lib/rt/stub/__release ) (func $retain-release/provideRefIndirect (; 38 ;) (type $FUNCSIG$vi) (param $0 i32) @@ -647,13 +624,11 @@ ) (func $retain-release/receiveRefIndirect (; 39 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) - block (result i32) - i32.const 0 - global.set $~lib/argc - local.get $0 - call_indirect (type $FUNCSIG$i) - local.tee $1 - end + i32.const 0 + global.set $~lib/argc + local.get $0 + call_indirect (type $FUNCSIG$i) + local.tee $1 i32.eqz drop local.get $1 diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index 7c088e22..acaa8057 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -238,11 +238,9 @@ i32.const 0 call $rt/instanceof/BlackCat#constructor global.set $rt/instanceof/blackcat - block (result i32) - global.get $rt/instanceof/animal - drop - i32.const 1 - end + global.get $rt/instanceof/animal + drop + i32.const 1 i32.eqz if i32.const 0 @@ -292,11 +290,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $rt/instanceof/cat - drop - i32.const 1 - end + global.get $rt/instanceof/cat + drop + i32.const 1 i32.eqz if i32.const 0 @@ -345,11 +341,9 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $rt/instanceof/blackcat - drop - i32.const 1 - end + global.get $rt/instanceof/blackcat + drop + i32.const 1 i32.eqz if i32.const 0 diff --git a/tests/compiler/runtime-full.optimized.wat b/tests/compiler/runtime-full.optimized.wat index d76b4910..a67fc0d9 100644 --- a/tests/compiler/runtime-full.optimized.wat +++ b/tests/compiler/runtime-full.optimized.wat @@ -618,7 +618,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -633,7 +633,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -654,14 +654,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 288 @@ -1166,7 +1166,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1248,7 +1249,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 @@ -1594,7 +1596,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $3 local.get $0 @@ -1654,14 +1656,14 @@ i32.const 4 i32.add local.set $3 - br $repeat|0 + br $loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 local.get $2 @@ -1674,12 +1676,12 @@ i32.const 4 i32.add local.set $0 - br $repeat|1 + br $loop|1 end end local.get $5 local.set $0 - loop $repeat|2 + loop $loop|2 block $break|2 local.get $0 local.get $2 @@ -1699,7 +1701,7 @@ i32.const 4 i32.add local.set $0 - br $repeat|2 + br $loop|2 end end local.get $5 diff --git a/tests/compiler/runtime-full.untouched.wat b/tests/compiler/runtime-full.untouched.wat index c639a3dd..252b6ae2 100644 --- a/tests/compiler/runtime-full.untouched.wat +++ b/tests/compiler/runtime-full.untouched.wat @@ -152,85 +152,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -286,20 +278,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -337,20 +327,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -361,14 +349,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -521,24 +507,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -552,27 +536,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -581,36 +563,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (; 3 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -648,12 +626,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -750,15 +726,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -818,75 +792,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -894,8 +861,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1025,18 +991,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1069,18 +1033,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1092,29 +1054,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1132,7 +1071,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1253,34 +1211,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1500,32 +1454,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1538,50 +1489,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1646,22 +1598,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1693,338 +1641,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2032,15 +1720,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2048,15 +1736,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2064,10 +1752,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2083,306 +1771,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2390,148 +2241,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2539,76 +2358,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2616,40 +2419,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2657,22 +2452,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2733,94 +2524,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -2838,54 +2624,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -2897,9 +2642,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3255,13 +3044,11 @@ local.get $0 local.set $1 block $break|0 - block - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - end - loop $repeat|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $loop|0 local.get $2 local.get $3 i32.lt_u @@ -3329,8 +3116,7 @@ i32.const 4 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -3339,7 +3125,7 @@ block $break|1 local.get $0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 local.get $1 i32.lt_u @@ -3352,15 +3138,14 @@ i32.const 4 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end block $break|2 local.get $0 local.set $5 - loop $repeat|2 + loop $loop|2 local.get $5 local.get $1 i32.lt_u @@ -3383,8 +3168,7 @@ i32.const 4 i32.add local.set $5 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -3435,103 +3219,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -3547,60 +3311,28 @@ ) (func $~lib/rt/__visit_members (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable + return end - block - block - unreachable - unreachable - end - unreachable - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end - unreachable + return end + unreachable ) (func $null (; 29 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/scoped.optimized.wat b/tests/compiler/scoped.optimized.wat index e3404130..fbd30b04 100644 --- a/tests/compiler/scoped.optimized.wat +++ b/tests/compiler/scoped.optimized.wat @@ -5,7 +5,7 @@ (start $start) (func $start:scoped (; 0 ;) (type $FUNCSIG$v) (local $0 i32) - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 1 i32.lt_s @@ -14,12 +14,12 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i32.const 1 i32.lt_s @@ -28,7 +28,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end end ) diff --git a/tests/compiler/scoped.untouched.wat b/tests/compiler/scoped.untouched.wat index f6f37e3d..61a431f4 100644 --- a/tests/compiler/scoped.untouched.wat +++ b/tests/compiler/scoped.untouched.wat @@ -24,7 +24,7 @@ block $break|0 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 1 i32.lt_s @@ -35,15 +35,14 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 - unreachable + br $loop|0 end unreachable end block $break|1 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i32.const 1 i32.lt_s @@ -55,17 +54,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end - block - i64.const 5 - local.set $2 - f32.const 10 - local.set $3 - end + i64.const 5 + local.set $2 + f32.const 10 + local.set $3 i32.const 42 call $scoped/fn ) diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index ee37d0f1..41090631 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -222,22 +222,23 @@ else i32.const 0 end - if - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $continue|0 end + unreachable end local.get $5 local.set $8 @@ -272,21 +273,19 @@ i32.const 0 i32.eq if - block (result i32) - i32.const 304 - local.tee $3 - local.get $1 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end + i32.const 304 + local.tee $3 + local.get $1 + local.tee $4 + i32.ne + if local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release end + local.get $3 local.set $1 end local.get $0 diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index f1827972..d5c81685 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -674,7 +674,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -689,7 +689,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -710,14 +710,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 608 @@ -1182,7 +1182,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1264,7 +1265,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index a5bdca6c..d915e5a6 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -233,85 +233,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -367,20 +359,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -418,20 +408,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -442,14 +430,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -602,24 +588,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -633,27 +617,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -662,36 +644,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (; 13 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -729,12 +707,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -831,15 +807,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -899,75 +873,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -975,8 +942,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1106,18 +1072,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1150,18 +1114,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1173,29 +1135,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1213,7 +1152,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1334,34 +1292,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1533,32 +1487,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1571,50 +1522,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1679,22 +1631,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1726,338 +1674,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2065,15 +1753,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2081,15 +1769,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2097,10 +1785,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2116,306 +1804,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2423,148 +2274,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2572,76 +2391,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2649,40 +2452,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2690,22 +2485,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2766,94 +2557,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -2871,54 +2657,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -2930,9 +2675,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3423,39 +3212,33 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 3 - i32.const 0 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - local.set $1 - local.get $1 - i32.load offset=4 - local.set $0 - local.get $0 - global.get $std/array-literal/i - i32.store8 - local.get $0 - block (result i32) - global.get $std/array-literal/i - i32.const 1 - i32.add - global.set $std/array-literal/i - global.get $std/array-literal/i - end - i32.store8 offset=1 - local.get $0 - block (result i32) - global.get $std/array-literal/i - i32.const 1 - i32.add - global.set $std/array-literal/i - global.get $std/array-literal/i - end - i32.store8 offset=2 - local.get $1 - end + i32.const 3 + i32.const 0 + i32.const 3 + i32.const 0 + call $~lib/rt/__allocArray + local.set $1 + local.get $1 + i32.load offset=4 + local.set $0 + local.get $0 + global.get $std/array-literal/i + i32.store8 + local.get $0 + global.get $std/array-literal/i + i32.const 1 + i32.add + global.set $std/array-literal/i + global.get $std/array-literal/i + i32.store8 offset=1 + local.get $0 + global.get $std/array-literal/i + i32.const 1 + i32.add + global.set $std/array-literal/i + global.get $std/array-literal/i + i32.store8 offset=2 + local.get $1 call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayI8 global.get $std/array-literal/dynamicArrayI8 @@ -3515,39 +3298,33 @@ end i32.const 0 global.set $std/array-literal/i - block (result i32) - i32.const 3 - i32.const 2 - i32.const 4 - i32.const 0 - call $~lib/rt/__allocArray - local.set $0 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - global.get $std/array-literal/i - i32.store - local.get $1 - block (result i32) - global.get $std/array-literal/i - i32.const 1 - i32.add - global.set $std/array-literal/i - global.get $std/array-literal/i - end - i32.store offset=4 - local.get $1 - block (result i32) - global.get $std/array-literal/i - i32.const 1 - i32.add - global.set $std/array-literal/i - global.get $std/array-literal/i - end - i32.store offset=8 - local.get $0 - end + i32.const 3 + i32.const 2 + i32.const 4 + i32.const 0 + call $~lib/rt/__allocArray + local.set $0 + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + global.get $std/array-literal/i + i32.store + local.get $1 + global.get $std/array-literal/i + i32.const 1 + i32.add + global.set $std/array-literal/i + global.get $std/array-literal/i + i32.store offset=4 + local.get $1 + global.get $std/array-literal/i + i32.const 1 + i32.add + global.set $std/array-literal/i + global.get $std/array-literal/i + i32.store offset=8 + local.get $0 call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayI32 global.get $std/array-literal/dynamicArrayI32 @@ -3605,36 +3382,34 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 3 - i32.const 2 - i32.const 6 - i32.const 0 - call $~lib/rt/__allocArray - local.set $1 - local.get $1 - i32.load offset=4 - local.set $0 - local.get $0 - i32.const 0 - call $std/array-literal/Ref#constructor - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.const 0 - call $std/array-literal/Ref#constructor - local.tee $3 - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $0 - i32.const 0 - call $std/array-literal/Ref#constructor - local.tee $4 - call $~lib/rt/pure/__retain - i32.store offset=8 - local.get $1 - end + i32.const 3 + i32.const 2 + i32.const 6 + i32.const 0 + call $~lib/rt/__allocArray + local.set $1 + local.get $1 + i32.load offset=4 + local.set $0 + local.get $0 + i32.const 0 + call $std/array-literal/Ref#constructor + local.tee $2 + call $~lib/rt/pure/__retain + i32.store + local.get $0 + i32.const 0 + call $std/array-literal/Ref#constructor + local.tee $3 + call $~lib/rt/pure/__retain + i32.store offset=4 + local.get $0 + i32.const 0 + call $std/array-literal/Ref#constructor + local.tee $4 + call $~lib/rt/pure/__retain + i32.store offset=8 + local.get $1 call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayRef global.get $std/array-literal/dynamicArrayRef @@ -3650,36 +3425,34 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 3 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__allocArray - local.set $0 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 0 - call $std/array-literal/RefWithCtor#constructor - local.tee $5 - call $~lib/rt/pure/__retain - i32.store - local.get $1 - i32.const 0 - call $std/array-literal/RefWithCtor#constructor - local.tee $6 - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $1 - i32.const 0 - call $std/array-literal/RefWithCtor#constructor - local.tee $7 - call $~lib/rt/pure/__retain - i32.store offset=8 - local.get $0 - end + i32.const 3 + i32.const 2 + i32.const 8 + i32.const 0 + call $~lib/rt/__allocArray + local.set $0 + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 0 + call $std/array-literal/RefWithCtor#constructor + local.tee $5 + call $~lib/rt/pure/__retain + i32.store + local.get $1 + i32.const 0 + call $std/array-literal/RefWithCtor#constructor + local.tee $6 + call $~lib/rt/pure/__retain + i32.store offset=4 + local.get $1 + i32.const 0 + call $std/array-literal/RefWithCtor#constructor + local.tee $7 + call $~lib/rt/pure/__retain + i32.store offset=8 + local.get $0 call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayRefWithCtor global.get $std/array-literal/dynamicArrayRefWithCtor @@ -3890,103 +3663,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 456 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 456 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 456 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 456 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -4019,23 +3772,24 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 if - local.get $2 - i32.load - local.set $4 local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + local.get $1 + call $~lib/rt/pure/__visit end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end + unreachable end ) (func $~lib/array/Array#__visit_impl (; 47 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -4057,156 +3811,77 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 if - local.get $2 - i32.load - local.set $4 local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + local.get $1 + call $~lib/rt/pure/__visit end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end + unreachable end ) (func $~lib/rt/__visit_members (; 48 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $block$4$break - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$10 - block $switch$1$case$8 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$2 $switch$1$case$8 $switch$1$case$2 $switch$1$case$10 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - br $block$4$break - unreachable - end - unreachable - end - block - block + block $switch$1$default + block $switch$1$case$10 + block $switch$1$case$8 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$2 $switch$1$case$8 $switch$1$case$2 $switch$1$case$10 $switch$1$default end - unreachable - unreachable + return end - unreachable + br $block$4$break end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - unreachable + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - end - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + br $block$4$break end - return - unreachable + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break end unreachable - unreachable end - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return ) (func $null (; 49 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index e1b51053..d118d414 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -827,7 +827,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -842,7 +842,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -863,14 +863,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 7472 @@ -1381,7 +1381,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1463,7 +1464,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 @@ -1905,7 +1907,6 @@ i32.and local.tee $2 i32.sub - local.set $3 local.get $0 local.get $2 i32.add @@ -1917,7 +1918,6 @@ i32.mul local.tee $0 i32.store - local.get $3 i32.const -4 i32.and local.tee $3 @@ -2025,7 +2025,8 @@ loop $continue|0 local.get $2 i32.const 32 - i32.ge_u + i32.lt_u + i32.eqz if local.get $1 local.get $4 @@ -2166,7 +2167,7 @@ local.get $1 i32.eq br_if $folding-inner1 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $3 i32.lt_s @@ -2183,7 +2184,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end end br $folding-inner1 @@ -2254,7 +2255,7 @@ select end local.set $3 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $3 i32.ge_s @@ -2271,7 +2272,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end end local.get $0 @@ -2327,7 +2328,7 @@ br $folding-inner1 end end - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s @@ -2344,7 +2345,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 + br $loop|0 end end br $folding-inner1 @@ -2375,12 +2376,10 @@ i32.const 16 i32.sub i32.load offset=12 - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 i32.const 2 i32.shr_s ) @@ -2639,11 +2638,9 @@ i32.shl i32.add i32.load - local.set $2 local.get $0 local.get $1 i32.store offset=12 - local.get $2 ) (func $~lib/array/Array#concat (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2860,7 +2857,6 @@ i32.load offset=4 local.tee $2 i32.load - local.set $3 local.get $2 local.get $2 i32.const 4 @@ -2881,7 +2877,6 @@ local.get $0 local.get $1 i32.store offset=12 - local.get $3 ) (func $~lib/array/Array#reverse (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -2906,7 +2901,8 @@ loop $continue|0 local.get $2 local.get $1 - i32.lt_u + i32.ge_u + i32.eqz if local.get $2 i32.load @@ -2983,12 +2979,14 @@ if local.get $2 return + else + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $continue|0 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $continue|0 + unreachable end end i32.const -1 @@ -3136,7 +3134,7 @@ local.get $0 i32.load offset=12 local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $2 local.get $3 @@ -3170,7 +3168,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end unreachable end @@ -3240,7 +3238,7 @@ local.get $0 i32.load offset=12 local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $2 local.get $3 @@ -3271,7 +3269,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 else i32.const 0 return @@ -3344,7 +3342,7 @@ local.get $0 i32.load offset=12 local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $2 local.get $3 @@ -3378,7 +3376,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end unreachable end @@ -3450,7 +3448,7 @@ local.get $0 i32.load offset=12 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $3 local.get $0 @@ -3479,8 +3477,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -3521,7 +3518,7 @@ local.get $1 i32.eqz if - loop $repeat|0 + loop $loop|0 block $break|0 local.get $3 i32.const 4 @@ -3534,12 +3531,12 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 + br $loop|0 end end i32.const 0 local.set $3 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $3 i32.const 100 @@ -3554,12 +3551,12 @@ i32.const 1 i32.add local.set $3 - br $repeat|1 + br $loop|1 end end i32.const 0 local.set $3 - loop $repeat|2 + loop $loop|2 block $break|2 local.get $3 i32.const 100 @@ -3572,12 +3569,12 @@ i32.const 1 i32.add local.set $3 - br $repeat|2 + br $loop|2 end end i32.const 0 local.set $3 - loop $repeat|3 + loop $loop|3 block $break|3 local.get $3 i32.const 100 @@ -3592,7 +3589,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|3 + br $loop|3 end end end @@ -3642,7 +3639,7 @@ local.tee $4 i32.load offset=4 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $1 local.get $3 local.get $0 @@ -3677,7 +3674,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 + br $loop|0 end end local.get $4 @@ -3738,7 +3735,7 @@ local.tee $5 i32.load offset=4 local.set $6 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $2 local.get $4 @@ -3775,7 +3772,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end end local.get $5 @@ -3832,7 +3829,7 @@ local.get $0 i32.load offset=12 local.set $5 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $2 local.get $5 @@ -3869,7 +3866,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end end local.get $4 @@ -3939,7 +3936,7 @@ local.get $0 i32.load offset=12 local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $3 local.get $4 @@ -3971,7 +3968,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -4035,7 +4032,7 @@ i32.const 1 i32.sub local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $3 i32.const 0 @@ -4060,7 +4057,7 @@ i32.const 1 i32.sub local.set $3 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -4154,7 +4151,7 @@ (local $6 f32) (local $7 i32) block $break|0 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $1 i32.ge_s @@ -4171,43 +4168,42 @@ i32.sub local.set $4 loop $continue|1 - local.get $4 - i32.const 0 - i32.ge_s - if - block $break|1 - local.get $4 - i32.const 2 - i32.shl - local.get $0 - i32.add - f32.load - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $5 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iff) - i32.const 0 - i32.ge_s - br_if $break|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.const 1 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $6 - f32.store - br $continue|1 - end + block $break|1 + local.get $4 + i32.const 0 + i32.lt_s + br_if $break|1 + local.get $4 + i32.const 2 + i32.shl + local.get $0 + i32.add + f32.load + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$iff) + i32.const 0 + i32.ge_s + br_if $break|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + i32.const 1 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $6 + f32.store + br $continue|1 end end local.get $4 @@ -4223,8 +4219,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -4254,7 +4249,7 @@ i32.const 1 i32.sub local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $4 i32.const 0 @@ -4282,7 +4277,8 @@ i32.shr_u i32.const 1 i32.and - i32.eq + i32.ne + i32.eqz if local.get $3 i32.const 1 @@ -4353,14 +4349,14 @@ i32.const 1 i32.sub local.set $4 - br $repeat|0 + br $loop|0 end end local.get $1 i32.const 1 i32.sub local.set $4 - loop $repeat|2 + loop $loop|2 block $break|2 local.get $4 i32.const 2 @@ -4404,7 +4400,8 @@ i32.add local.tee $1 local.get $4 - i32.lt_s + i32.ge_s + i32.eqz if local.get $1 local.set $3 @@ -4474,7 +4471,7 @@ i32.const 1 i32.sub local.set $4 - br $repeat|2 + br $loop|2 end end local.get $6 @@ -4611,7 +4608,7 @@ local.get $1 i32.eq br_if $folding-inner1 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $3 i32.lt_s @@ -4639,7 +4636,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end end br $folding-inner1 @@ -4664,7 +4661,7 @@ (local $6 f64) (local $7 i32) block $break|0 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $1 i32.ge_s @@ -4681,43 +4678,42 @@ i32.sub local.set $4 loop $continue|1 - local.get $4 - i32.const 0 - i32.ge_s - if - block $break|1 - local.get $4 - i32.const 3 - i32.shl - local.get $0 - i32.add - f64.load - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $5 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$idd) - i32.const 0 - i32.ge_s - br_if $break|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.const 1 - i32.add - i32.const 3 - i32.shl - local.get $0 - i32.add - local.get $6 - f64.store - br $continue|1 - end + block $break|1 + local.get $4 + i32.const 0 + i32.lt_s + br_if $break|1 + local.get $4 + i32.const 3 + i32.shl + local.get $0 + i32.add + f64.load + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$idd) + i32.const 0 + i32.ge_s + br_if $break|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + i32.const 1 + i32.add + i32.const 3 + i32.shl + local.get $0 + i32.add + local.get $6 + f64.store + br $continue|1 end end local.get $4 @@ -4733,8 +4729,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -4764,7 +4759,7 @@ i32.const 1 i32.sub local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $4 i32.const 0 @@ -4792,7 +4787,8 @@ i32.shr_u i32.const 1 i32.and - i32.eq + i32.ne + i32.eqz if local.get $3 i32.const 1 @@ -4863,14 +4859,14 @@ i32.const 1 i32.sub local.set $4 - br $repeat|0 + br $loop|0 end end local.get $1 i32.const 1 i32.sub local.set $4 - loop $repeat|2 + loop $loop|2 block $break|2 local.get $4 i32.const 2 @@ -4914,7 +4910,8 @@ i32.add local.tee $1 local.get $4 - i32.lt_s + i32.ge_s + i32.eqz if local.get $1 local.set $3 @@ -4984,7 +4981,7 @@ i32.const 1 i32.sub local.set $4 - br $repeat|2 + br $loop|2 end end local.get $6 @@ -5144,7 +5141,7 @@ local.get $1 i32.eq br_if $folding-inner1 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $3 i32.lt_s @@ -5172,7 +5169,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end end br $folding-inner1 @@ -5197,7 +5194,7 @@ (local $6 i32) (local $7 i32) block $break|0 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $1 i32.ge_s @@ -5214,43 +5211,42 @@ i32.sub local.set $4 loop $continue|1 - local.get $4 - i32.const 0 - i32.ge_s - if - block $break|1 - local.get $4 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $5 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iii) - i32.const 0 - i32.ge_s - br_if $break|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.const 1 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $6 - i32.store - br $continue|1 - end + block $break|1 + local.get $4 + i32.const 0 + i32.lt_s + br_if $break|1 + local.get $4 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$iii) + i32.const 0 + i32.ge_s + br_if $break|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + i32.const 1 + i32.add + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $6 + i32.store + br $continue|1 end end local.get $4 @@ -5266,8 +5262,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -5297,7 +5292,7 @@ i32.const 1 i32.sub local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $3 i32.const 0 @@ -5325,7 +5320,8 @@ i32.shr_u i32.const 1 i32.and - i32.eq + i32.ne + i32.eqz if local.get $4 i32.const 1 @@ -5396,14 +5392,14 @@ i32.const 1 i32.sub local.set $3 - br $repeat|0 + br $loop|0 end end local.get $1 i32.const 1 i32.sub local.set $4 - loop $repeat|2 + loop $loop|2 block $break|2 local.get $4 i32.const 2 @@ -5447,7 +5443,8 @@ i32.add local.tee $3 local.get $4 - i32.lt_s + i32.ge_s + i32.eqz if local.get $3 local.set $1 @@ -5517,7 +5514,7 @@ i32.const 1 i32.sub local.set $4 - br $repeat|2 + br $loop|2 end end local.get $5 @@ -5646,7 +5643,7 @@ local.get $0 call $~lib/array/Array.create local.set $2 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $1 local.get $0 @@ -5664,7 +5661,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -5722,7 +5719,7 @@ local.get $0 call $~lib/array/Array.create local.set $2 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $1 local.get $0 @@ -5740,7 +5737,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -5756,7 +5753,7 @@ local.get $0 i32.load offset=12 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $3 i32.lt_s @@ -5785,7 +5782,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end unreachable end @@ -5927,7 +5924,7 @@ (local $2 i32) call $~lib/array/Array.create<~lib/array/Array> local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 2 i32.lt_s @@ -5944,13 +5941,13 @@ local.get $0 local.get $2 call $~lib/array/Array<~lib/array/Array>#__set - local.get $2 - call $~lib/rt/pure/__release local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + local.get $2 + call $~lib/rt/pure/__release + br $loop|0 end end local.get $1 @@ -5970,12 +5967,10 @@ i32.const 0 call $~lib/array/Array#__get i32.sub - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 ) (func $~lib/util/sort/insertionSort<~lib/array/Array> (; 129 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -5984,7 +5979,7 @@ (local $6 i32) (local $7 i32) block $break|0 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $1 i32.ge_s @@ -6006,46 +6001,43 @@ i32.const 0 i32.ge_s if - block $break|1 + local.get $4 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + call $~lib/rt/pure/__retain + local.set $5 + i32.const 2 + global.set $~lib/argc + local.get $6 + local.get $5 + local.get $2 + call_indirect (type $FUNCSIG$iii) + i32.const 0 + i32.lt_s + if local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + i32.const 1 + i32.add i32.const 2 i32.shl local.get $0 i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $5 - i32.const 2 - global.set $~lib/argc - local.get $6 local.get $5 - local.get $2 - call_indirect (type $FUNCSIG$iii) - i32.const 0 - i32.lt_s - if - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.const 1 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $5 - i32.store - else - local.get $5 - call $~lib/rt/pure/__release - br $break|1 - end + i32.store local.get $5 call $~lib/rt/pure/__release br $continue|1 + else + local.get $5 + call $~lib/rt/pure/__release end end end @@ -6058,14 +6050,13 @@ i32.add local.get $6 i32.store - local.get $6 - call $~lib/rt/pure/__release local.get $3 i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + local.get $6 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -6117,12 +6108,10 @@ end local.get $0 call $~lib/rt/pure/__retain - local.set $0 local.get $2 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release - local.get $0 return end local.get $3 @@ -6186,7 +6175,7 @@ local.get $0 i32.load offset=12 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $5 i32.lt_s @@ -6217,15 +6206,15 @@ i32.const 0 return else - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|0 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -6284,7 +6273,7 @@ (local $2 i32) call $~lib/array/Array.create> local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 512 i32.lt_s @@ -6302,13 +6291,13 @@ local.get $0 local.get $2 call $~lib/array/Array<~lib/array/Array>#__set - local.get $2 - call $~lib/rt/pure/__release local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + local.get $2 + call $~lib/rt/pure/__release + br $loop|0 end end local.get $1 @@ -6326,12 +6315,10 @@ local.get $1 i32.load i32.sub - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 ) (func $~lib/array/Array<~lib/string/String | null>#__get (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -6365,7 +6352,7 @@ local.get $0 i32.load offset=12 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $5 i32.lt_s @@ -6396,15 +6383,15 @@ i32.const 0 return else - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|0 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -6562,12 +6549,10 @@ i32.lt_s select call $~lib/util/string/compareImpl - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 return end local.get $0 @@ -6618,12 +6603,10 @@ local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 return end local.get $0 @@ -6644,12 +6627,10 @@ local.get $1 call $~lib/string/String.__eq i32.eqz - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 ) (func $std/array/isArraysEqual<~lib/string/String | null> (; 146 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -6687,7 +6668,7 @@ i32.const 1 return end - loop $repeat|0 + loop $loop|0 local.get $2 local.get $5 i32.lt_s @@ -6713,15 +6694,15 @@ i32.const 0 return else - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|0 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -6815,10 +6796,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 return end local.get $2 @@ -6853,12 +6832,10 @@ select local.get $1 call $~lib/string/String#concat - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 ) (func $std/array/createRandomString (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -6869,7 +6846,7 @@ i32.const 4248 call $~lib/rt/pure/__retain local.set $1 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $2 local.get $0 @@ -6898,15 +6875,15 @@ local.get $3 call $~lib/rt/pure/__release end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|0 + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + br $loop|0 end end local.get $1 @@ -6917,7 +6894,7 @@ (local $2 i32) call $~lib/array/Array.create<~lib/string/String> local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 400 i32.lt_s @@ -6931,13 +6908,13 @@ call $std/array/createRandomString local.tee $2 call $~lib/array/Array<~lib/array/Array>#__set - local.get $2 - call $~lib/rt/pure/__release local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + local.get $2 + call $~lib/rt/pure/__release + br $loop|0 end end local.get $1 @@ -7051,10 +7028,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 return end local.get $0 @@ -7069,10 +7044,8 @@ i32.load8_u select call $~lib/rt/pure/__retain - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 return end i32.const 4512 @@ -7093,7 +7066,7 @@ local.set $2 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $5 local.get $1 i32.lt_s @@ -7145,7 +7118,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -7180,12 +7153,10 @@ local.get $2 local.get $0 call $~lib/string/String#substring - local.set $0 i32.const 4512 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $0 return end i32.const 4512 @@ -7245,8 +7216,12 @@ loop $continue|0 local.get $1 i32.const 10 - i32.div_u + i32.rem_u local.set $3 + local.get $1 + i32.const 10 + i32.div_u + local.set $1 local.get $2 i32.const 1 i32.sub @@ -7255,14 +7230,11 @@ i32.shl local.get $0 i32.add - local.get $1 - i32.const 10 - i32.rem_u + local.get $3 i32.const 48 i32.add i32.store16 - local.get $3 - local.tee $1 + local.get $1 br_if $continue|0 end ) @@ -7326,20 +7298,18 @@ return end local.get $0 - block (result i32) - local.get $2 + local.get $2 + i32.const 0 + i32.lt_s + local.tee $1 + if i32.const 0 - i32.lt_s - local.tee $1 - if - i32.const 0 - local.get $2 - i32.sub - local.set $2 - end local.get $2 + i32.sub + local.set $2 end local.get $2 + local.get $2 call $~lib/util/number/decimalCount32 local.get $1 i32.add @@ -7373,10 +7343,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 return end local.get $0 @@ -7390,12 +7358,10 @@ call $~lib/util/number/itoa32 local.tee $0 call $~lib/rt/pure/__retain - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 return end local.get $1 @@ -7416,7 +7382,7 @@ local.set $2 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $6 local.get $3 i32.lt_s @@ -7454,7 +7420,7 @@ i32.const 1 i32.add local.set $6 - br $repeat|0 + br $loop|0 end end local.get $7 @@ -7475,12 +7441,10 @@ local.get $2 local.get $0 call $~lib/string/String#substring - local.set $0 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $0 return end local.get $1 @@ -7494,10 +7458,8 @@ local.get $0 local.get $1 call $~lib/array/Array#join_int - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/util/number/utoa32 (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -7567,10 +7529,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 return end local.get $0 @@ -7584,12 +7544,10 @@ call $~lib/util/number/utoa32 local.tee $0 call $~lib/rt/pure/__retain - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 return end local.get $1 @@ -7610,7 +7568,7 @@ local.set $2 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $6 local.get $3 i32.lt_s @@ -7648,7 +7606,7 @@ i32.const 1 i32.add local.set $6 - br $repeat|0 + br $loop|0 end end local.get $7 @@ -7669,12 +7627,10 @@ local.get $2 local.get $0 call $~lib/string/String#substring - local.set $0 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $0 return end local.get $1 @@ -7688,10 +7644,8 @@ local.get $0 local.get $1 call $~lib/array/Array#join_int - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/number/isFinite (; 165 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 @@ -7903,80 +7857,78 @@ i64.add local.tee $1 local.get $5 - i64.le_u - if - global.get $~lib/util/number/_K - local.get $4 - i32.add - global.set $~lib/util/number/_K - local.get $4 - i32.const 2 - i32.shl - local.get $13 - i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl - local.set $3 - local.get $6 + i64.gt_u + br_if $continue|0 + global.get $~lib/util/number/_K + local.get $4 + i32.add + global.set $~lib/util/number/_K + local.get $4 + i32.const 2 + i32.shl + local.get $13 + i32.add + i64.load32_u + local.get $10 + i64.extend_i32_s + i64.shl + local.set $3 + local.get $6 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $continue|2 i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $2 - i32.load16_u - local.set $4 - loop $continue|2 + local.get $9 + local.get $1 + i64.sub + local.get $1 + local.get $3 + i64.add + local.get $9 + i64.sub + i64.gt_u + local.get $1 + local.get $3 + i64.add + local.get $9 + i64.lt_u + select + i32.const 0 + local.get $5 + local.get $1 + i64.sub + local.get $3 + i64.ge_u + i32.const 0 + local.get $1 + local.get $9 + i64.lt_u + select + select + if + local.get $4 i32.const 1 - local.get $9 - local.get $1 - i64.sub + i32.sub + local.set $4 local.get $1 local.get $3 i64.add - local.get $9 - i64.sub - i64.gt_u - local.get $1 - local.get $3 - i64.add - local.get $9 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $3 - i64.ge_u - i32.const 0 - local.get $1 - local.get $9 - i64.lt_u - select - select - if - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $1 - local.get $3 - i64.add - local.set $1 - br $continue|2 - end + local.set $1 + br $continue|2 end - local.get $2 - local.get $4 - i32.store16 - local.get $6 - return end - br $continue|0 + local.get $2 + local.get $4 + i32.store16 + local.get $6 + return end end loop $continue|3 (result i32) @@ -8132,7 +8084,7 @@ i32.const 0 end if (result i32) - loop $repeat|0 + loop $loop|0 block $break|0 local.get $1 local.get $3 @@ -8149,7 +8101,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -8221,7 +8173,7 @@ i32.store i32.const 2 local.set $2 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $2 local.get $3 @@ -8238,7 +8190,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|1 + br $loop|1 end end local.get $1 @@ -8256,23 +8208,21 @@ i32.const 4 i32.add local.tee $0 - block (result i32) - local.get $3 - i32.const 1 - i32.sub - local.tee $2 + local.get $3 + i32.const 1 + i32.sub + local.tee $2 + i32.const 0 + i32.lt_s + local.tee $1 + if i32.const 0 - i32.lt_s - local.tee $1 - if - i32.const 0 - local.get $2 - i32.sub - local.set $2 - end local.get $2 + i32.sub + local.set $2 end local.get $2 + local.get $2 call $~lib/util/number/decimalCount32 i32.const 1 i32.add @@ -8314,23 +8264,21 @@ i32.const 4 i32.add local.tee $2 - block (result i32) - local.get $3 - i32.const 1 - i32.sub - local.tee $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $3 + if i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end local.get $0 + i32.sub + local.set $0 end local.get $0 + local.get $0 call $~lib/util/number/decimalCount32 i32.const 1 i32.add @@ -8688,10 +8636,8 @@ local.get $1 local.get $2 call $~lib/string/String#substring - local.set $2 local.get $1 call $~lib/rt/tlsf/__free - local.get $2 ) (func $~lib/util/number/dtoa_stream (; 170 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) (local $3 i32) @@ -8781,10 +8727,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 i32.const 4896 call $~lib/rt/pure/__release - local.get $0 return end local.get $0 @@ -8798,12 +8742,10 @@ call $~lib/util/number/dtoa local.tee $0 call $~lib/rt/pure/__retain - local.set $1 local.get $0 call $~lib/rt/pure/__release i32.const 4896 call $~lib/rt/pure/__release - local.get $1 return end i32.const 4896 @@ -8824,7 +8766,7 @@ local.set $1 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $5 local.get $2 i32.lt_s @@ -8862,7 +8804,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 + br $loop|0 end end local.get $6 @@ -8883,12 +8825,10 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.set $0 i32.const 4896 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $0 return end i32.const 4896 @@ -8916,10 +8856,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 return end local.get $0 @@ -8931,10 +8869,8 @@ local.get $7 i32.load call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 return end local.get $1 @@ -8946,7 +8882,7 @@ i32.const 1 i32.add local.set $5 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $2 local.get $5 @@ -8981,7 +8917,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end end i32.const 0 @@ -8999,7 +8935,7 @@ local.set $3 i32.const 0 local.set $5 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $5 local.get $6 @@ -9062,7 +8998,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 + br $loop|1 end end local.get $0 @@ -9109,10 +9045,8 @@ local.get $0 local.get $1 call $~lib/array/Array<~lib/string/String>#join_str - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 ) (func $std/array/Ref#constructor (; 174 ;) (type $FUNCSIG$i) (result i32) i32.const 0 @@ -9142,10 +9076,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 return end local.get $0 @@ -9156,10 +9088,8 @@ if i32.const 6248 call $~lib/rt/pure/__retain - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 return end i32.const 4512 @@ -9180,7 +9110,7 @@ local.set $2 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $6 local.get $3 i32.lt_s @@ -9239,46 +9169,42 @@ i32.const 1 i32.add local.set $6 - br $repeat|0 + br $loop|0 end end - block (result i32) - local.get $3 - i32.const 2 - i32.shl - local.get $7 - i32.add - i32.load - if - local.get $1 - i32.const 1 - i32.shl - local.get $2 - i32.add - i32.const 6248 - i32.const 30 - call $~lib/memory/memory.copy - local.get $1 - i32.const 15 - i32.add - local.set $1 - end - local.get $8 + local.get $3 + i32.const 2 + i32.shl + local.get $7 + i32.add + i32.load + if local.get $1 - i32.gt_s + i32.const 1 + i32.shl + local.get $2 + i32.add + i32.const 6248 + i32.const 30 + call $~lib/memory/memory.copy + local.get $1 + i32.const 15 + i32.add + local.set $1 end + local.get $8 + local.get $1 + i32.gt_s if local.get $2 local.get $1 call $~lib/string/String#substring - local.set $4 i32.const 4512 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $4 return end i32.const 4512 @@ -9367,10 +9293,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 return end local.get $0 @@ -9384,12 +9308,10 @@ call $~lib/util/number/itoa32 local.tee $0 call $~lib/rt/pure/__retain - local.set $1 local.get $0 call $~lib/rt/pure/__release i32.const 4512 call $~lib/rt/pure/__release - local.get $1 return end i32.const 4512 @@ -9410,7 +9332,7 @@ local.set $1 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $5 local.get $2 i32.lt_s @@ -9446,7 +9368,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 + br $loop|0 end end local.get $6 @@ -9465,12 +9387,10 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.set $0 i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $0 return end i32.const 4512 @@ -9527,10 +9447,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 return end local.get $0 @@ -9544,12 +9462,10 @@ call $~lib/util/number/utoa32 local.tee $0 call $~lib/rt/pure/__retain - local.set $1 local.get $0 call $~lib/rt/pure/__release i32.const 4512 call $~lib/rt/pure/__release - local.get $1 return end i32.const 4512 @@ -9570,7 +9486,7 @@ local.set $1 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $5 local.get $2 i32.lt_s @@ -9608,7 +9524,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 + br $loop|0 end end local.get $6 @@ -9629,12 +9545,10 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.set $0 i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $0 return end i32.const 4512 @@ -9690,12 +9604,17 @@ select ) (func $~lib/util/number/utoa_simple (; 182 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i64) + (local $3 i32) loop $continue|0 local.get $1 i64.const 10 - i64.div_u + i64.rem_u + i32.wrap_i64 local.set $3 + local.get $1 + i64.const 10 + i64.div_u + local.set $1 local.get $2 i32.const 1 i32.sub @@ -9704,15 +9623,11 @@ i32.shl local.get $0 i32.add - local.get $1 - i64.const 10 - i64.rem_u - i32.wrap_i64 + local.get $3 i32.const 48 i32.add i32.store16 - local.get $3 - local.tee $1 + local.get $1 i64.const 0 i64.ne br_if $continue|0 @@ -9822,10 +9737,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 return end local.get $0 @@ -9839,12 +9752,10 @@ call $~lib/util/number/utoa64 local.tee $0 call $~lib/rt/pure/__retain - local.set $1 local.get $0 call $~lib/rt/pure/__release i32.const 4512 call $~lib/rt/pure/__release - local.get $1 return end i32.const 4512 @@ -9865,7 +9776,7 @@ local.set $1 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $5 local.get $2 i32.lt_s @@ -9903,7 +9814,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 + br $loop|0 end end local.get $6 @@ -9924,12 +9835,10 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.set $0 i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $0 return end i32.const 4512 @@ -9948,21 +9857,19 @@ call $~lib/rt/pure/__retain return end - block (result i32) - local.get $0 + local.get $0 + i64.const 0 + i64.lt_s + local.tee $1 + if i64.const 0 - i64.lt_s - local.tee $1 - if - i64.const 0 - local.get $0 - i64.sub - local.set $0 - end local.get $0 - i64.const 4294967295 - i64.le_u + i64.sub + local.set $0 end + local.get $0 + i64.const 4294967295 + i64.le_u if local.get $0 i32.wrap_i64 @@ -10021,21 +9928,19 @@ i32.const 1 return end - block (result i32) - local.get $2 + local.get $2 + i64.const 0 + i64.lt_s + local.tee $1 + if i64.const 0 - i64.lt_s - local.tee $1 - if - i64.const 0 - local.get $2 - i64.sub - local.set $2 - end local.get $2 - i64.const 4294967295 - i64.le_u + i64.sub + local.set $2 end + local.get $2 + i64.const 4294967295 + i64.le_u if local.get $2 i32.wrap_i64 @@ -10086,10 +9991,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 return end local.get $0 @@ -10103,12 +10006,10 @@ call $~lib/util/number/itoa64 local.tee $0 call $~lib/rt/pure/__retain - local.set $1 local.get $0 call $~lib/rt/pure/__release i32.const 4512 call $~lib/rt/pure/__release - local.get $1 return end i32.const 4512 @@ -10129,7 +10030,7 @@ local.set $1 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $5 local.get $2 i32.lt_s @@ -10167,7 +10068,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 + br $loop|0 end end local.get $6 @@ -10188,12 +10089,10 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.set $0 i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $0 return end i32.const 4512 @@ -10227,10 +10126,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 return end i32.const 4248 @@ -10266,17 +10163,15 @@ i32.const 4248 call $~lib/rt/pure/__retain end - local.set $1 i32.const 4512 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $1 return end - loop $repeat|0 + loop $loop|0 local.get $5 local.get $3 i32.lt_s @@ -10348,7 +10243,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -10448,10 +10343,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 return end local.get $0 @@ -10465,12 +10358,10 @@ call $~lib/util/number/utoa32 local.tee $0 call $~lib/rt/pure/__retain - local.set $1 local.get $0 call $~lib/rt/pure/__release i32.const 4512 call $~lib/rt/pure/__release - local.get $1 return end i32.const 4512 @@ -10491,7 +10382,7 @@ local.set $1 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $5 local.get $2 i32.lt_s @@ -10527,7 +10418,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 + br $loop|0 end end local.get $6 @@ -10546,12 +10437,10 @@ local.get $1 local.get $0 call $~lib/string/String#substring - local.set $0 i32.const 4512 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $0 return end i32.const 4512 @@ -10564,10 +10453,8 @@ drop local.get $0 call $~lib/array/Array#join_int - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/array/Array<~lib/array/Array>#join_arr (; 194 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -10591,10 +10478,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 return end i32.const 4248 @@ -10629,17 +10514,15 @@ i32.const 4248 call $~lib/rt/pure/__retain end - local.set $1 i32.const 4512 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $1 return end - loop $repeat|0 + loop $loop|0 local.get $5 local.get $3 i32.lt_s @@ -10710,7 +10593,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -10781,10 +10664,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 return end i32.const 4248 @@ -10820,17 +10701,15 @@ i32.const 4248 call $~lib/rt/pure/__retain end - local.set $1 i32.const 4512 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $1 return end - loop $repeat|0 + loop $loop|0 local.get $5 local.get $3 i32.lt_s @@ -10902,7 +10781,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -10958,10 +10837,8 @@ drop local.get $0 call $~lib/array/Array<~lib/array/Array>#join_arr - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join_arr (; 197 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -10985,10 +10862,8 @@ if i32.const 4248 call $~lib/rt/pure/__retain - local.set $0 i32.const 4512 call $~lib/rt/pure/__release - local.get $0 return end i32.const 4248 @@ -11023,17 +10898,15 @@ i32.const 4248 call $~lib/rt/pure/__retain end - local.set $1 i32.const 4512 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $1 return end - loop $repeat|0 + loop $loop|0 local.get $5 local.get $3 i32.lt_s @@ -11104,7 +10977,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -11236,7 +11109,6 @@ call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $1 - local.set $2 local.get $1 call $~lib/array/Array.isArray if @@ -11276,7 +11148,6 @@ call $~lib/builtins/abort unreachable end - local.get $2 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release @@ -14820,7 +14691,7 @@ end i32.const 0 local.set $2 - loop $repeat|0 + loop $loop|0 local.get $2 i32.const 100 i32.lt_s @@ -14832,7 +14703,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end end global.get $std/array/arr @@ -16493,7 +16364,6 @@ call $~lib/rt/__allocArray local.tee $26 i32.load offset=4 - local.set $8 i32.const 1 i32.const 2 i32.const 24 @@ -16510,7 +16380,6 @@ local.tee $27 call $~lib/rt/pure/__retain i32.store - local.get $8 local.get $1 call $~lib/rt/pure/__retain i32.store diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index daa41504..8ed257a6 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -361,85 +361,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -495,20 +487,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -546,20 +536,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -570,14 +558,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -730,24 +716,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -761,27 +745,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -790,36 +772,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (; 8 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -857,12 +835,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -959,15 +935,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -1027,75 +1001,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -1103,8 +1070,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1234,18 +1200,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1278,18 +1242,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1301,29 +1263,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1341,7 +1280,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1462,34 +1420,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1715,32 +1669,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1753,50 +1704,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1861,22 +1813,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1908,338 +1856,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2247,15 +1935,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2263,15 +1951,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2279,10 +1967,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2298,306 +1986,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2605,148 +2456,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2754,76 +2573,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2831,40 +2634,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2872,22 +2667,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2948,94 +2739,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -3053,54 +2839,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -3112,9 +2857,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3373,44 +3162,40 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 - block (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 local.tee $4 - block (result i32) - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - drop - local.get $4 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if local.get $5 + call $~lib/rt/pure/__retain + drop + local.get $4 + call $~lib/rt/pure/__release end + local.get $5 i32.store local.get $0 local.get $3 @@ -3838,36 +3623,37 @@ local.get $3 i32.const 32 i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 end + unreachable end end ) @@ -4026,7 +3812,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s @@ -4053,8 +3839,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -4128,7 +3913,7 @@ end local.set $3 block $break|0 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $3 i32.lt_s @@ -4145,8 +3930,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -4231,7 +4015,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s @@ -4258,8 +4042,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -4344,20 +4127,18 @@ local.get $1 return end - block $~lib/rt/tlsf/GETRIGHT|inlined.4 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $6 local.get $6 i32.load @@ -4658,15 +4439,11 @@ if local.get $1 call $~lib/rt/pure/__release - block - i32.const 24 - i32.const 488 - i32.const 217 - i32.const 59 - call $~lib/builtins/abort - unreachable - unreachable - end + i32.const 24 + i32.const 488 + i32.const 217 + i32.const 59 + call $~lib/builtins/abort unreachable end local.get $4 @@ -4878,7 +4655,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s @@ -4905,8 +4682,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -5027,28 +4803,29 @@ local.get $2 local.get $3 i32.lt_u - if - local.get $2 - i32.load - local.set $4 - local.get $2 - local.get $3 - i32.load - i32.store - local.get $3 - local.get $4 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $3 - i32.const 4 - i32.sub - local.set $3 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $2 + local.get $3 + i32.load + i32.store + local.get $3 + local.get $4 + i32.store + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $3 + i32.const 4 + i32.sub + local.set $3 + br $continue|0 end + unreachable end end local.get $0 @@ -5100,26 +4877,27 @@ local.get $2 local.get $3 i32.lt_s + i32.eqz + br_if $break|0 + local.get $6 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.eq if - local.get $6 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $continue|0 + return end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $continue|0 end + unreachable end i32.const -1 ) @@ -5294,14 +5072,12 @@ (local $4 i32) (local $5 i32) block $break|0 - block - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - end - loop $repeat|0 + i32.const 0 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + loop $loop|0 local.get $2 local.get $3 local.tee $4 @@ -5315,21 +5091,19 @@ i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $2 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiii) if local.get $2 return @@ -5338,8 +5112,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -5436,14 +5209,12 @@ (local $4 i32) (local $5 i32) block $break|0 - block - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - end - loop $repeat|0 + i32.const 0 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + loop $loop|0 local.get $2 local.get $3 local.tee $4 @@ -5457,21 +5228,19 @@ i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $2 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiii) i32.const 0 i32.ne i32.eqz @@ -5483,8 +5252,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -5568,14 +5336,12 @@ (local $4 i32) (local $5 i32) block $break|0 - block - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - end - loop $repeat|0 + i32.const 0 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + loop $loop|0 local.get $2 local.get $3 local.tee $4 @@ -5589,21 +5355,19 @@ i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $2 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiii) if i32.const 1 return @@ -5612,8 +5376,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -5695,14 +5458,12 @@ (local $4 i32) (local $5 i32) block $break|0 - block - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - end - loop $repeat|0 + i32.const 0 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + loop $loop|0 local.get $2 local.get $3 local.tee $4 @@ -5733,8 +5494,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -5791,7 +5551,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 i32.const 4 i32.lt_s @@ -5804,15 +5564,14 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end block $break|1 i32.const 0 local.set $3 - loop $repeat|1 + loop $loop|1 local.get $3 i32.const 100 i32.lt_s @@ -5828,15 +5587,14 @@ i32.const 1 i32.add local.set $3 - br $repeat|1 - unreachable + br $loop|1 end unreachable end block $break|2 i32.const 0 local.set $3 - loop $repeat|2 + loop $loop|2 local.get $3 i32.const 100 i32.lt_s @@ -5849,15 +5607,14 @@ i32.const 1 i32.add local.set $3 - br $repeat|2 - unreachable + br $loop|2 end unreachable end block $break|3 i32.const 0 local.set $3 - loop $repeat|3 + loop $loop|3 local.get $3 i32.const 100 i32.lt_s @@ -5873,8 +5630,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -5935,7 +5691,7 @@ block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 local.get $2 local.tee $6 @@ -5949,21 +5705,19 @@ i32.lt_s i32.eqz br_if $break|0 - block (result f32) - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$fiii) - end + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$fiii) local.set $8 local.get $4 local.get $5 @@ -5976,8 +5730,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6057,7 +5810,7 @@ block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 local.get $2 local.tee $6 @@ -6071,21 +5824,19 @@ i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiii) local.set $6 local.get $4 local.get $5 @@ -6098,8 +5849,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6165,14 +5915,12 @@ call $~lib/rt/pure/__retain local.set $2 block $break|0 - block - i32.const 0 - local.set $3 - local.get $0 - i32.load offset=12 - local.set $4 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $0 + i32.load offset=12 + local.set $4 + loop $loop|0 local.get $3 local.get $4 local.tee $5 @@ -6194,15 +5942,13 @@ i32.add i32.load local.set $5 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $3 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $3 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiii) if local.get $2 local.get $5 @@ -6213,8 +5959,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6300,14 +6045,12 @@ local.get $2 local.set $3 block $break|0 - block - i32.const 0 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - end - loop $repeat|0 + i32.const 0 + local.set $4 + local.get $0 + i32.load offset=12 + local.set $5 + loop $loop|0 local.get $4 local.get $5 local.tee $6 @@ -6321,29 +6064,26 @@ i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $0 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $4 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $4 i32.const 1 i32.add local.set $4 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6389,14 +6129,12 @@ local.get $2 local.set $3 block $break|0 - block - i32.const 0 - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - end - loop $repeat|0 + i32.const 0 + local.set $4 + local.get $0 + i32.load offset=12 + local.set $5 + loop $loop|0 local.get $4 local.get $5 local.tee $6 @@ -6410,29 +6148,26 @@ i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $0 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $4 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $4 i32.const 1 i32.add local.set $4 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6526,35 +6261,32 @@ i32.const 1 i32.sub local.set $4 - loop $repeat|0 + loop $loop|0 local.get $4 i32.const 0 i32.ge_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $0 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $4 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $4 i32.const 1 i32.sub local.set $4 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6602,35 +6334,32 @@ i32.const 1 i32.sub local.set $4 - loop $repeat|0 + loop $loop|0 local.get $4 i32.const 0 i32.ge_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $0 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - local.get $0 - local.get $1 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $0 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $4 + local.get $0 + local.get $1 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $4 i32.const 1 i32.sub local.set $4 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6802,7 +6531,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $1 i32.lt_s @@ -6824,47 +6553,44 @@ local.get $5 i32.const 0 i32.ge_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$iff) + i32.const 0 + i32.lt_s if local.get $0 local.get $5 + local.tee $7 + i32.const 1 + i32.sub + local.set $5 + local.get $7 + i32.const 1 + i32.add i32.const 2 i32.shl i32.add - f32.load - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iff) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - f32.store - else - br $break|1 - end - br $continue|1 + local.get $6 + f32.store + else + br $break|1 end + br $continue|1 end + unreachable end local.get $0 local.get $5 @@ -6879,8 +6605,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6915,7 +6640,7 @@ i32.const 1 i32.sub local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 0 i32.gt_s @@ -6945,14 +6670,15 @@ i32.const 1 i32.and i32.eq - if - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $6 + i32.const 1 + i32.shr_s + local.set $6 + br $continue|1 end + unreachable end local.get $6 i32.const 1 @@ -6972,14 +6698,12 @@ i32.add f32.load local.set $9 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $9 - local.get $2 - call_indirect (type $FUNCSIG$iff) - end + i32.const 2 + global.set $~lib/argc + local.get $8 + local.get $9 + local.get $2 + call_indirect (type $FUNCSIG$iff) i32.const 0 i32.lt_s if @@ -7024,8 +6748,7 @@ i32.const 1 i32.sub local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7034,7 +6757,7 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|2 + loop $loop|2 local.get $7 i32.const 2 i32.ge_s @@ -7083,87 +6806,86 @@ local.tee $5 local.get $7 i32.lt_s - if - local.get $5 - local.set $6 - br $continue|3 - end + i32.eqz + br_if $break|3 + local.get $5 + local.set $6 + br $continue|3 end + unreachable end block $break|4 loop $continue|4 local.get $6 i32.const 0 i32.gt_s + i32.eqz + br_if $break|4 + local.get $0 + f32.load + local.set $9 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $8 + i32.const 2 + global.set $~lib/argc + local.get $9 + local.get $8 + local.get $2 + call_indirect (type $FUNCSIG$iff) + i32.const 0 + i32.lt_s if - local.get $0 - f32.load - local.set $9 + local.get $4 + local.get $6 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $6 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $6 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store local.get $0 local.get $6 i32.const 2 i32.shl i32.add - f32.load - local.set $8 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $9 - local.get $8 - local.get $2 - call_indirect (type $FUNCSIG$iff) - end - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $6 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $9 - f32.store - local.get $0 - local.get $8 - f32.store - end - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|4 + local.get $9 + f32.store + local.get $0 + local.get $8 + f32.store end + local.get $6 + i32.const 1 + i32.shr_s + local.set $6 + br $continue|4 end + unreachable end local.get $7 i32.const 1 i32.sub local.set $7 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -7212,14 +6934,12 @@ local.get $3 f32.load local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$iff) - end + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + local.get $1 + call_indirect (type $FUNCSIG$iff) i32.const 0 i32.lt_s if @@ -7234,27 +6954,25 @@ call $~lib/rt/pure/__retain return end - block $~lib/util/sort/SORT|inlined.0 - local.get $3 - local.set $8 - local.get $2 - local.set $7 - local.get $1 - local.set $6 + local.get $3 + local.set $8 + local.get $2 + local.set $7 + local.get $1 + local.set $6 + local.get $7 + i32.const 256 + i32.lt_s + if + local.get $8 local.get $7 - i32.const 256 - i32.lt_s - if - local.get $8 - local.get $7 - local.get $6 - call $~lib/util/sort/insertionSort - else - local.get $8 - local.get $7 - local.get $6 - call $~lib/util/sort/weakHeapSort - end + local.get $6 + call $~lib/util/sort/insertionSort + else + local.get $8 + local.get $7 + local.get $6 + call $~lib/util/sort/weakHeapSort end local.get $0 call $~lib/rt/pure/__retain @@ -7362,13 +7080,13 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 + local.get $3 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 block $continue|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 local.get $0 local.get $3 call $~lib/array/Array#__get @@ -7403,8 +7121,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7425,7 +7142,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $1 i32.lt_s @@ -7447,47 +7164,44 @@ local.get $5 i32.const 0 i32.ge_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$idd) + i32.const 0 + i32.lt_s if local.get $0 local.get $5 + local.tee $7 + i32.const 1 + i32.sub + local.set $5 + local.get $7 + i32.const 1 + i32.add i32.const 3 i32.shl i32.add - f64.load - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - else - br $break|1 - end - br $continue|1 + local.get $6 + f64.store + else + br $break|1 end + br $continue|1 end + unreachable end local.get $0 local.get $5 @@ -7502,8 +7216,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7538,7 +7251,7 @@ i32.const 1 i32.sub local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 0 i32.gt_s @@ -7568,14 +7281,15 @@ i32.const 1 i32.and i32.eq - if - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $6 + i32.const 1 + i32.shr_s + local.set $6 + br $continue|1 end + unreachable end local.get $6 i32.const 1 @@ -7595,14 +7309,12 @@ i32.add f64.load local.set $9 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $9 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end + i32.const 2 + global.set $~lib/argc + local.get $8 + local.get $9 + local.get $2 + call_indirect (type $FUNCSIG$idd) i32.const 0 i32.lt_s if @@ -7647,8 +7359,7 @@ i32.const 1 i32.sub local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7657,7 +7368,7 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|2 + loop $loop|2 local.get $7 i32.const 2 i32.ge_s @@ -7706,87 +7417,86 @@ local.tee $5 local.get $7 i32.lt_s - if - local.get $5 - local.set $6 - br $continue|3 - end + i32.eqz + br_if $break|3 + local.get $5 + local.set $6 + br $continue|3 end + unreachable end block $break|4 loop $continue|4 local.get $6 i32.const 0 i32.gt_s + i32.eqz + br_if $break|4 + local.get $0 + f64.load + local.set $9 + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + i32.const 2 + global.set $~lib/argc + local.get $9 + local.get $8 + local.get $2 + call_indirect (type $FUNCSIG$idd) + i32.const 0 + i32.lt_s if - local.get $0 - f64.load - local.set $9 + local.get $4 + local.get $6 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $6 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $6 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store local.get $0 local.get $6 i32.const 3 i32.shl i32.add - f64.load - local.set $8 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $9 - local.get $8 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $6 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - local.get $9 - f64.store - local.get $0 - local.get $8 - f64.store - end - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|4 + local.get $9 + f64.store + local.get $0 + local.get $8 + f64.store end + local.get $6 + i32.const 1 + i32.shr_s + local.set $6 + br $continue|4 end + unreachable end local.get $7 i32.const 1 i32.sub local.set $7 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -7835,14 +7545,12 @@ local.get $3 f64.load local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$idd) - end + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + local.get $1 + call_indirect (type $FUNCSIG$idd) i32.const 0 i32.lt_s if @@ -7857,27 +7565,25 @@ call $~lib/rt/pure/__retain return end - block $~lib/util/sort/SORT|inlined.0 - local.get $3 - local.set $8 - local.get $2 - local.set $7 - local.get $1 - local.set $6 + local.get $3 + local.set $8 + local.get $2 + local.set $7 + local.get $1 + local.set $6 + local.get $7 + i32.const 256 + i32.lt_s + if + local.get $8 local.get $7 - i32.const 256 - i32.lt_s - if - local.get $8 - local.get $7 - local.get $6 - call $~lib/util/sort/insertionSort - else - local.get $8 - local.get $7 - local.get $6 - call $~lib/util/sort/weakHeapSort - end + local.get $6 + call $~lib/util/sort/insertionSort + else + local.get $8 + local.get $7 + local.get $6 + call $~lib/util/sort/weakHeapSort end local.get $0 call $~lib/rt/pure/__retain @@ -8017,13 +7723,13 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 + local.get $3 + local.get $2 + i32.lt_s + i32.eqz + br_if $break|0 block $continue|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 local.get $0 local.get $3 call $~lib/array/Array#__get @@ -8058,8 +7764,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -8080,7 +7785,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $1 i32.lt_s @@ -8102,47 +7807,44 @@ local.get $5 i32.const 0 i32.ge_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$iii) + i32.const 0 + i32.lt_s if local.get $0 local.get $5 + local.tee $7 + i32.const 1 + i32.sub + local.set $5 + local.get $7 + i32.const 1 + i32.add i32.const 2 i32.shl i32.add - i32.load - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - else - br $break|1 - end - br $continue|1 + local.get $6 + i32.store + else + br $break|1 end + br $continue|1 end + unreachable end local.get $0 local.get $5 @@ -8157,8 +7859,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -8193,7 +7894,7 @@ i32.const 1 i32.sub local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 0 i32.gt_s @@ -8223,14 +7924,15 @@ i32.const 1 i32.and i32.eq - if - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $6 + i32.const 1 + i32.shr_s + local.set $6 + br $continue|1 end + unreachable end local.get $6 i32.const 1 @@ -8250,14 +7952,12 @@ i32.add i32.load local.set $9 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $9 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + local.get $8 + local.get $9 + local.get $2 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.lt_s if @@ -8302,8 +8002,7 @@ i32.const 1 i32.sub local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -8312,7 +8011,7 @@ i32.const 1 i32.sub local.set $9 - loop $repeat|2 + loop $loop|2 local.get $9 i32.const 2 i32.ge_s @@ -8361,87 +8060,86 @@ local.tee $6 local.get $9 i32.lt_s - if - local.get $6 - local.set $7 - br $continue|3 - end + i32.eqz + br_if $break|3 + local.get $6 + local.set $7 + br $continue|3 end + unreachable end block $break|4 loop $continue|4 local.get $7 i32.const 0 i32.gt_s + i32.eqz + br_if $break|4 + local.get $0 + i32.load + local.set $8 + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + i32.const 2 + global.set $~lib/argc + local.get $8 + local.get $5 + local.get $2 + call_indirect (type $FUNCSIG$iii) + i32.const 0 + i32.lt_s if - local.get $0 + local.get $4 + local.get $7 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $7 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add i32.load - local.set $8 + i32.const 1 + local.get $7 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store local.get $0 local.get $7 i32.const 2 i32.shl i32.add - i32.load - local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $5 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $7 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - local.get $0 - local.get $5 - i32.store - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $continue|4 + local.get $8 + i32.store + local.get $0 + local.get $5 + i32.store end + local.get $7 + i32.const 1 + i32.shr_s + local.set $7 + br $continue|4 end + unreachable end local.get $9 i32.const 1 i32.sub local.set $9 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -8488,14 +8186,12 @@ local.get $3 i32.load local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.lt_s if @@ -8510,27 +8206,25 @@ call $~lib/rt/pure/__retain return end - block $~lib/util/sort/SORT|inlined.0 - local.get $3 - local.set $6 - local.get $2 - local.set $5 - local.get $1 - local.set $4 + local.get $3 + local.set $6 + local.get $2 + local.set $5 + local.get $1 + local.set $4 + local.get $5 + i32.const 256 + i32.lt_s + if + local.get $6 local.get $5 - i32.const 256 - i32.lt_s - if - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/sort/insertionSort - else - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/sort/weakHeapSort - end + local.get $4 + call $~lib/util/sort/insertionSort + else + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/sort/weakHeapSort end local.get $0 call $~lib/rt/pure/__retain @@ -8568,7 +8262,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $1 i32.lt_s @@ -8590,47 +8284,44 @@ local.get $5 i32.const 0 i32.ge_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$iii) + i32.const 0 + i32.lt_s if local.get $0 local.get $5 + local.tee $7 + i32.const 1 + i32.sub + local.set $5 + local.get $7 + i32.const 1 + i32.add i32.const 2 i32.shl i32.add - i32.load - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - else - br $break|1 - end - br $continue|1 + local.get $6 + i32.store + else + br $break|1 end + br $continue|1 end + unreachable end local.get $0 local.get $5 @@ -8645,8 +8336,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -8681,7 +8371,7 @@ i32.const 1 i32.sub local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 0 i32.gt_s @@ -8711,14 +8401,15 @@ i32.const 1 i32.and i32.eq - if - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $6 + i32.const 1 + i32.shr_s + local.set $6 + br $continue|1 end + unreachable end local.get $6 i32.const 1 @@ -8738,14 +8429,12 @@ i32.add i32.load local.set $9 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $9 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + local.get $8 + local.get $9 + local.get $2 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.lt_s if @@ -8790,8 +8479,7 @@ i32.const 1 i32.sub local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -8800,7 +8488,7 @@ i32.const 1 i32.sub local.set $9 - loop $repeat|2 + loop $loop|2 local.get $9 i32.const 2 i32.ge_s @@ -8849,87 +8537,86 @@ local.tee $6 local.get $9 i32.lt_s - if - local.get $6 - local.set $7 - br $continue|3 - end + i32.eqz + br_if $break|3 + local.get $6 + local.set $7 + br $continue|3 end + unreachable end block $break|4 loop $continue|4 local.get $7 i32.const 0 i32.gt_s + i32.eqz + br_if $break|4 + local.get $0 + i32.load + local.set $8 + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + i32.const 2 + global.set $~lib/argc + local.get $8 + local.get $5 + local.get $2 + call_indirect (type $FUNCSIG$iii) + i32.const 0 + i32.lt_s if - local.get $0 + local.get $4 + local.get $7 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $7 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add i32.load - local.set $8 + i32.const 1 + local.get $7 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store local.get $0 local.get $7 i32.const 2 i32.shl i32.add - i32.load - local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $5 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $7 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - local.get $0 - local.get $5 - i32.store - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $continue|4 + local.get $8 + i32.store + local.get $0 + local.get $5 + i32.store end + local.get $7 + i32.const 1 + i32.shr_s + local.set $7 + br $continue|4 end + unreachable end local.get $9 i32.const 1 i32.sub local.set $9 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -8976,14 +8663,12 @@ local.get $3 i32.load local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.lt_s if @@ -8998,27 +8683,25 @@ call $~lib/rt/pure/__retain return end - block $~lib/util/sort/SORT|inlined.0 - local.get $3 - local.set $6 - local.get $2 - local.set $5 - local.get $1 - local.set $4 + local.get $3 + local.set $6 + local.get $2 + local.set $5 + local.get $1 + local.set $4 + local.get $5 + i32.const 256 + i32.lt_s + if + local.get $6 local.get $5 - i32.const 256 - i32.lt_s - if - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/sort/insertionSort - else - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/sort/weakHeapSort - end + local.get $4 + call $~lib/util/sort/insertionSort + else + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/sort/weakHeapSort end local.get $0 call $~lib/rt/pure/__retain @@ -9091,7 +8774,7 @@ block $break|0 i32.const 0 local.set $2 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $0 i32.lt_s @@ -9109,8 +8792,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -9182,7 +8864,7 @@ block $break|0 i32.const 0 local.set $2 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $0 i32.lt_s @@ -9200,8 +8882,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -9220,33 +8901,29 @@ call $~lib/rt/pure/__retain drop block $break|0 - block - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array#get:length - local.set $3 - end - loop $repeat|0 + i32.const 1 + local.set $2 + local.get $0 + call $~lib/array/Array#get:length + local.set $3 + loop $loop|0 local.get $2 local.get $3 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + local.get $0 + local.get $2 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.gt_s if @@ -9261,8 +8938,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -9405,15 +9081,11 @@ if local.get $2 call $~lib/rt/pure/__release - block - i32.const 4040 - i32.const 488 - i32.const 121 - i32.const 38 - call $~lib/builtins/abort - unreachable - unreachable - end + i32.const 4040 + i32.const 488 + i32.const 121 + i32.const 38 + call $~lib/builtins/abort unreachable end local.get $0 @@ -9449,7 +9121,7 @@ block $break|0 i32.const 0 local.set $2 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $0 i32.lt_s @@ -9470,14 +9142,13 @@ local.get $2 local.get $3 call $~lib/array/Array<~lib/array/Array>#__set - local.get $3 - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + local.get $3 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -9514,7 +9185,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $1 i32.lt_s @@ -9537,52 +9208,49 @@ local.get $5 i32.const 0 i32.ge_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/pure/__retain + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$iii) + i32.const 0 + i32.lt_s if local.get $0 local.get $5 + local.tee $7 + i32.const 1 + i32.sub + local.set $5 + local.get $7 + i32.const 1 + i32.add i32.const 2 i32.shl i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - else - local.get $6 - call $~lib/rt/pure/__release - br $break|1 - end + local.get $6 + i32.store + else local.get $6 call $~lib/rt/pure/__release - br $continue|1 + br $break|1 end + local.get $6 + call $~lib/rt/pure/__release + br $continue|1 end + unreachable end local.get $0 local.get $5 @@ -9593,14 +9261,13 @@ i32.add local.get $4 i32.store - local.get $4 - call $~lib/rt/pure/__release local.get $3 i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + local.get $4 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -9637,14 +9304,12 @@ i32.load call $~lib/rt/pure/__retain local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.lt_s if @@ -9665,18 +9330,16 @@ local.get $6 return end - block $~lib/util/sort/SORT<~lib/array/Array>|inlined.0 - local.get $3 - local.set $5 - local.get $2 - local.set $4 - local.get $1 - local.set $6 - local.get $5 - local.get $4 - local.get $6 - call $~lib/util/sort/insertionSort<~lib/array/Array> - end + local.get $3 + local.set $5 + local.get $2 + local.set $4 + local.get $1 + local.set $6 + local.get $5 + local.get $4 + local.get $6 + call $~lib/util/sort/insertionSort<~lib/array/Array> local.get $0 call $~lib/rt/pure/__retain ) @@ -9735,35 +9398,31 @@ call $~lib/rt/pure/__retain drop block $break|0 - block - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array<~lib/array/Array>#get:length - local.set $3 - end - loop $repeat|0 + i32.const 1 + local.set $2 + local.get $0 + call $~lib/array/Array<~lib/array/Array>#get:length + local.set $3 + loop $loop|0 local.get $2 local.get $3 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/array/Array>#__get - local.tee $4 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/array/Array>#__get - local.tee $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + local.get $0 + local.get $2 + i32.const 1 + i32.sub + call $~lib/array/Array<~lib/array/Array>#__get + local.tee $4 + local.get $0 + local.get $2 + call $~lib/array/Array<~lib/array/Array>#__get + local.tee $5 + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.gt_s if @@ -9778,16 +9437,15 @@ local.get $6 return end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -9912,15 +9570,11 @@ if local.get $2 call $~lib/rt/pure/__release - block - i32.const 4040 - i32.const 488 - i32.const 121 - i32.const 38 - call $~lib/builtins/abort - unreachable - unreachable - end + i32.const 4040 + i32.const 488 + i32.const 121 + i32.const 38 + call $~lib/builtins/abort unreachable end local.get $0 @@ -9956,7 +9610,7 @@ block $break|0 i32.const 0 local.set $2 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $0 i32.lt_s @@ -9973,14 +9627,13 @@ call $std/array/Proxy#constructor local.tee $3 call $~lib/array/Array>#__set - local.get $3 - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + local.get $3 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -10015,7 +9668,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $1 i32.lt_s @@ -10038,52 +9691,49 @@ local.get $5 i32.const 0 i32.ge_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/pure/__retain + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$iii) + i32.const 0 + i32.lt_s if local.get $0 local.get $5 + local.tee $7 + i32.const 1 + i32.sub + local.set $5 + local.get $7 + i32.const 1 + i32.add i32.const 2 i32.shl i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - else - local.get $6 - call $~lib/rt/pure/__release - br $break|1 - end + local.get $6 + i32.store + else local.get $6 call $~lib/rt/pure/__release - br $continue|1 + br $break|1 end + local.get $6 + call $~lib/rt/pure/__release + br $continue|1 end + unreachable end local.get $0 local.get $5 @@ -10094,14 +9744,13 @@ i32.add local.get $4 i32.store - local.get $4 - call $~lib/rt/pure/__release local.get $3 i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + local.get $4 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -10138,14 +9787,12 @@ i32.load call $~lib/rt/pure/__retain local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.lt_s if @@ -10166,18 +9813,16 @@ local.get $6 return end - block $~lib/util/sort/SORT>|inlined.0 - local.get $3 - local.set $5 - local.get $2 - local.set $4 - local.get $1 - local.set $6 - local.get $5 - local.get $4 - local.get $6 - call $~lib/util/sort/insertionSort> - end + local.get $3 + local.set $5 + local.get $2 + local.set $4 + local.get $1 + local.set $6 + local.get $5 + local.get $4 + local.get $6 + call $~lib/util/sort/insertionSort> local.get $0 call $~lib/rt/pure/__retain ) @@ -10236,35 +9881,31 @@ call $~lib/rt/pure/__retain drop block $break|0 - block - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array>#get:length - local.set $3 - end - loop $repeat|0 + i32.const 1 + local.set $2 + local.get $0 + call $~lib/array/Array>#get:length + local.set $3 + loop $loop|0 local.get $2 local.get $3 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array>#__get - local.tee $4 - local.get $0 - local.get $2 - call $~lib/array/Array>#__get - local.tee $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + local.get $0 + local.get $2 + i32.const 1 + i32.sub + call $~lib/array/Array>#__get + local.tee $4 + local.get $0 + local.get $2 + call $~lib/array/Array>#__get + local.tee $5 + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.gt_s if @@ -10279,16 +9920,15 @@ local.get $6 return end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -10332,7 +9972,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $1 i32.lt_s @@ -10355,52 +9995,49 @@ local.get $5 i32.const 0 i32.ge_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/pure/__retain + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$iii) + i32.const 0 + i32.lt_s if local.get $0 local.get $5 + local.tee $7 + i32.const 1 + i32.sub + local.set $5 + local.get $7 + i32.const 1 + i32.add i32.const 2 i32.shl i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - else - local.get $6 - call $~lib/rt/pure/__release - br $break|1 - end + local.get $6 + i32.store + else local.get $6 call $~lib/rt/pure/__release - br $continue|1 + br $break|1 end + local.get $6 + call $~lib/rt/pure/__release + br $continue|1 end + unreachable end local.get $0 local.get $5 @@ -10411,14 +10048,13 @@ i32.add local.get $4 i32.store - local.get $4 - call $~lib/rt/pure/__release local.get $3 i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + local.get $4 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -10455,14 +10091,12 @@ i32.load call $~lib/rt/pure/__retain local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.lt_s if @@ -10483,18 +10117,16 @@ local.get $6 return end - block $~lib/util/sort/SORT<~lib/string/String | null>|inlined.0 - local.get $3 - local.set $5 - local.get $2 - local.set $4 - local.get $1 - local.set $6 - local.get $5 - local.get $4 - local.get $6 - call $~lib/util/sort/insertionSort<~lib/string/String | null> - end + local.get $3 + local.set $5 + local.get $2 + local.set $4 + local.get $1 + local.set $6 + local.get $5 + local.get $4 + local.get $6 + call $~lib/util/sort/insertionSort<~lib/string/String | null> local.get $0 call $~lib/rt/pure/__retain ) @@ -10541,35 +10173,31 @@ call $~lib/rt/pure/__retain drop block $break|0 - block - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array<~lib/string/String | null>#get:length - local.set $3 - end - loop $repeat|0 + i32.const 1 + local.set $2 + local.get $0 + call $~lib/array/Array<~lib/string/String | null>#get:length + local.set $3 + loop $loop|0 local.get $2 local.get $3 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/string/String | null>#__get - local.tee $4 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String | null>#__get - local.tee $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + local.get $0 + local.get $2 + i32.const 1 + i32.sub + call $~lib/array/Array<~lib/string/String | null>#__get + local.tee $4 + local.get $0 + local.get $2 + call $~lib/array/Array<~lib/string/String | null>#__get + local.tee $5 + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.gt_s if @@ -10584,16 +10212,15 @@ local.get $6 return end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -10675,22 +10302,23 @@ else i32.const 0 end - if - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $continue|0 end + unreachable end local.get $5 local.set $8 @@ -10967,7 +10595,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s @@ -10996,16 +10624,15 @@ local.get $6 return end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $3 i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -11100,21 +10727,19 @@ i32.const 0 i32.eq if - block (result i32) - i32.const 4408 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - drop - local.get $3 - call $~lib/rt/pure/__release - end + i32.const 4408 + local.tee $2 + local.get $1 + local.tee $3 + i32.ne + if local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release end + local.get $2 local.set $1 end local.get $0 @@ -11201,54 +10826,49 @@ block $break|0 i32.const 0 local.set $2 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $0 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - local.get $1 - global.get $std/array/charset - block $~lib/math/NativeMath.floor|inlined.0 (result f64) - call $~lib/math/NativeMath.random - global.get $std/array/charset - call $~lib/string/String#get:length - f64.convert_i32_s - f64.mul - local.set $3 - local.get $3 - f64.floor - end - i32.trunc_f64_s - call $~lib/string/String#charAt - local.tee $4 - call $~lib/string/String.__concat - local.tee $5 - local.tee $6 - local.get $1 - local.tee $7 - i32.ne - if - local.get $6 - call $~lib/rt/pure/__retain - drop - local.get $7 - call $~lib/rt/pure/__release - end + local.get $1 + global.get $std/array/charset + call $~lib/math/NativeMath.random + global.get $std/array/charset + call $~lib/string/String#get:length + f64.convert_i32_s + f64.mul + local.set $3 + local.get $3 + f64.floor + i32.trunc_f64_s + call $~lib/string/String#charAt + local.tee $4 + call $~lib/string/String.__concat + local.tee $5 + local.tee $6 + local.get $1 + local.tee $7 + i32.ne + if local.get $6 + call $~lib/rt/pure/__retain + drop + local.get $7 + call $~lib/rt/pure/__release end + local.get $6 local.set $1 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -11298,15 +10918,11 @@ if local.get $2 call $~lib/rt/pure/__release - block - i32.const 4040 - i32.const 488 - i32.const 121 - i32.const 38 - call $~lib/builtins/abort - unreachable - unreachable - end + i32.const 4040 + i32.const 488 + i32.const 121 + i32.const 38 + call $~lib/builtins/abort unreachable end local.get $0 @@ -11342,7 +10958,7 @@ block $break|0 i32.const 0 local.set $2 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $0 i32.lt_s @@ -11357,14 +10973,13 @@ call $std/array/createRandomString local.tee $3 call $~lib/array/Array<~lib/string/String>#__set - local.get $3 - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + local.get $3 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -11379,7 +10994,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $1 i32.lt_s @@ -11402,52 +11017,49 @@ local.get $5 i32.const 0 i32.ge_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/rt/pure/__retain + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$iii) + i32.const 0 + i32.lt_s if local.get $0 local.get $5 + local.tee $7 + i32.const 1 + i32.sub + local.set $5 + local.get $7 + i32.const 1 + i32.add i32.const 2 i32.shl i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$iii) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - else - local.get $6 - call $~lib/rt/pure/__release - br $break|1 - end + local.get $6 + i32.store + else local.get $6 call $~lib/rt/pure/__release - br $continue|1 + br $break|1 end + local.get $6 + call $~lib/rt/pure/__release + br $continue|1 end + unreachable end local.get $0 local.get $5 @@ -11458,14 +11070,13 @@ i32.add local.get $4 i32.store - local.get $4 - call $~lib/rt/pure/__release local.get $3 i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + local.get $4 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -11502,14 +11113,12 @@ i32.load call $~lib/rt/pure/__retain local.set $5 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.lt_s if @@ -11530,18 +11139,16 @@ local.get $6 return end - block $~lib/util/sort/SORT<~lib/string/String>|inlined.0 - local.get $3 - local.set $5 - local.get $2 - local.set $4 - local.get $1 - local.set $6 - local.get $5 - local.get $4 - local.get $6 - call $~lib/util/sort/insertionSort<~lib/string/String> - end + local.get $3 + local.set $5 + local.get $2 + local.set $4 + local.get $1 + local.set $6 + local.get $5 + local.get $4 + local.get $6 + call $~lib/util/sort/insertionSort<~lib/string/String> local.get $0 call $~lib/rt/pure/__retain ) @@ -11600,35 +11207,31 @@ call $~lib/rt/pure/__retain drop block $break|0 - block - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.set $3 - end - loop $repeat|0 + i32.const 1 + local.set $2 + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $3 + loop $loop|0 local.get $2 local.get $3 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/string/String>#__get - local.tee $4 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $5 - local.get $1 - call_indirect (type $FUNCSIG$iii) - end + i32.const 2 + global.set $~lib/argc + local.get $0 + local.get $2 + i32.const 1 + i32.sub + call $~lib/array/Array<~lib/string/String>#__get + local.tee $4 + local.get $0 + local.get $2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $5 + local.get $1 + call_indirect (type $FUNCSIG$iii) i32.const 0 i32.gt_s if @@ -11643,16 +11246,15 @@ local.get $6 return end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + br $loop|0 end unreachable end @@ -12006,7 +11608,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s @@ -12062,8 +11664,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -12166,7 +11767,6 @@ return end unreachable - unreachable else local.get $0 i32.const 10000000 @@ -12196,10 +11796,8 @@ return end unreachable - unreachable end unreachable - unreachable ) (func $~lib/util/number/utoa32_lut (; 229 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -12217,57 +11815,58 @@ local.get $1 i32.const 10000 i32.ge_u - if - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - local.get $3 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $1 + i32.const 10000 + i32.div_u + local.set $4 + local.get $1 + i32.const 10000 + i32.rem_u + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $7 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $8 + local.get $3 + local.get $7 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $9 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $9 + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 end + unreachable end local.get $1 i32.const 100 @@ -12378,18 +11977,16 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.set $3 - block $~lib/util/number/utoa32_core|inlined.0 - local.get $3 - local.set $6 - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end + local.get $3 + local.set $6 + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut local.get $1 if local.get $3 @@ -12443,18 +12040,16 @@ local.get $4 i32.add local.set $3 - block $~lib/util/number/utoa32_core|inlined.1 - local.get $0 - local.set $7 - local.get $2 - local.set $6 - local.get $3 - local.set $5 - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_lut - end + local.get $0 + local.set $7 + local.get $2 + local.set $6 + local.get $3 + local.set $5 + local.get $7 + local.get $6 + local.get $5 + call $~lib/util/number/utoa32_lut local.get $4 if local.get $0 @@ -12535,7 +12130,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s @@ -12576,8 +12171,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -12653,18 +12247,16 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.set $2 - block $~lib/util/number/utoa32_core|inlined.2 - local.get $2 - local.set $5 - local.get $0 - local.set $4 - local.get $1 - local.set $3 - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/number/utoa32_lut - end + local.get $2 + local.set $5 + local.get $0 + local.set $4 + local.get $1 + local.set $3 + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/number/utoa32_lut local.get $2 call $~lib/rt/pure/__retain ) @@ -12698,18 +12290,16 @@ local.get $2 call $~lib/util/number/decimalCount32 local.set $3 - block $~lib/util/number/utoa32_core|inlined.3 - local.get $0 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end + local.get $0 + local.set $6 + local.get $2 + local.set $5 + local.get $3 + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut local.get $3 ) (func $~lib/array/Array#join_int (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -12784,7 +12374,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s @@ -12825,8 +12415,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -12968,498 +12557,444 @@ local.get $14 i32.const 0 i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $14 - local.set $18 - local.get $18 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $18 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $18 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $18 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $18 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $18 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $18 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $18 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $18 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $18 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - block - local.get $12 - i32.const 1000000000 - i32.div_u - local.set $17 - local.get $12 - i32.const 1000000000 - i32.rem_u - local.set $12 - br $break|1 - unreachable - end - unreachable + i32.eqz + br_if $break|0 + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $14 + local.set $18 + local.get $18 + i32.const 10 + i32.eq + br_if $case0|1 + local.get $18 + i32.const 9 + i32.eq + br_if $case1|1 + local.get $18 + i32.const 8 + i32.eq + br_if $case2|1 + local.get $18 + i32.const 7 + i32.eq + br_if $case3|1 + local.get $18 + i32.const 6 + i32.eq + br_if $case4|1 + local.get $18 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $18 + i32.const 4 + i32.eq + br_if $case6|1 + local.get $18 + i32.const 3 + i32.eq + br_if $case7|1 + local.get $18 + i32.const 2 + i32.eq + br_if $case8|1 + local.get $18 + i32.const 1 + i32.eq + br_if $case9|1 + br $case10|1 end - block - local.get $12 - i32.const 100000000 - i32.div_u - local.set $17 - local.get $12 - i32.const 100000000 - i32.rem_u - local.set $12 - br $break|1 - unreachable - end - unreachable - end - block local.get $12 - i32.const 10000000 + i32.const 1000000000 i32.div_u local.set $17 local.get $12 - i32.const 10000000 + i32.const 1000000000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 1000000 + i32.const 100000000 i32.div_u local.set $17 local.get $12 - i32.const 1000000 + i32.const 100000000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 100000 + i32.const 10000000 i32.div_u local.set $17 local.get $12 - i32.const 100000 + i32.const 10000000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 10000 + i32.const 1000000 i32.div_u local.set $17 local.get $12 - i32.const 10000 + i32.const 1000000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 1000 + i32.const 100000 i32.div_u local.set $17 local.get $12 - i32.const 1000 + i32.const 100000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 100 + i32.const 10000 i32.div_u local.set $17 local.get $12 - i32.const 100 + i32.const 10000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 10 + i32.const 1000 i32.div_u local.set $17 local.get $12 - i32.const 10 + i32.const 1000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 + i32.const 100 + i32.div_u local.set $17 - i32.const 0 + local.get $12 + i32.const 100 + i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block - i32.const 0 + local.get $12 + i32.const 10 + i32.div_u local.set $17 + local.get $12 + i32.const 10 + i32.rem_u + local.set $12 br $break|1 - unreachable end - unreachable + local.get $12 + local.set $17 + i32.const 0 + local.set $12 + br $break|1 end - local.get $17 + i32.const 0 + local.set $17 + br $break|1 + end + local.get $17 + local.get $15 + i32.or + if + local.get $0 local.get $15 - i32.or - if - local.get $0 - block (result i32) - local.get $15 - local.tee $18 - i32.const 1 - i32.add - local.set $15 - local.get $18 - end - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $17 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $14 + local.tee $18 i32.const 1 - i32.sub - local.set $14 - local.get $12 - i64.extend_i32_u + i32.add + local.set $15 + local.get $18 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $17 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $14 + i32.const 1 + i32.sub + local.set $14 + local.get $12 + i64.extend_i32_u + local.get $7 + i64.extend_i32_s + i64.shl + local.get $13 + i64.add + local.set $19 + local.get $19 + local.get $5 + i64.le_u + if + global.get $~lib/util/number/_K + local.get $14 + i32.add + global.set $~lib/util/number/_K + local.get $0 + local.set $24 + local.get $15 + local.set $18 + local.get $5 + local.set $23 + local.get $19 + local.set $22 + local.get $16 + local.get $14 + i32.const 2 + i32.shl + i32.add + i64.load32_u local.get $7 i64.extend_i32_s i64.shl - local.get $13 - i64.add - local.set $19 - local.get $19 - local.get $5 - i64.le_u - if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - block $~lib/util/number/grisuRound|inlined.0 - local.get $0 - local.set $24 - local.get $15 - local.set $18 - local.get $5 - local.set $23 - local.get $19 - local.set $22 - local.get $16 - local.get $14 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $7 - i64.extend_i32_s - i64.shl - local.set $21 - local.get $10 - local.set $20 - local.get $24 - local.get $18 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $25 - local.get $25 - i32.load16_u - local.set $26 - block $break|2 - loop $continue|2 - local.get $22 - local.get $20 - i64.lt_u - if (result i32) - local.get $23 - local.get $22 - i64.sub - local.get $21 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $20 - local.get $22 - i64.sub - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $22 - local.get $21 - i64.add - local.set $22 - br $continue|2 - end - end - end - local.get $25 - local.get $26 - i32.store16 - end - local.get $15 - return - end - br $continue|0 - end - end - end - block $break|3 - loop $continue|3 - i32.const 1 - if - local.get $13 - i64.const 10 - i64.mul - local.set $13 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $13 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $19 - local.get $19 - local.get $15 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - block (result i32) - local.get $15 - local.tee $17 - i32.const 1 - i32.add - local.set $15 - local.get $17 - end - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $19 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - local.get $9 - i64.and - local.set $13 - local.get $14 + local.set $21 + local.get $10 + local.set $20 + local.get $24 + local.get $18 i32.const 1 i32.sub - local.set $14 - local.get $13 - local.get $5 - i64.lt_u - if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - local.get $10 - local.get $16 - i32.const 0 - local.get $14 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $10 - block $~lib/util/number/grisuRound|inlined.1 - local.get $0 - local.set $24 - local.get $15 - local.set $18 - local.get $5 - local.set $23 - local.get $13 - local.set $22 - local.get $8 - local.set $21 - local.get $10 - local.set $20 - local.get $24 - local.get $18 + i32.const 1 + i32.shl + i32.add + local.set $25 + local.get $25 + i32.load16_u + local.set $26 + block $break|2 + loop $continue|2 + local.get $22 + local.get $20 + i64.lt_u + if (result i32) + local.get $23 + local.get $22 + i64.sub + local.get $21 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $22 + local.get $21 + i64.add + local.get $20 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $20 + local.get $22 + i64.sub + local.get $22 + local.get $21 + i64.add + local.get $20 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + i32.eqz + br_if $break|2 + local.get $26 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.set $17 - local.get $17 - i32.load16_u local.set $26 - block $break|4 - loop $continue|4 - local.get $22 - local.get $20 - i64.lt_u - if (result i32) - local.get $23 - local.get $22 - i64.sub - local.get $21 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $20 - local.get $22 - i64.sub - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $22 - local.get $21 - i64.add - local.set $22 - br $continue|4 - end - end - end - local.get $17 - local.get $26 - i32.store16 + local.get $22 + local.get $21 + i64.add + local.set $22 + br $continue|2 end - local.get $15 - return + unreachable end - br $continue|3 + local.get $25 + local.get $26 + i32.store16 + local.get $15 + return end + br $continue|0 end + unreachable end - local.get $15 + loop $continue|3 + local.get $13 + i64.const 10 + i64.mul + local.set $13 + local.get $5 + i64.const 10 + i64.mul + local.set $5 + local.get $13 + local.get $7 + i64.extend_i32_s + i64.shr_u + local.set $19 + local.get $19 + local.get $15 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $15 + local.tee $17 + i32.const 1 + i32.add + local.set $15 + local.get $17 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $19 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $13 + local.get $9 + i64.and + local.set $13 + local.get $14 + i32.const 1 + i32.sub + local.set $14 + local.get $13 + local.get $5 + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $14 + i32.add + global.set $~lib/util/number/_K + local.get $10 + local.get $16 + i32.const 0 + local.get $14 + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $10 + local.get $0 + local.set $24 + local.get $15 + local.set $18 + local.get $5 + local.set $23 + local.get $13 + local.set $22 + local.get $8 + local.set $21 + local.get $10 + local.set $20 + local.get $24 + local.get $18 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $17 + local.get $17 + i32.load16_u + local.set $26 + block $break|4 + loop $continue|4 + local.get $22 + local.get $20 + i64.lt_u + if (result i32) + local.get $23 + local.get $22 + i64.sub + local.get $21 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $22 + local.get $21 + i64.add + local.get $20 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $20 + local.get $22 + i64.sub + local.get $22 + local.get $21 + i64.add + local.get $20 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + i32.eqz + br_if $break|4 + local.get $26 + i32.const 1 + i32.sub + local.set $26 + local.get $22 + local.get $21 + i64.add + local.set $22 + br $continue|4 + end + unreachable + end + local.get $17 + local.get $26 + i32.store16 + local.get $15 + return + end + br $continue|3 + end + unreachable ) (func $~lib/util/number/prettify (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -13508,7 +13043,7 @@ block $break|0 local.get $1 local.set $4 - loop $repeat|0 + loop $loop|0 local.get $4 local.get $3 i32.lt_s @@ -13525,8 +13060,7 @@ i32.const 1 i32.add local.set $4 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -13620,7 +13154,7 @@ block $break|1 i32.const 2 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 local.get $4 i32.lt_s @@ -13637,8 +13171,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -13654,51 +13187,47 @@ local.get $0 i32.const 101 i32.store16 offset=2 - block $~lib/util/number/genExponent|inlined.0 (result i32) - local.get $0 - i32.const 4 - i32.add - local.set $4 - local.get $3 - i32.const 1 + local.get $0 + i32.const 4 + i32.add + local.set $4 + local.get $3 + i32.const 1 + i32.sub + local.set $5 + local.get $5 + i32.const 0 + i32.lt_s + local.set $6 + local.get $6 + if + i32.const 0 + local.get $5 i32.sub local.set $5 - local.get $5 - i32.const 0 - i32.lt_s - local.set $6 - local.get $6 - if - i32.const 0 - local.get $5 - i32.sub - local.set $5 - end - local.get $5 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $7 - block $~lib/util/number/utoa32_core|inlined.4 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/number/utoa32_lut - end - local.get $4 - i32.const 45 - i32.const 43 - local.get $6 - select - i32.store16 - local.get $7 end + local.get $5 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $7 + local.get $4 + local.set $10 + local.get $5 + local.set $9 + local.get $7 + local.set $8 + local.get $10 + local.get $9 + local.get $8 + call $~lib/util/number/utoa32_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $6 + select + i32.store16 + local.get $7 local.set $1 local.get $1 i32.const 2 @@ -13728,53 +13257,49 @@ i32.const 101 i32.store16 offset=2 local.get $1 - block $~lib/util/number/genExponent|inlined.1 (result i32) - local.get $0 - local.get $7 - i32.add - i32.const 4 - i32.add - local.set $9 - local.get $3 - i32.const 1 + local.get $0 + local.get $7 + i32.add + i32.const 4 + i32.add + local.set $9 + local.get $3 + i32.const 1 + i32.sub + local.set $8 + local.get $8 + i32.const 0 + i32.lt_s + local.set $6 + local.get $6 + if + i32.const 0 + local.get $8 i32.sub local.set $8 - local.get $8 - i32.const 0 - i32.lt_s - local.set $6 - local.get $6 - if - i32.const 0 - local.get $8 - i32.sub - local.set $8 - end - local.get $8 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $4 - block $~lib/util/number/utoa32_core|inlined.5 - local.get $9 - local.set $11 - local.get $8 - local.set $5 - local.get $4 - local.set $10 - local.get $11 - local.get $5 - local.get $10 - call $~lib/util/number/utoa32_lut - end - local.get $9 - i32.const 45 - i32.const 43 - local.get $6 - select - i32.store16 - local.get $4 end + local.get $8 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $4 + local.get $9 + local.set $11 + local.get $8 + local.set $5 + local.get $4 + local.set $10 + local.get $11 + local.get $5 + local.get $10 + call $~lib/util/number/utoa32_lut + local.get $9 + i32.const 45 + i32.const 43 + local.get $6 + select + i32.store16 + local.get $4 i32.add local.set $1 local.get $1 @@ -13789,7 +13314,6 @@ unreachable end unreachable - unreachable ) (func $~lib/util/number/dtoa_core (; 245 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) @@ -13832,387 +13356,371 @@ i32.const 45 i32.store16 end - block $~lib/util/number/grisu2|inlined.0 (result i32) - local.get $1 - local.set $5 - local.get $0 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i64.reinterpret_f64 - local.set $6 - local.get $6 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $7 - local.get $6 - i64.const 4503599627370495 - i64.and - local.set $8 - local.get $7 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $8 - i64.add - local.set $9 - local.get $7 - i32.const 1 - local.get $7 - i32.const 0 - i32.ne - select - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $7 - block $~lib/util/number/normalizedBoundaries|inlined.0 - local.get $9 - local.set $11 - local.get $7 - local.set $10 - local.get $11 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $12 - local.get $10 - i32.const 1 - i32.sub - local.set $13 - local.get $12 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $12 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $12 - local.get $13 - local.get $14 - i32.sub - local.set $13 - i32.const 1 - local.get $11 - i64.const 4503599627370496 - i64.eq - i32.add - local.set $15 - local.get $12 - global.set $~lib/util/number/_frc_plus - local.get $11 - local.get $15 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $10 - local.get $15 - i32.sub - local.get $13 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $13 - global.set $~lib/util/number/_exp - end - block $~lib/util/number/getCachedPower|inlined.0 - global.get $~lib/util/number/_exp - local.set $10 - i32.const -61 - local.get $10 - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $16 - local.get $16 - i32.trunc_f64_s - local.set $15 - local.get $15 - local.get $15 - f64.convert_i32_s - local.get $16 - f64.ne - i32.add - local.set $15 - local.get $15 - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $14 - i32.const 348 - local.get $14 - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 6200 - local.get $14 - call $~lib/array/Array#__unchecked_get - global.set $~lib/util/number/_frc_pow - i32.const 6424 - local.get $14 - call $~lib/array/Array#__unchecked_get - global.set $~lib/util/number/_exp_pow - end - local.get $9 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $9 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $9 - local.get $7 - local.get $14 - i32.sub - local.set $7 - global.get $~lib/util/number/_frc_pow - local.set $12 - global.get $~lib/util/number/_exp_pow - local.set $15 - block $~lib/util/number/umul64f|inlined.0 (result i64) - local.get $9 - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $11 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $11 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $24 - local.get $24 - i64.const 2147483647 - i64.add - local.set $24 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $24 - i64.const 32 - i64.shr_u - local.set $24 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $24 - i64.add - end - local.set $24 - block $~lib/util/number/umul64e|inlined.0 (result i32) - local.get $7 - local.set $10 - local.get $15 - local.set $13 - local.get $10 - local.get $13 - i32.add - i32.const 64 - i32.add - end - local.set $10 - block $~lib/util/number/umul64f|inlined.1 (result i64) - global.get $~lib/util/number/_frc_plus - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $23 - local.get $11 - i64.const 4294967295 - i64.and - local.set $22 - local.get $17 - i64.const 32 - i64.shr_u - local.set $21 - local.get $11 - i64.const 32 - i64.shr_u - local.set $20 - local.get $23 - local.get $22 - i64.mul - local.set $19 - local.get $21 - local.get $22 - i64.mul - local.get $19 - i64.const 32 - i64.shr_u - i64.add - local.set $18 - local.get $23 - local.get $20 - i64.mul - local.get $18 - i64.const 4294967295 - i64.and - i64.add - local.set $25 - local.get $25 - i64.const 2147483647 - i64.add - local.set $25 - local.get $18 - i64.const 32 - i64.shr_u - local.set $18 - local.get $25 - i64.const 32 - i64.shr_u - local.set $25 - local.get $21 - local.get $20 - i64.mul - local.get $18 - i64.add - local.get $25 - i64.add - end - i64.const 1 - i64.sub - local.set $25 - block $~lib/util/number/umul64e|inlined.1 (result i32) - global.get $~lib/util/number/_exp - local.set $26 - local.get $15 - local.set $13 - local.get $26 - local.get $13 - i32.add - i32.const 64 - i32.add - end - local.set $26 - block $~lib/util/number/umul64f|inlined.2 (result i64) - global.get $~lib/util/number/_frc_minus - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $11 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $11 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $27 - local.get $27 - i64.const 2147483647 - i64.add - local.set $27 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $27 - i64.const 32 - i64.shr_u - local.set $27 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $27 - i64.add - end - i64.const 1 - i64.add - local.set $27 - local.get $25 - local.get $27 - i64.sub - local.set $23 - local.get $4 - local.get $24 - local.get $10 - local.get $25 - local.get $26 - local.get $23 - local.get $3 - call $~lib/util/number/genDigits - end + local.get $1 + local.set $5 + local.get $0 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + i64.reinterpret_f64 + local.set $6 + local.get $6 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $7 + local.get $6 + i64.const 4503599627370495 + i64.and + local.set $8 + local.get $7 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $8 + i64.add + local.set $9 + local.get $7 + i32.const 1 + local.get $7 + i32.const 0 + i32.ne + select + i32.const 1023 + i32.const 52 + i32.add + i32.sub + local.set $7 + local.get $9 + local.set $11 + local.get $7 + local.set $10 + local.get $11 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.set $12 + local.get $10 + i32.const 1 + i32.sub + local.set $13 + local.get $12 + i64.clz + i32.wrap_i64 + local.set $14 + local.get $12 + local.get $14 + i64.extend_i32_s + i64.shl + local.set $12 + local.get $13 + local.get $14 + i32.sub + local.set $13 + i32.const 1 + local.get $11 + i64.const 4503599627370496 + i64.eq + i32.add + local.set $15 + local.get $12 + global.set $~lib/util/number/_frc_plus + local.get $11 + local.get $15 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $10 + local.get $15 + i32.sub + local.get $13 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $13 + global.set $~lib/util/number/_exp + global.get $~lib/util/number/_exp + local.set $10 + i32.const -61 + local.get $10 + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.set $16 + local.get $16 + i32.trunc_f64_s + local.set $15 + local.get $15 + local.get $15 + f64.convert_i32_s + local.get $16 + f64.ne + i32.add + local.set $15 + local.get $15 + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.set $14 + i32.const 348 + local.get $14 + i32.const 3 + i32.shl + i32.sub + global.set $~lib/util/number/_K + i32.const 6200 + local.get $14 + call $~lib/array/Array#__unchecked_get + global.set $~lib/util/number/_frc_pow + i32.const 6424 + local.get $14 + call $~lib/array/Array#__unchecked_get + global.set $~lib/util/number/_exp_pow + local.get $9 + i64.clz + i32.wrap_i64 + local.set $14 + local.get $9 + local.get $14 + i64.extend_i32_s + i64.shl + local.set $9 + local.get $7 + local.get $14 + i32.sub + local.set $7 + global.get $~lib/util/number/_frc_pow + local.set $12 + global.get $~lib/util/number/_exp_pow + local.set $15 + local.get $9 + local.set $17 + local.get $12 + local.set $11 + local.get $17 + i64.const 4294967295 + i64.and + local.set $18 + local.get $11 + i64.const 4294967295 + i64.and + local.set $19 + local.get $17 + i64.const 32 + i64.shr_u + local.set $20 + local.get $11 + i64.const 32 + i64.shr_u + local.set $21 + local.get $18 + local.get $19 + i64.mul + local.set $22 + local.get $20 + local.get $19 + i64.mul + local.get $22 + i64.const 32 + i64.shr_u + i64.add + local.set $23 + local.get $18 + local.get $21 + i64.mul + local.get $23 + i64.const 4294967295 + i64.and + i64.add + local.set $24 + local.get $24 + i64.const 2147483647 + i64.add + local.set $24 + local.get $23 + i64.const 32 + i64.shr_u + local.set $23 + local.get $24 + i64.const 32 + i64.shr_u + local.set $24 + local.get $20 + local.get $21 + i64.mul + local.get $23 + i64.add + local.get $24 + i64.add + local.set $24 + local.get $7 + local.set $10 + local.get $15 + local.set $13 + local.get $10 + local.get $13 + i32.add + i32.const 64 + i32.add + local.set $10 + global.get $~lib/util/number/_frc_plus + local.set $17 + local.get $12 + local.set $11 + local.get $17 + i64.const 4294967295 + i64.and + local.set $23 + local.get $11 + i64.const 4294967295 + i64.and + local.set $22 + local.get $17 + i64.const 32 + i64.shr_u + local.set $21 + local.get $11 + i64.const 32 + i64.shr_u + local.set $20 + local.get $23 + local.get $22 + i64.mul + local.set $19 + local.get $21 + local.get $22 + i64.mul + local.get $19 + i64.const 32 + i64.shr_u + i64.add + local.set $18 + local.get $23 + local.get $20 + i64.mul + local.get $18 + i64.const 4294967295 + i64.and + i64.add + local.set $25 + local.get $25 + i64.const 2147483647 + i64.add + local.set $25 + local.get $18 + i64.const 32 + i64.shr_u + local.set $18 + local.get $25 + i64.const 32 + i64.shr_u + local.set $25 + local.get $21 + local.get $20 + i64.mul + local.get $18 + i64.add + local.get $25 + i64.add + i64.const 1 + i64.sub + local.set $25 + global.get $~lib/util/number/_exp + local.set $26 + local.get $15 + local.set $13 + local.get $26 + local.get $13 + i32.add + i32.const 64 + i32.add + local.set $26 + global.get $~lib/util/number/_frc_minus + local.set $17 + local.get $12 + local.set $11 + local.get $17 + i64.const 4294967295 + i64.and + local.set $18 + local.get $11 + i64.const 4294967295 + i64.and + local.set $19 + local.get $17 + i64.const 32 + i64.shr_u + local.set $20 + local.get $11 + i64.const 32 + i64.shr_u + local.set $21 + local.get $18 + local.get $19 + i64.mul + local.set $22 + local.get $20 + local.get $19 + i64.mul + local.get $22 + i64.const 32 + i64.shr_u + i64.add + local.set $23 + local.get $18 + local.get $21 + i64.mul + local.get $23 + i64.const 4294967295 + i64.and + i64.add + local.set $27 + local.get $27 + i64.const 2147483647 + i64.add + local.set $27 + local.get $23 + i64.const 32 + i64.shr_u + local.set $23 + local.get $27 + i64.const 32 + i64.shr_u + local.set $27 + local.get $20 + local.get $21 + i64.mul + local.get $23 + i64.add + local.get $27 + i64.add + i64.const 1 + i64.add + local.set $27 + local.get $25 + local.get $27 + i64.sub + local.set $23 + local.get $4 + local.get $24 + local.get $10 + local.get $25 + local.get $26 + local.get $23 + local.get $3 + call $~lib/util/number/genDigits local.set $28 local.get $0 local.get $2 @@ -14353,7 +13861,6 @@ return end unreachable - unreachable end local.get $0 local.get $2 @@ -14431,7 +13938,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s @@ -14472,8 +13979,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -14582,40 +14088,36 @@ i32.const 0 local.set $7 block $break|0 - block - i32.const 0 - local.set $3 - local.get $2 - i32.const 1 - i32.add - local.set $8 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $2 + i32.const 1 + i32.add + local.set $8 + loop $loop|0 local.get $3 local.get $8 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - local.get $4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $7 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $9 + local.get $7 + local.tee $10 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $9 local.set $7 local.get $7 i32.const 0 @@ -14631,8 +14133,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -14652,32 +14153,30 @@ block $break|1 i32.const 0 local.set $8 - loop $repeat|1 + loop $loop|1 local.get $8 local.get $2 i32.lt_s i32.eqz br_if $break|1 - block (result i32) - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $10 - local.get $7 - local.tee $3 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $3 - call $~lib/rt/pure/__release - end + local.get $4 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + local.get $7 + local.tee $3 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release end + local.get $10 local.set $7 local.get $7 i32.const 0 @@ -14722,31 +14221,28 @@ i32.const 1 i32.add local.set $8 - br $repeat|1 - unreachable + br $loop|1 end unreachable end - block (result i32) - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $7 - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $9 + local.get $7 + local.tee $8 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $9 local.set $7 local.get $7 i32.const 0 @@ -14868,32 +14364,30 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - local.get $4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $10 - local.get $9 - local.tee $11 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $11 - call $~lib/rt/pure/__release - end + local.get $4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + local.get $9 + local.tee $11 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $11 + call $~lib/rt/pure/__release end + local.get $10 local.set $9 local.get $9 if @@ -14933,8 +14427,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -15065,22 +14558,20 @@ local.get $4 i32.add local.set $3 - block $~lib/util/number/utoa32_core|inlined.6 - local.get $0 - local.set $7 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.set $6 - local.get $3 - local.set $5 - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_lut - end + local.get $0 + local.set $7 + local.get $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + local.set $6 + local.get $3 + local.set $5 + local.get $7 + local.get $6 + local.get $5 + call $~lib/util/number/utoa32_lut local.get $4 if local.get $0 @@ -15161,7 +14652,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s @@ -15202,8 +14693,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -15298,20 +14788,18 @@ i32.and call $~lib/util/number/decimalCount32 local.set $3 - block $~lib/util/number/utoa32_core|inlined.7 - local.get $0 - local.set $6 - local.get $2 - i32.const 65535 - i32.and - local.set $5 - local.get $3 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end + local.get $0 + local.set $6 + local.get $2 + i32.const 65535 + i32.and + local.set $5 + local.get $3 + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut local.get $3 ) (func $~lib/array/Array#join_int (; 263 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -15386,7 +14874,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s @@ -15427,8 +14915,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -15521,7 +15008,6 @@ return end unreachable - unreachable else local.get $0 i64.const 100000000000000000 @@ -15551,10 +15037,8 @@ return end unreachable - unreachable end unreachable - unreachable ) (func $~lib/util/number/utoa64_lut (; 267 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) @@ -15576,105 +15060,106 @@ local.get $1 i64.const 100000000 i64.ge_u - if - local.get $1 - i64.const 100000000 - i64.div_u - local.set $4 - local.get $1 - local.get $4 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 - local.get $6 - i32.const 100 - i32.div_u - local.set $8 - local.get $6 - i32.const 100 - i32.rem_u - local.set $9 - local.get $7 - i32.const 100 - i32.div_u - local.set $10 - local.get $7 - i32.const 100 - i32.rem_u - local.set $11 - local.get $3 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - local.get $3 - local.get $11 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - local.get $3 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - local.get $3 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $1 + i64.const 100000000 + i64.div_u + local.set $4 + local.get $1 + local.get $4 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 10000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000 + i32.rem_u + local.set $7 + local.get $6 + i32.const 100 + i32.div_u + local.set $8 + local.get $6 + i32.const 100 + i32.rem_u + local.set $9 + local.get $7 + i32.const 100 + i32.div_u + local.set $10 + local.get $7 + i32.const 100 + i32.rem_u + local.set $11 + local.get $3 + local.get $10 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + local.get $3 + local.get $11 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i64.const 32 + i64.shl + i64.or + i64.store + local.get $3 + local.get $8 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + local.get $3 + local.get $9 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 end + unreachable end local.get $0 local.get $1 @@ -15713,18 +15198,16 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.set $1 - block $~lib/util/number/utoa32_core|inlined.8 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end + local.get $1 + local.set $6 + local.get $2 + local.set $5 + local.get $3 + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut else local.get $0 call $~lib/util/number/decimalCount64 @@ -15735,18 +15218,16 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.set $1 - block $~lib/util/number/utoa64_core|inlined.0 - local.get $1 - local.set $5 - local.get $0 - local.set $7 - local.get $3 - local.set $4 - local.get $5 - local.get $7 - local.get $4 - call $~lib/util/number/utoa64_lut - end + local.get $1 + local.set $5 + local.get $0 + local.set $7 + local.get $3 + local.set $4 + local.get $5 + local.get $7 + local.get $4 + call $~lib/util/number/utoa64_lut end local.get $1 call $~lib/rt/pure/__retain @@ -15790,34 +15271,30 @@ local.get $4 call $~lib/util/number/decimalCount32 local.set $3 - block $~lib/util/number/utoa32_core|inlined.9 - local.get $0 - local.set $7 - local.get $4 - local.set $6 - local.get $3 - local.set $5 - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_lut - end + local.get $0 + local.set $7 + local.get $4 + local.set $6 + local.get $3 + local.set $5 + local.get $7 + local.get $6 + local.get $5 + call $~lib/util/number/utoa32_lut else local.get $2 call $~lib/util/number/decimalCount64 local.set $3 - block $~lib/util/number/utoa64_core|inlined.1 - local.get $0 - local.set $6 - local.get $2 - local.set $8 - local.get $3 - local.set $5 - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_lut - end + local.get $0 + local.set $6 + local.get $2 + local.set $8 + local.get $3 + local.set $5 + local.get $6 + local.get $8 + local.get $5 + call $~lib/util/number/utoa64_lut end local.get $3 ) @@ -15893,7 +15370,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s @@ -15934,8 +15411,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -16039,18 +15515,16 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.set $2 - block $~lib/util/number/utoa32_core|inlined.10 - local.get $2 - local.set $7 - local.get $3 - local.set $6 - local.get $4 - local.set $5 - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_lut - end + local.get $2 + local.set $7 + local.get $3 + local.set $6 + local.get $4 + local.set $5 + local.get $7 + local.get $6 + local.get $5 + call $~lib/util/number/utoa32_lut else local.get $0 call $~lib/util/number/decimalCount64 @@ -16063,18 +15537,16 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.set $2 - block $~lib/util/number/utoa64_core|inlined.2 - local.get $2 - local.set $6 - local.get $0 - local.set $8 - local.get $4 - local.set $5 - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_lut - end + local.get $2 + local.set $6 + local.get $0 + local.set $8 + local.get $4 + local.set $5 + local.get $6 + local.get $8 + local.get $5 + call $~lib/util/number/utoa64_lut end local.get $1 if @@ -16138,36 +15610,32 @@ local.get $4 i32.add local.set $3 - block $~lib/util/number/utoa32_core|inlined.11 - local.get $0 - local.set $8 - local.get $5 - local.set $7 - local.get $3 - local.set $6 - local.get $8 - local.get $7 - local.get $6 - call $~lib/util/number/utoa32_lut - end + local.get $0 + local.set $8 + local.get $5 + local.set $7 + local.get $3 + local.set $6 + local.get $8 + local.get $7 + local.get $6 + call $~lib/util/number/utoa32_lut else local.get $2 call $~lib/util/number/decimalCount64 local.get $4 i32.add local.set $3 - block $~lib/util/number/utoa64_core|inlined.3 - local.get $0 - local.set $7 - local.get $2 - local.set $9 - local.get $3 - local.set $6 - local.get $7 - local.get $9 - local.get $6 - call $~lib/util/number/utoa64_lut - end + local.get $0 + local.set $7 + local.get $2 + local.set $9 + local.get $3 + local.set $6 + local.get $7 + local.get $9 + local.get $6 + call $~lib/util/number/utoa64_lut end local.get $4 if @@ -16249,7 +15717,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s @@ -16290,8 +15758,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -16405,40 +15872,36 @@ i32.const 0 local.set $7 block $break|0 - block - i32.const 0 - local.set $3 - local.get $2 - i32.const 1 - i32.add - local.set $8 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $2 + i32.const 1 + i32.add + local.set $8 + loop $loop|0 local.get $3 local.get $8 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - local.get $4 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $7 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $9 + local.get $7 + local.tee $10 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $9 local.set $7 local.get $7 i32.const 0 @@ -16454,8 +15917,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -16475,32 +15937,30 @@ block $break|1 i32.const 0 local.set $8 - loop $repeat|1 + loop $loop|1 local.get $8 local.get $2 i32.lt_s i32.eqz br_if $break|1 - block (result i32) - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $10 - local.get $7 - local.tee $3 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $3 - call $~lib/rt/pure/__release - end + local.get $4 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + local.get $7 + local.tee $3 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release end + local.get $10 local.set $7 local.get $7 i32.const 0 @@ -16545,31 +16005,28 @@ i32.const 1 i32.add local.set $8 - br $repeat|1 - unreachable + br $loop|1 end unreachable end - block (result i32) - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $7 - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $9 + local.get $7 + local.tee $8 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $9 local.set $7 local.get $7 i32.const 0 @@ -16664,22 +16121,20 @@ local.get $2 i32.eqz if - block (result i32) - local.get $6 - i32.load - local.tee $3 - local.get $7 - local.tee $8 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $6 + i32.load + local.tee $3 + local.get $7 + local.tee $8 + i32.ne + if local.get $3 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $3 local.set $7 local.get $7 if (result i32) @@ -16703,128 +16158,20 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - local.get $6 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $8 - local.get $7 - local.tee $9 - i32.ne - if - local.get $8 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end - local.get $8 - end - local.set $7 - local.get $7 - if - block (result i32) - local.get $4 - local.get $7 - local.get $1 - call $~lib/array/Array#join - local.tee $8 - call $~lib/string/String.__concat - local.tee $9 - local.tee $10 - local.get $4 - local.tee $11 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $11 - call $~lib/rt/pure/__release - end - local.get $10 - end - local.set $4 - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - end - local.get $5 - if - block (result i32) - local.get $4 - local.get $1 - call $~lib/string/String.__concat - local.tee $9 - local.tee $11 - local.get $4 - local.tee $8 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $11 - end - local.set $4 - local.get $9 - call $~lib/rt/pure/__release - end + local.get $6 local.get $3 - i32.const 1 + i32.const 2 + i32.shl i32.add - local.set $3 - br $repeat|0 - unreachable - end - unreachable - end - block (result i32) - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $10 - local.get $7 - local.tee $3 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $3 - call $~lib/rt/pure/__release - end - local.get $10 - end - local.set $7 - local.get $7 - if - block (result i32) - local.get $4 - local.get $7 - local.get $1 - call $~lib/array/Array#join - local.tee $10 - call $~lib/string/String.__concat - local.tee $3 + i32.load local.tee $8 - local.get $4 + local.get $7 local.tee $9 i32.ne if @@ -16835,7 +16182,104 @@ call $~lib/rt/pure/__release end local.get $8 + local.set $7 + local.get $7 + if + local.get $4 + local.get $7 + local.get $1 + call $~lib/array/Array#join + local.tee $8 + call $~lib/string/String.__concat + local.tee $9 + local.tee $10 + local.get $4 + local.tee $11 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $11 + call $~lib/rt/pure/__release + end + local.get $10 + local.set $4 + local.get $8 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + end + local.get $5 + if + local.get $4 + local.get $1 + call $~lib/string/String.__concat + local.tee $9 + local.tee $11 + local.get $4 + local.tee $8 + i32.ne + if + local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end + local.get $11 + local.set $4 + local.get $9 + call $~lib/rt/pure/__release + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 end + unreachable + end + local.get $6 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + local.get $7 + local.tee $3 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release + end + local.get $10 + local.set $7 + local.get $7 + if + local.get $4 + local.get $7 + local.get $1 + call $~lib/array/Array#join + local.tee $10 + call $~lib/string/String.__concat + local.tee $3 + local.tee $8 + local.get $4 + local.tee $9 + i32.ne + if + local.get $8 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release + end + local.get $8 local.set $4 local.get $10 call $~lib/rt/pure/__release @@ -16905,20 +16349,18 @@ i32.and call $~lib/util/number/decimalCount32 local.set $3 - block $~lib/util/number/utoa32_core|inlined.12 - local.get $0 - local.set $6 - local.get $2 - i32.const 255 - i32.and - local.set $5 - local.get $3 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end + local.get $0 + local.set $6 + local.get $2 + i32.const 255 + i32.and + local.set $5 + local.get $3 + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut local.get $3 ) (func $~lib/array/Array#join_int (; 289 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) @@ -16993,7 +16435,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s @@ -17034,8 +16476,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -17134,22 +16575,20 @@ local.get $2 i32.eqz if - block (result i32) - local.get $6 - i32.load - local.tee $3 - local.get $7 - local.tee $8 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $6 + i32.load + local.tee $3 + local.get $7 + local.tee $8 + i32.ne + if local.get $3 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $3 local.set $7 local.get $7 if (result i32) @@ -17173,128 +16612,20 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - local.get $6 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $8 - local.get $7 - local.tee $9 - i32.ne - if - local.get $8 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end - local.get $8 - end - local.set $7 - local.get $7 - if - block (result i32) - local.get $4 - local.get $7 - local.get $1 - call $~lib/array/Array#join - local.tee $8 - call $~lib/string/String.__concat - local.tee $9 - local.tee $10 - local.get $4 - local.tee $11 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $11 - call $~lib/rt/pure/__release - end - local.get $10 - end - local.set $4 - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - end - local.get $5 - if - block (result i32) - local.get $4 - local.get $1 - call $~lib/string/String.__concat - local.tee $9 - local.tee $11 - local.get $4 - local.tee $8 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $11 - end - local.set $4 - local.get $9 - call $~lib/rt/pure/__release - end + local.get $6 local.get $3 - i32.const 1 + i32.const 2 + i32.shl i32.add - local.set $3 - br $repeat|0 - unreachable - end - unreachable - end - block (result i32) - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $10 - local.get $7 - local.tee $3 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $3 - call $~lib/rt/pure/__release - end - local.get $10 - end - local.set $7 - local.get $7 - if - block (result i32) - local.get $4 - local.get $7 - local.get $1 - call $~lib/array/Array#join - local.tee $10 - call $~lib/string/String.__concat - local.tee $3 + i32.load local.tee $8 - local.get $4 + local.get $7 local.tee $9 i32.ne if @@ -17305,7 +16636,104 @@ call $~lib/rt/pure/__release end local.get $8 + local.set $7 + local.get $7 + if + local.get $4 + local.get $7 + local.get $1 + call $~lib/array/Array#join + local.tee $8 + call $~lib/string/String.__concat + local.tee $9 + local.tee $10 + local.get $4 + local.tee $11 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $11 + call $~lib/rt/pure/__release + end + local.get $10 + local.set $4 + local.get $8 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + end + local.get $5 + if + local.get $4 + local.get $1 + call $~lib/string/String.__concat + local.tee $9 + local.tee $11 + local.get $4 + local.tee $8 + i32.ne + if + local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end + local.get $11 + local.set $4 + local.get $9 + call $~lib/rt/pure/__release + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 end + unreachable + end + local.get $6 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + local.get $7 + local.tee $3 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release + end + local.get $10 + local.set $7 + local.get $7 + if + local.get $4 + local.get $7 + local.get $1 + call $~lib/array/Array#join + local.tee $10 + call $~lib/string/String.__concat + local.tee $3 + local.tee $8 + local.get $4 + local.tee $9 + i32.ne + if + local.get $8 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release + end + local.get $8 local.set $4 local.get $10 call $~lib/rt/pure/__release @@ -17384,22 +16812,20 @@ local.get $2 i32.eqz if - block (result i32) - local.get $6 - i32.load - local.tee $3 - local.get $7 - local.tee $8 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $6 + i32.load + local.tee $3 + local.get $7 + local.tee $8 + i32.ne + if local.get $3 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $3 local.set $7 local.get $7 if (result i32) @@ -17423,128 +16849,20 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - local.get $6 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $8 - local.get $7 - local.tee $9 - i32.ne - if - local.get $8 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end - local.get $8 - end - local.set $7 - local.get $7 - if - block (result i32) - local.get $4 - local.get $7 - local.get $1 - call $~lib/array/Array#join - local.tee $8 - call $~lib/string/String.__concat - local.tee $9 - local.tee $10 - local.get $4 - local.tee $11 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $11 - call $~lib/rt/pure/__release - end - local.get $10 - end - local.set $4 - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - end - local.get $5 - if - block (result i32) - local.get $4 - local.get $1 - call $~lib/string/String.__concat - local.tee $9 - local.tee $11 - local.get $4 - local.tee $8 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $11 - end - local.set $4 - local.get $9 - call $~lib/rt/pure/__release - end + local.get $6 local.get $3 - i32.const 1 + i32.const 2 + i32.shl i32.add - local.set $3 - br $repeat|0 - unreachable - end - unreachable - end - block (result i32) - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $10 - local.get $7 - local.tee $3 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $3 - call $~lib/rt/pure/__release - end - local.get $10 - end - local.set $7 - local.get $7 - if - block (result i32) - local.get $4 - local.get $7 - local.get $1 - call $~lib/array/Array#join - local.tee $10 - call $~lib/string/String.__concat - local.tee $3 + i32.load local.tee $8 - local.get $4 + local.get $7 local.tee $9 i32.ne if @@ -17555,7 +16873,104 @@ call $~lib/rt/pure/__release end local.get $8 + local.set $7 + local.get $7 + if + local.get $4 + local.get $7 + local.get $1 + call $~lib/array/Array#join + local.tee $8 + call $~lib/string/String.__concat + local.tee $9 + local.tee $10 + local.get $4 + local.tee $11 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $11 + call $~lib/rt/pure/__release + end + local.get $10 + local.set $4 + local.get $8 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + end + local.get $5 + if + local.get $4 + local.get $1 + call $~lib/string/String.__concat + local.tee $9 + local.tee $11 + local.get $4 + local.tee $8 + i32.ne + if + local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end + local.get $11 + local.set $4 + local.get $9 + call $~lib/rt/pure/__release + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 end + unreachable + end + local.get $6 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + local.get $7 + local.tee $3 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release + end + local.get $10 + local.set $7 + local.get $7 + if + local.get $4 + local.get $7 + local.get $1 + call $~lib/array/Array#join + local.tee $10 + call $~lib/string/String.__concat + local.tee $3 + local.tee $8 + local.get $4 + local.tee $9 + i32.ne + if + local.get $8 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release + end + local.get $8 local.set $4 local.get $10 call $~lib/rt/pure/__release @@ -17629,22 +17044,20 @@ local.get $2 i32.eqz if - block (result i32) - local.get $6 - i32.load - local.tee $3 - local.get $7 - local.tee $8 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $6 + i32.load + local.tee $3 + local.get $7 + local.tee $8 + i32.ne + if local.get $3 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $3 local.set $7 local.get $7 if (result i32) @@ -17668,128 +17081,20 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $2 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - local.get $6 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $8 - local.get $7 - local.tee $9 - i32.ne - if - local.get $8 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end - local.get $8 - end - local.set $7 - local.get $7 - if - block (result i32) - local.get $4 - local.get $7 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#join - local.tee $8 - call $~lib/string/String.__concat - local.tee $9 - local.tee $10 - local.get $4 - local.tee $11 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $11 - call $~lib/rt/pure/__release - end - local.get $10 - end - local.set $4 - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - end - local.get $5 - if - block (result i32) - local.get $4 - local.get $1 - call $~lib/string/String.__concat - local.tee $9 - local.tee $11 - local.get $4 - local.tee $8 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end - local.get $11 - end - local.set $4 - local.get $9 - call $~lib/rt/pure/__release - end + local.get $6 local.get $3 - i32.const 1 + i32.const 2 + i32.shl i32.add - local.set $3 - br $repeat|0 - unreachable - end - unreachable - end - block (result i32) - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $10 - local.get $7 - local.tee $3 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $3 - call $~lib/rt/pure/__release - end - local.get $10 - end - local.set $7 - local.get $7 - if - block (result i32) - local.get $4 - local.get $7 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#join - local.tee $10 - call $~lib/string/String.__concat - local.tee $3 + i32.load local.tee $8 - local.get $4 + local.get $7 local.tee $9 i32.ne if @@ -17800,7 +17105,104 @@ call $~lib/rt/pure/__release end local.get $8 + local.set $7 + local.get $7 + if + local.get $4 + local.get $7 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#join + local.tee $8 + call $~lib/string/String.__concat + local.tee $9 + local.tee $10 + local.get $4 + local.tee $11 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $11 + call $~lib/rt/pure/__release + end + local.get $10 + local.set $4 + local.get $8 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + end + local.get $5 + if + local.get $4 + local.get $1 + call $~lib/string/String.__concat + local.tee $9 + local.tee $11 + local.get $4 + local.tee $8 + i32.ne + if + local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release + end + local.get $11 + local.set $4 + local.get $9 + call $~lib/rt/pure/__release + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $loop|0 end + unreachable + end + local.get $6 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $10 + local.get $7 + local.tee $3 + i32.ne + if + local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release + end + local.get $10 + local.set $7 + local.get $7 + if + local.get $4 + local.get $7 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#join + local.tee $10 + call $~lib/string/String.__concat + local.tee $3 + local.tee $8 + local.get $4 + local.tee $9 + i32.ne + if + local.get $8 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release + end + local.get $8 local.set $4 local.get $10 call $~lib/rt/pure/__release @@ -17896,5766 +17298,5647 @@ i32.const 0 call $~lib/array/Array#constructor global.set $std/array/arr - block + i32.const 0 + call $~lib/array/Array.isArray<~lib/array/Array | null> + i32.const 0 + i32.eq + i32.eqz + if i32.const 0 - call $~lib/array/Array.isArray<~lib/array/Array | null> - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 35 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array.isArray<~lib/array/Array> - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $std/array/P#constructor - local.tee $0 - call $~lib/array/Array.isArray - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 37 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 38 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/array/Array.isArray - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 39 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 416 - call $~lib/array/Array.isArray<~lib/string/String> - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 40 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - end - block - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 440 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $1 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 464 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 48 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $1 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 536 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 51 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $1 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 560 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 54 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 + i32.const 376 + i32.const 35 i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $1 - i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array.isArray<~lib/array/Array> + i32.const 1 + i32.eq + i32.eqz + if i32.const 0 - i32.const 6 - i32.const 584 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 + i32.const 376 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $std/array/P#constructor + local.tee $0 + call $~lib/array/Array.isArray + i32.const 0 + i32.eq + i32.eqz + if i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 57 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 + i32.const 376 + i32.const 37 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + call $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> + i32.const 0 + i32.eq + i32.eqz + if i32.const 0 - i32.const 1 + i32.const 376 + i32.const 38 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $~lib/array/Array.isArray + i32.const 0 + i32.eq + i32.eqz + if i32.const 0 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $1 - i32.const 5 + i32.const 376 + i32.const 39 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 416 + call $~lib/array/Array.isArray<~lib/string/String> + i32.const 0 + i32.eq + i32.eqz + if i32.const 0 - i32.const 6 - i32.const 608 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 + i32.const 376 + i32.const 40 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + i32.const 5 + i32.const 0 + i32.const 6 + i32.const 440 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $0 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/array/Array#fill + call $~lib/rt/pure/__release + local.get $1 + i32.const 5 + i32.const 0 + i32.const 6 + i32.const 464 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $3 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 60 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + i32.const 376 + i32.const 48 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#fill + call $~lib/rt/pure/__release + local.get $1 + i32.const 5 + i32.const 0 + i32.const 6 + i32.const 536 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 51 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/array/Array#fill + call $~lib/rt/pure/__release + local.get $1 + i32.const 5 + i32.const 0 + i32.const 6 + i32.const 560 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $5 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 54 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#fill + call $~lib/rt/pure/__release + local.get $1 + i32.const 5 + i32.const 0 + i32.const 6 + i32.const 584 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $6 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 57 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/array/Array#fill + call $~lib/rt/pure/__release + local.get $1 + i32.const 5 + i32.const 0 + i32.const 6 + i32.const 608 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $7 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 60 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 632 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $6 + call $~lib/rt/pure/__retain + local.set $7 + local.get $7 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/array/Array#fill + call $~lib/rt/pure/__release + local.get $7 + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 672 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $4 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 67 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#fill + call $~lib/rt/pure/__release + local.get $7 + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 712 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $3 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 70 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/array/Array#fill + call $~lib/rt/pure/__release + local.get $7 + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 752 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $1 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 73 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 2 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#fill + call $~lib/rt/pure/__release + local.get $7 + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 792 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 76 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/array/Array#fill + call $~lib/rt/pure/__release + local.get $7 + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 832 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 79 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $6 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 85 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 86 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 42 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 90 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 91 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 92 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + local.set $2 + local.get $2 + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 96 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 97 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 98 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + call $~lib/array/Array#push + drop + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 102 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 44 + call $~lib/array/Array#push + drop + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 108 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 109 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 110 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 111 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 45 + call $~lib/array/Array#push + drop + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 115 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 116 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 117 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 118 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 119 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.set $2 + global.get $std/array/arr + local.get $2 + call $~lib/array/Array#concat + local.set $0 + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 128 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 129 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 130 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 920 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $3 + call $~lib/array/Array#concat + call $~lib/rt/pure/__release + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 133 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 135 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 136 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 137 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 46 + call $~lib/array/Array#push + drop + local.get $2 + i32.const 47 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.get $2 + call $~lib/array/Array#concat + local.set $5 + local.get $0 + call $~lib/rt/pure/__release + local.get $5 + local.set $0 + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 144 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 145 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/array/Array#get:length + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 146 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 147 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 148 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 149 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + call $~lib/array/Array#__get + i32.const 46 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 150 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 4 + call $~lib/array/Array#__get + i32.const 47 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 151 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/array/Array#pop + drop + local.get $0 + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 154 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#concat + local.set $6 + local.get $0 + call $~lib/rt/pure/__release + local.get $6 + local.set $0 + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 157 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 158 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 936 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $5 + call $~lib/rt/pure/__retain + local.set $6 + local.get $6 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 161 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $6 + global.get $std/array/arr + call $~lib/array/Array#concat + local.set $7 + local.get $0 + call $~lib/rt/pure/__release + local.get $7 + local.set $0 + local.get $0 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 163 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $6 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 164 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + i32.const 0 + local.set $6 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 952 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $3 + local.tee $4 + local.get $6 + local.tee $5 + i32.ne + if local.get $4 - call $~lib/rt/pure/__release + call $~lib/rt/pure/__retain + drop local.get $5 call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release end - block - i32.const 5 + local.get $4 + local.set $6 + local.get $6 + i32.const 0 + i32.const 3 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin + local.tee $4 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 992 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $0 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 172 i32.const 2 - i32.const 7 - i32.const 632 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $7 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 672 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 67 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $7 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 712 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 70 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $7 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 752 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 73 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $7 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 792 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 76 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $7 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 832 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 79 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1032 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $2 + local.tee $1 + local.get $6 + local.tee $5 + i32.ne + if local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - end - block - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 85 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 86 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 42 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 90 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 91 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 92 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - local.set $2 - local.get $2 - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 96 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 97 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 98 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - call $~lib/array/Array#push - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 102 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 104 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 44 - call $~lib/array/Array#push - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 108 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 109 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 110 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 111 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 45 - call $~lib/array/Array#push - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 115 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 116 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 117 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 118 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 119 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - end - block - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.set $2 - global.get $std/array/arr - local.get $2 - call $~lib/array/Array#concat - local.set $0 - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 128 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 129 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 130 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 920 - call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $3 - call $~lib/array/Array#concat - call $~lib/rt/pure/__release - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 133 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 135 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 136 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 137 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 46 - call $~lib/array/Array#push drop - local.get $2 - i32.const 47 - call $~lib/array/Array#push - drop - block (result i32) - global.get $std/array/arr - local.get $2 - call $~lib/array/Array#concat - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $5 - end - local.set $0 - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 144 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 145 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/array/Array#get:length - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 146 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 147 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 148 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 149 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/array/Array#__get - i32.const 46 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 150 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - call $~lib/array/Array#__get - i32.const 47 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 151 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/array/Array#pop - drop - local.get $0 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 154 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#concat - local.set $6 - local.get $0 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 157 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 158 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 936 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 161 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $6 - global.get $std/array/arr - call $~lib/array/Array#concat - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - end - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 163 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 164 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release end - block + local.get $1 + local.set $6 + local.get $6 + i32.const 1 + i32.const 3 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin + local.tee $1 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1072 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $7 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if i32.const 0 - local.set $6 - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 952 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - local.tee $4 - local.get $6 - local.tee $5 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - drop - local.get $5 - call $~lib/rt/pure/__release - end - local.get $4 - end - local.set $6 - local.get $6 - i32.const 0 - i32.const 3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $4 - i32.const 5 + i32.const 376 + i32.const 174 i32.const 2 - i32.const 3 - i32.const 992 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 172 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1032 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - local.tee $1 - local.get $6 - local.tee $5 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $5 - call $~lib/rt/pure/__release - end - local.get $1 - end - local.set $6 - local.get $6 - i32.const 1 - i32.const 3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $1 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1072 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 174 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1112 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - local.tee $5 - local.get $6 - local.tee $9 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end - local.get $5 - end - local.set $6 - local.get $6 - i32.const 1 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $5 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1152 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $10 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 176 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1192 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $11 - local.tee $9 - local.get $6 - local.tee $12 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $12 - call $~lib/rt/pure/__release - end - local.get $9 - end - local.set $6 - local.get $6 - i32.const 2 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $9 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1232 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $13 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 178 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1272 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $14 - local.tee $12 - local.get $6 - local.tee $15 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - drop - local.get $15 - call $~lib/rt/pure/__release - end - local.get $12 - end - local.set $6 - local.get $6 - i32.const 0 - i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $12 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1312 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $16 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 180 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1352 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $17 - local.tee $15 - local.get $6 - local.tee $18 - i32.ne - if - local.get $15 - call $~lib/rt/pure/__retain - drop - local.get $18 - call $~lib/rt/pure/__release - end - local.get $15 - end - local.set $6 - local.get $6 - i32.const 1 - i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $15 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1392 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $19 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 182 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1432 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $20 - local.tee $18 - local.get $6 - local.tee $21 - i32.ne - if - local.get $18 - call $~lib/rt/pure/__retain - drop - local.get $21 - call $~lib/rt/pure/__release - end - local.get $18 - end - local.set $6 - local.get $6 - i32.const 1 - i32.const 2 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $18 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1472 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $22 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 184 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1512 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $23 - local.tee $21 - local.get $6 - local.tee $24 - i32.ne - if - local.get $21 - call $~lib/rt/pure/__retain - drop - local.get $24 - call $~lib/rt/pure/__release - end - local.get $21 - end - local.set $6 - local.get $6 - i32.const 0 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $21 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1552 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $25 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 186 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1592 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $26 - local.tee $24 - local.get $6 - local.tee $27 - i32.ne - if - local.get $24 - call $~lib/rt/pure/__retain - drop - local.get $27 - call $~lib/rt/pure/__release - end - local.get $24 - end - local.set $6 - local.get $6 - i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/array/Array#copyWithin - local.tee $24 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1632 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $28 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 188 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1672 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $29 - local.tee $27 - local.get $6 - local.tee $30 - i32.ne - if - local.get $27 - call $~lib/rt/pure/__retain - drop - local.get $30 - call $~lib/rt/pure/__release - end - local.get $27 - end - local.set $6 - local.get $6 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/array/Array#copyWithin - local.tee $27 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1712 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $31 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 190 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1752 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $32 - local.tee $30 - local.get $6 - local.tee $33 - i32.ne - if - local.get $30 - call $~lib/rt/pure/__retain - drop - local.get $33 - call $~lib/rt/pure/__release - end - local.get $30 - end - local.set $6 - local.get $6 - i32.const -4 - i32.const -3 - i32.const -1 - call $~lib/array/Array#copyWithin - local.tee $30 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1792 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $34 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 192 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1832 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $35 - local.tee $33 - local.get $6 - local.tee $36 - i32.ne - if - local.get $33 - call $~lib/rt/pure/__retain - drop - local.get $36 - call $~lib/rt/pure/__release - end - local.get $33 - end - local.set $6 - local.get $6 - i32.const -4 - i32.const -3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $33 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1872 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $37 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 194 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1112 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $8 + local.tee $5 + local.get $6 + local.tee $9 + i32.ne + if local.get $5 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release + call $~lib/rt/pure/__retain + drop local.get $9 call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release + end + local.get $5 + local.set $6 + local.get $6 + i32.const 1 + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin + local.tee $5 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1152 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $10 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 176 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1192 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $11 + local.tee $9 + local.get $6 + local.tee $12 + i32.ne + if + local.get $9 + call $~lib/rt/pure/__retain + drop local.get $12 call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release + end + local.get $9 + local.set $6 + local.get $6 + i32.const 2 + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin + local.tee $9 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1232 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $13 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 178 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1272 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $14 + local.tee $12 + local.get $6 + local.tee $15 + i32.ne + if + local.get $12 + call $~lib/rt/pure/__retain + drop local.get $15 call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release + end + local.get $12 + local.set $6 + local.get $6 + i32.const 0 + i32.const 3 + i32.const 4 + call $~lib/array/Array#copyWithin + local.tee $12 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1312 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $16 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 180 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1352 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $17 + local.tee $15 + local.get $6 + local.tee $18 + i32.ne + if + local.get $15 + call $~lib/rt/pure/__retain + drop local.get $18 call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release + end + local.get $15 + local.set $6 + local.get $6 + i32.const 1 + i32.const 3 + i32.const 4 + call $~lib/array/Array#copyWithin + local.tee $15 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1392 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $19 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 182 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1432 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $20 + local.tee $18 + local.get $6 + local.tee $21 + i32.ne + if + local.get $18 + call $~lib/rt/pure/__retain + drop local.get $21 call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release + end + local.get $18 + local.set $6 + local.get $6 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/array/Array#copyWithin + local.tee $18 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1472 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $22 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 184 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1512 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $23 + local.tee $21 + local.get $6 + local.tee $24 + i32.ne + if + local.get $21 + call $~lib/rt/pure/__retain + drop local.get $24 call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release + end + local.get $21 + local.set $6 + local.get $6 + i32.const 0 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin + local.tee $21 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1552 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $25 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 186 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1592 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $26 + local.tee $24 + local.get $6 + local.tee $27 + i32.ne + if + local.get $24 + call $~lib/rt/pure/__retain + drop local.get $27 call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release + end + local.get $24 + local.set $6 + local.get $6 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/array/Array#copyWithin + local.tee $24 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1632 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $28 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 188 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1672 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $29 + local.tee $27 + local.get $6 + local.tee $30 + i32.ne + if + local.get $27 + call $~lib/rt/pure/__retain + drop local.get $30 call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release end - block - global.get $std/array/arr - i32.const 42 - call $~lib/array/Array#unshift - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 202 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 203 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr + local.get $27 + local.set $6 + local.get $6 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/array/Array#copyWithin + local.tee $27 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1712 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $31 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 204 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 205 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr + i32.const 376 + i32.const 190 i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 206 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 207 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 41 - call $~lib/array/Array#unshift - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 211 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 212 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 41 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 213 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 214 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 215 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 216 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 217 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + call $~lib/builtins/abort + unreachable end - block - global.get $std/array/arr - call $~lib/array/Array#shift - global.set $std/array/i - global.get $std/array/i - i32.const 41 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 226 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 227 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 228 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 229 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 230 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 231 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 232 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - global.set $std/array/i - global.get $std/array/i - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 236 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 237 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 238 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 239 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 240 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 241 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - end - block - global.get $std/array/arr - call $~lib/array/Array#reverse - call $~lib/rt/pure/__release - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 249 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 250 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 251 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 252 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 253 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 44 - call $~lib/array/Array#push - drop - end - block - global.get $std/array/arr - i32.const 44 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 263 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 42 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 266 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 45 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 269 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 272 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 275 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 278 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -4 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 281 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 284 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 1 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 287 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 290 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - end - block - global.get $std/array/arr - i32.const 44 - i32.const 0 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 297 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 42 - i32.const 0 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 300 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 45 - i32.const 0 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 303 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 100 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 306 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -100 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 309 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -2 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 312 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const -4 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 315 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 0 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 318 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 1 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 321 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 43 - i32.const 2 - call $~lib/array/Array#includes - local.set $37 - local.get $37 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 324 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - i32.const 1 - call $~lib/array/Array#splice - call $~lib/rt/pure/__release - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 328 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 329 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 44 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 330 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 42 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 331 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - end - block - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1912 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $33 - call $~lib/rt/pure/__retain - local.set $37 - local.get $37 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.tee $35 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1952 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $30 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 338 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 1992 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $32 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 339 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2008 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $31 - local.tee $36 - local.get $37 - local.tee $34 - i32.ne - if - local.get $36 - call $~lib/rt/pure/__retain - drop - local.get $34 - call $~lib/rt/pure/__release - end - local.get $36 - end - local.set $37 - local.get $37 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.tee $36 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 2048 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $27 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 342 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 2080 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $29 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 343 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2104 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $28 - local.tee $6 - local.get $37 - local.tee $34 - i32.ne - if - local.get $6 - call $~lib/rt/pure/__retain - drop - local.get $34 - call $~lib/rt/pure/__release - end - local.get $6 - end - local.set $37 - local.get $37 - i32.const 2 - i32.const 2 - call $~lib/array/Array#splice - local.tee $6 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 2144 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $24 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 346 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 2168 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $26 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 347 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2200 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $25 - local.tee $3 - local.get $37 - local.tee $34 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - drop - local.get $34 - call $~lib/rt/pure/__release - end - local.get $3 - end - local.set $37 - local.get $37 - i32.const 0 - i32.const 1 - call $~lib/array/Array#splice - local.tee $3 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 2240 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $21 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 350 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 2264 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $23 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 351 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2296 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $22 - local.tee $4 - local.get $37 - local.tee $34 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - drop - local.get $34 - call $~lib/rt/pure/__release - end - local.get $4 - end - local.set $37 - local.get $37 - i32.const -1 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.tee $4 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 2336 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $18 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 354 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 2360 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $20 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 355 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2392 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $19 - local.tee $0 - local.get $37 - local.tee $34 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - drop - local.get $34 - call $~lib/rt/pure/__release - end - local.get $0 - end - local.set $37 - local.get $37 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#splice - local.tee $0 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 2432 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $15 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 358 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 2456 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $17 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 359 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2488 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $16 - local.tee $2 - local.get $37 - local.tee $34 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - drop - local.get $34 - call $~lib/rt/pure/__release - end - local.get $2 - end - local.set $37 - local.get $37 - i32.const -2 - i32.const 1 - call $~lib/array/Array#splice - local.tee $2 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 2528 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $12 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 362 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 2552 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $14 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 363 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2584 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $13 - local.tee $1 - local.get $37 - local.tee $34 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $34 - call $~lib/rt/pure/__release - end - local.get $1 - end - local.set $37 - local.get $37 - i32.const -7 - i32.const 1 - call $~lib/array/Array#splice - local.tee $1 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 2624 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 366 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 2648 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $11 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 367 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2680 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $10 - local.tee $7 - local.get $37 - local.tee $34 - i32.ne - if - local.get $7 - call $~lib/rt/pure/__retain - drop - local.get $34 - call $~lib/rt/pure/__release - end - local.get $7 - end - local.set $37 - local.get $37 - i32.const -2 - i32.const -1 - call $~lib/array/Array#splice - local.tee $7 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2720 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 370 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2736 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 371 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2776 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $38 - local.tee $34 - local.get $37 - local.tee $39 - i32.ne - if - local.get $34 - call $~lib/rt/pure/__retain - drop - local.get $39 - call $~lib/rt/pure/__release - end - local.get $34 - end - local.set $37 - local.get $37 - i32.const 1 - i32.const -2 - call $~lib/array/Array#splice - local.tee $34 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2816 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $40 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 374 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2832 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 375 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2872 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $42 - local.tee $39 - local.get $37 - local.tee $43 - i32.ne - if - local.get $39 - call $~lib/rt/pure/__retain - drop - local.get $43 - call $~lib/rt/pure/__release - end - local.get $39 - end - local.set $37 - local.get $37 - i32.const 4 - i32.const 0 - call $~lib/array/Array#splice - local.tee $39 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2912 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $44 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 378 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2928 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $45 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 379 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2968 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $46 - local.tee $43 - local.get $37 - local.tee $47 - i32.ne - if - local.get $43 - call $~lib/rt/pure/__retain - drop - local.get $47 - call $~lib/rt/pure/__release - end - local.get $43 - end - local.set $37 - local.get $37 - i32.const 7 - i32.const 0 - call $~lib/array/Array#splice - local.tee $43 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 3008 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $48 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 382 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3024 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $49 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 383 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3064 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $50 - local.tee $47 - local.get $37 - local.tee $51 - i32.ne - if - local.get $47 - call $~lib/rt/pure/__retain - drop - local.get $51 - call $~lib/rt/pure/__release - end - local.get $47 - end - local.set $37 - local.get $37 - i32.const 7 - i32.const 5 - call $~lib/array/Array#splice - local.tee $47 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 3104 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $52 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 386 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $37 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3120 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $53 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 387 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $33 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1752 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $32 + local.tee $30 + local.get $6 + local.tee $33 + i32.ne + if local.get $30 + call $~lib/rt/pure/__retain + drop + local.get $33 call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release + end + local.get $30 + local.set $6 + local.get $6 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/array/Array#copyWithin + local.tee $30 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1792 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $34 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 192 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1832 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $35 + local.tee $33 + local.get $6 + local.tee $36 + i32.ne + if + local.get $33 + call $~lib/rt/pure/__retain + drop local.get $36 call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release + end + local.get $33 + local.set $6 + local.get $6 + i32.const -4 + i32.const -3 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin + local.tee $33 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1872 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $37 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 194 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $6 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + local.get $13 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + local.get $12 + call $~lib/rt/pure/__release + local.get $16 + call $~lib/rt/pure/__release + local.get $17 + call $~lib/rt/pure/__release + local.get $15 + call $~lib/rt/pure/__release + local.get $19 + call $~lib/rt/pure/__release + local.get $20 + call $~lib/rt/pure/__release + local.get $18 + call $~lib/rt/pure/__release + local.get $22 + call $~lib/rt/pure/__release + local.get $23 + call $~lib/rt/pure/__release + local.get $21 + call $~lib/rt/pure/__release + local.get $25 + call $~lib/rt/pure/__release + local.get $26 + call $~lib/rt/pure/__release + local.get $24 + call $~lib/rt/pure/__release + local.get $28 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $27 + call $~lib/rt/pure/__release + local.get $31 + call $~lib/rt/pure/__release + local.get $32 + call $~lib/rt/pure/__release + local.get $30 + call $~lib/rt/pure/__release + local.get $34 + call $~lib/rt/pure/__release + local.get $35 + call $~lib/rt/pure/__release + local.get $33 + call $~lib/rt/pure/__release + local.get $37 + call $~lib/rt/pure/__release + global.get $std/array/arr + i32.const 42 + call $~lib/array/Array#unshift + drop + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 202 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 203 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 204 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 205 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 206 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 207 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 41 + call $~lib/array/Array#unshift + drop + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 211 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 212 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 41 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 213 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 214 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 215 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 216 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 4 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 217 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#shift + global.set $std/array/i + global.get $std/array/i + i32.const 41 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 226 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 227 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 228 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 229 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 230 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 231 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 232 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + global.set $std/array/i + global.get $std/array/i + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 236 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 237 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 238 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 239 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 240 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 241 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#reverse + call $~lib/rt/pure/__release + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 249 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 250 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 251 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 252 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 253 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 44 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 44 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 263 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 42 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 266 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 45 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 269 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 100 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 272 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const -100 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 275 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const -2 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 278 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const -4 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 281 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 0 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 284 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 1 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 287 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 2 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 290 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 44 + i32.const 0 + call $~lib/array/Array#includes + local.set $37 + local.get $37 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 297 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 42 + i32.const 0 + call $~lib/array/Array#includes + local.set $37 + local.get $37 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 300 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 45 + i32.const 0 + call $~lib/array/Array#includes + local.set $37 + local.get $37 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 303 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 100 + call $~lib/array/Array#includes + local.set $37 + local.get $37 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 306 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const -100 + call $~lib/array/Array#includes + local.set $37 + local.get $37 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 309 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const -2 + call $~lib/array/Array#includes + local.set $37 + local.get $37 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 312 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const -4 + call $~lib/array/Array#includes + local.set $37 + local.get $37 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 315 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 0 + call $~lib/array/Array#includes + local.set $37 + local.get $37 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 318 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 1 + call $~lib/array/Array#includes + local.set $37 + local.get $37 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 321 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 43 + i32.const 2 + call $~lib/array/Array#includes + local.set $37 + local.get $37 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 324 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + i32.const 1 + call $~lib/array/Array#splice + call $~lib/rt/pure/__release + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 328 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $std/array/internalCapacity + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 329 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 330 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#__get + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 331 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1912 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $33 + call $~lib/rt/pure/__retain + local.set $37 + local.get $37 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#splice + local.tee $35 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1952 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $30 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 338 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 1992 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $32 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 339 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2008 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $31 + local.tee $36 + local.get $37 + local.tee $34 + i32.ne + if + local.get $36 + call $~lib/rt/pure/__retain + drop local.get $34 call $~lib/rt/pure/__release - local.get $40 + end + local.get $36 + local.set $37 + local.get $37 + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#splice + local.tee $36 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 2048 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $27 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 342 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 2080 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $29 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 343 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2104 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $28 + local.tee $6 + local.get $37 + local.tee $34 + i32.ne + if + local.get $6 + call $~lib/rt/pure/__retain + drop + local.get $34 call $~lib/rt/pure/__release - local.get $41 + end + local.get $6 + local.set $37 + local.get $37 + i32.const 2 + i32.const 2 + call $~lib/array/Array#splice + local.tee $6 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 2144 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $24 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 346 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 2168 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $26 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 347 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2200 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $25 + local.tee $3 + local.get $37 + local.tee $34 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + drop + local.get $34 call $~lib/rt/pure/__release - local.get $42 + end + local.get $3 + local.set $37 + local.get $37 + i32.const 0 + i32.const 1 + call $~lib/array/Array#splice + local.tee $3 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 2240 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $21 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 350 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 2264 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $23 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 351 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2296 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $22 + local.tee $4 + local.get $37 + local.tee $34 + i32.ne + if + local.get $4 + call $~lib/rt/pure/__retain + drop + local.get $34 call $~lib/rt/pure/__release + end + local.get $4 + local.set $37 + local.get $37 + i32.const -1 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#splice + local.tee $4 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 2336 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $18 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 354 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 2360 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $20 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 355 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2392 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $19 + local.tee $0 + local.get $37 + local.tee $34 + i32.ne + if + local.get $0 + call $~lib/rt/pure/__retain + drop + local.get $34 + call $~lib/rt/pure/__release + end + local.get $0 + local.set $37 + local.get $37 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#splice + local.tee $0 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 2432 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $15 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 358 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 2456 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $17 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 359 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2488 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $16 + local.tee $2 + local.get $37 + local.tee $34 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $34 + call $~lib/rt/pure/__release + end + local.get $2 + local.set $37 + local.get $37 + i32.const -2 + i32.const 1 + call $~lib/array/Array#splice + local.tee $2 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 2528 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $12 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 362 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 2552 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $14 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 363 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2584 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $13 + local.tee $1 + local.get $37 + local.tee $34 + i32.ne + if + local.get $1 + call $~lib/rt/pure/__retain + drop + local.get $34 + call $~lib/rt/pure/__release + end + local.get $1 + local.set $37 + local.get $37 + i32.const -7 + i32.const 1 + call $~lib/array/Array#splice + local.tee $1 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 2624 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $9 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 366 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 2648 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $11 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 367 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2680 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $10 + local.tee $7 + local.get $37 + local.tee $34 + i32.ne + if + local.get $7 + call $~lib/rt/pure/__retain + drop + local.get $34 + call $~lib/rt/pure/__release + end + local.get $7 + local.set $37 + local.get $37 + i32.const -2 + i32.const -1 + call $~lib/array/Array#splice + local.tee $7 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 2720 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $5 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 370 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2736 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 371 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2776 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $38 + local.tee $34 + local.get $37 + local.tee $39 + i32.ne + if + local.get $34 + call $~lib/rt/pure/__retain + drop local.get $39 call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release + end + local.get $34 + local.set $37 + local.get $37 + i32.const 1 + i32.const -2 + call $~lib/array/Array#splice + local.tee $34 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 2816 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $40 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 374 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2832 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $41 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 375 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2872 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $42 + local.tee $39 + local.get $37 + local.tee $43 + i32.ne + if + local.get $39 + call $~lib/rt/pure/__retain + drop local.get $43 call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release + end + local.get $39 + local.set $37 + local.get $37 + i32.const 4 + i32.const 0 + call $~lib/array/Array#splice + local.tee $39 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 2912 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $44 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 378 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2928 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $45 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 379 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2968 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $46 + local.tee $43 + local.get $37 + local.tee $47 + i32.ne + if + local.get $43 + call $~lib/rt/pure/__retain + drop local.get $47 call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $53 + end + local.get $43 + local.set $37 + local.get $37 + i32.const 7 + i32.const 0 + call $~lib/array/Array#splice + local.tee $43 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 3008 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $48 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 382 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $37 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3024 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $49 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 383 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3064 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $50 + local.tee $47 + local.get $37 + local.tee $51 + i32.ne + if + local.get $47 + call $~lib/rt/pure/__retain + drop + local.get $51 call $~lib/rt/pure/__release end - block - global.get $std/array/arr + local.get $47 + local.set $37 + local.get $37 + i32.const 7 + i32.const 5 + call $~lib/array/Array#splice + local.tee $47 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 3104 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $52 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if i32.const 0 - i32.const 0 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 1 - i32.const 1 - call $~lib/array/Array#__set - global.get $std/array/arr + i32.const 376 + i32.const 386 i32.const 2 - i32.const 2 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 3 - i32.const 3 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 400 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 403 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 406 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 414 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 415 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 5 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 417 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 6 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 430 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 431 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop + call $~lib/builtins/abort + unreachable end - block - global.get $std/array/arr - i32.const 7 - call $~lib/array/Array#every - local.set $53 - local.get $53 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 441 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 8 - call $~lib/array/Array#every - local.set $53 - local.get $53 + local.get $37 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3120 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $53 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 444 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 9 - call $~lib/array/Array#every - local.set $53 - local.get $53 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 452 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 453 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 10 - call $~lib/array/Array#every - local.set $53 - local.get $53 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 455 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 11 - call $~lib/array/Array#every - local.set $53 - local.get $53 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 468 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length + i32.const 376 + i32.const 387 i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 469 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop + call $~lib/builtins/abort + unreachable end - block - global.get $std/array/arr - i32.const 12 - call $~lib/array/Array#some - local.set $53 - local.get $53 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 479 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 13 - call $~lib/array/Array#some - local.set $53 - local.get $53 + local.get $33 + call $~lib/rt/pure/__release + local.get $37 + call $~lib/rt/pure/__release + local.get $35 + call $~lib/rt/pure/__release + local.get $30 + call $~lib/rt/pure/__release + local.get $32 + call $~lib/rt/pure/__release + local.get $31 + call $~lib/rt/pure/__release + local.get $36 + call $~lib/rt/pure/__release + local.get $27 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $28 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $24 + call $~lib/rt/pure/__release + local.get $26 + call $~lib/rt/pure/__release + local.get $25 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $21 + call $~lib/rt/pure/__release + local.get $23 + call $~lib/rt/pure/__release + local.get $22 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $18 + call $~lib/rt/pure/__release + local.get $20 + call $~lib/rt/pure/__release + local.get $19 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $15 + call $~lib/rt/pure/__release + local.get $17 + call $~lib/rt/pure/__release + local.get $16 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $12 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + local.get $13 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $38 + call $~lib/rt/pure/__release + local.get $34 + call $~lib/rt/pure/__release + local.get $40 + call $~lib/rt/pure/__release + local.get $41 + call $~lib/rt/pure/__release + local.get $42 + call $~lib/rt/pure/__release + local.get $39 + call $~lib/rt/pure/__release + local.get $44 + call $~lib/rt/pure/__release + local.get $45 + call $~lib/rt/pure/__release + local.get $46 + call $~lib/rt/pure/__release + local.get $43 + call $~lib/rt/pure/__release + local.get $48 + call $~lib/rt/pure/__release + local.get $49 + call $~lib/rt/pure/__release + local.get $50 + call $~lib/rt/pure/__release + local.get $47 + call $~lib/rt/pure/__release + local.get $52 + call $~lib/rt/pure/__release + local.get $53 + call $~lib/rt/pure/__release + global.get $std/array/arr + i32.const 0 + i32.const 0 + call $~lib/array/Array#__set + global.get $std/array/arr + i32.const 1 + i32.const 1 + call $~lib/array/Array#__set + global.get $std/array/arr + i32.const 2 + i32.const 2 + call $~lib/array/Array#__set + global.get $std/array/arr + i32.const 3 + i32.const 3 + call $~lib/array/Array#__set + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const 0 + i32.eq + i32.eqz + if i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 482 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 14 - call $~lib/array/Array#some - local.set $53 - local.get $53 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 490 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 491 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 15 - call $~lib/array/Array#some - local.set $53 - local.get $53 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 493 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 16 - call $~lib/array/Array#some - local.set $53 - local.get $53 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 506 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length + i32.const 376 + i32.const 400 i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 507 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop + call $~lib/builtins/abort + unreachable end - block + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 17 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 518 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + i32.const 376 + i32.const 403 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 18 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 527 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 528 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 19 - call $~lib/array/Array#forEach - global.get $std/array/i + i32.const 376 i32.const 406 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 531 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 4 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 20 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 545 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length + i32.const 376 + i32.const 414 i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 546 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 415 i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 21 - call $~lib/array/Array#forEach - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 571 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block $break|0 - i32.const 0 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 5 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 417 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + i32.const 6 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 430 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 431 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 7 + call $~lib/array/Array#every + local.set $53 + local.get $53 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 441 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 8 + call $~lib/array/Array#every + local.set $53 + local.get $53 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 444 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 9 + call $~lib/array/Array#every + local.set $53 + local.get $53 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 452 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 453 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 10 + call $~lib/array/Array#every + local.set $53 + local.get $53 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 455 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + i32.const 11 + call $~lib/array/Array#every + local.set $53 + local.get $53 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 468 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 469 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 12 + call $~lib/array/Array#some + local.set $53 + local.get $53 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 479 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 13 + call $~lib/array/Array#some + local.set $53 + local.get $53 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 482 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 14 + call $~lib/array/Array#some + local.set $53 + local.get $53 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 490 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 491 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 15 + call $~lib/array/Array#some + local.set $53 + local.get $53 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 493 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + i32.const 16 + call $~lib/array/Array#some + local.set $53 + local.get $53 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 506 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 507 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + drop + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 17 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 518 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 18 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 527 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 528 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 19 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 406 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 531 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 20 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 545 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 546 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 21 + call $~lib/array/Array#forEach + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 571 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + block $break|0 + i32.const 0 + local.set $53 + loop $loop|0 + local.get $53 + i32.const 100 + i32.lt_s + i32.eqz + br_if $break|0 + global.get $std/array/arr + call $~lib/array/Array#pop + drop + local.get $53 + i32.const 1 + i32.add local.set $53 - loop $repeat|0 - local.get $53 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 - global.get $std/array/arr - call $~lib/array/Array#pop - drop - local.get $53 - i32.const 1 - i32.add - local.set $53 - br $repeat|0 - unreachable - end - unreachable + br $loop|0 end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop + unreachable end - block - global.get $std/array/arr - i32.const 22 - call $~lib/array/Array#map - local.set $53 - local.get $53 - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 585 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $53 + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 22 + call $~lib/array/Array#map + local.set $53 + local.get $53 + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + i32.eqz + if i32.const 0 - call $~lib/array/Array#__get - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - f32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 586 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 23 - call $~lib/array/Array#map - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 595 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 596 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 24 - call $~lib/array/Array#map - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 406 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 603 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 25 - call $~lib/array/Array#map - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 618 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length + i32.const 376 + i32.const 585 i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 619 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - local.get $53 - call $~lib/rt/pure/__release + call $~lib/builtins/abort + unreachable end - block - global.get $std/array/arr - i32.const 26 - call $~lib/array/Array#filter - local.set $53 - local.get $53 - call $~lib/array/Array#get:length - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 629 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + local.get $53 + i32.const 0 + call $~lib/array/Array#__get + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + f32.eq + i32.eqz + if i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 27 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 638 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 639 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 28 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 406 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 646 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 29 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 661 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length + i32.const 376 + i32.const 586 i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 662 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - local.get $53 - call $~lib/rt/pure/__release + call $~lib/builtins/abort + unreachable end - block - global.get $std/array/arr - i32.const 30 + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 23 + call $~lib/array/Array#map + call $~lib/rt/pure/__release + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 672 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 31 - i32.const 4 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 676 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 32 - i32.const 0 - call $~lib/array/Array#reduce - local.set $53 - local.get $53 - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 679 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 33 - i32.const 0 - call $~lib/array/Array#reduce - local.set $53 - local.get $53 - i32.const 0 - i32.ne - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 682 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 34 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 690 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 691 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 35 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 693 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 36 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 706 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length + i32.const 376 + i32.const 595 i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 707 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop + call $~lib/builtins/abort + unreachable end - block - global.get $std/array/arr - i32.const 37 + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 717 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 38 - i32.const 4 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 721 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 39 - i32.const 0 - call $~lib/array/Array#reduceRight - local.set $53 - local.get $53 - i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 724 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 40 - i32.const 0 - call $~lib/array/Array#reduceRight - local.set $53 - local.get $53 - i32.const 0 - i32.ne - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 727 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 41 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 735 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 736 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 42 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 738 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 43 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 751 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 752 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#push - drop - global.get $std/array/arr + i32.const 376 + i32.const 596 i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop + call $~lib/builtins/abort + unreachable end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 24 + call $~lib/array/Array#map + call $~lib/rt/pure/__release + global.get $std/array/i + i32.const 406 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 603 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 25 + call $~lib/array/Array#map + call $~lib/rt/pure/__release + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 618 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 619 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + drop + local.get $53 + call $~lib/rt/pure/__release + global.get $std/array/arr + i32.const 26 + call $~lib/array/Array#filter + local.set $53 + local.get $53 + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 629 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 27 + call $~lib/array/Array#filter + call $~lib/rt/pure/__release + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 638 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 639 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 28 + call $~lib/array/Array#filter + call $~lib/rt/pure/__release + global.get $std/array/i + i32.const 406 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 646 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + i32.const 29 + call $~lib/array/Array#filter + call $~lib/rt/pure/__release + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 661 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 662 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + drop + local.get $53 + call $~lib/rt/pure/__release + global.get $std/array/arr + i32.const 30 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 672 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 31 + i32.const 4 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 676 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 32 + i32.const 0 + call $~lib/array/Array#reduce + local.set $53 + local.get $53 + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 679 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 33 + i32.const 0 + call $~lib/array/Array#reduce + local.set $53 + local.get $53 + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 682 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 34 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 690 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 691 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 35 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 693 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + i32.const 36 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 706 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 707 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 37 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 717 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 38 + i32.const 4 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 721 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 39 + i32.const 0 + call $~lib/array/Array#reduceRight + local.set $53 + local.get $53 + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 724 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 40 + i32.const 0 + call $~lib/array/Array#reduceRight + local.set $53 + local.get $53 + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 727 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 41 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 735 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 736 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 42 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 738 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + call $~lib/array/Array#pop + drop + global.get $std/array/arr + i32.const 43 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 751 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 752 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + i32.const 0 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 1 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + i32.const 3 + call $~lib/array/Array#push + drop call $~lib/bindings/Math/random i64.reinterpret_f64 call $~lib/math/NativeMath.seedRandom - block - i32.const 8 + i32.const 8 + i32.const 2 + i32.const 8 + i32.const 3392 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $52 + call $~lib/rt/pure/__retain + local.set $53 + i32.const 0 + global.set $~lib/argc + local.get $53 + i32.const 0 + call $~lib/array/Array#sort|trampoline + call $~lib/rt/pure/__release + local.get $53 + i32.const 8 + i32.const 2 + i32.const 8 + i32.const 3440 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $50 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 841 i32.const 2 - i32.const 8 - i32.const 3392 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $52 - call $~lib/rt/pure/__retain - local.set $53 - i32.const 0 - global.set $~lib/argc - local.get $53 - i32.const 0 - call $~lib/array/Array#sort|trampoline - call $~lib/rt/pure/__release - local.get $53 - i32.const 8 - i32.const 2 - i32.const 8 - i32.const 3440 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $50 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 841 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 3 - i32.const 9 - i32.const 3488 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $49 - call $~lib/rt/pure/__retain - local.set $47 - i32.const 0 - global.set $~lib/argc - local.get $47 - i32.const 0 - call $~lib/array/Array#sort|trampoline - call $~lib/rt/pure/__release - local.get $47 - i32.const 8 - i32.const 3 - i32.const 9 - i32.const 3568 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $43 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 845 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3648 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $46 - call $~lib/rt/pure/__retain - local.set $48 - i32.const 0 - global.set $~lib/argc - local.get $48 - i32.const 0 - call $~lib/array/Array#sort|trampoline - call $~lib/rt/pure/__release - local.get $48 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3688 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $44 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 849 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 3728 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $39 - call $~lib/rt/pure/__retain - local.set $45 - i32.const 0 - global.set $~lib/argc - local.get $45 - i32.const 0 - call $~lib/array/Array#sort|trampoline - call $~lib/rt/pure/__release - local.get $45 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 3768 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 853 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 3808 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $40 - call $~lib/rt/pure/__retain - local.set $42 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 3824 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $38 - call $~lib/rt/pure/__retain - local.set $34 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 3848 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $~lib/rt/pure/__retain - local.set $8 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 3872 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $10 - call $~lib/rt/pure/__retain - local.set $7 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 3904 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $~lib/rt/pure/__retain - local.set $11 - i32.const 64 - call $std/array/createReverseOrderedArray - local.set $1 - i32.const 128 - call $std/array/createReverseOrderedArray - local.set $13 - i32.const 1024 - call $std/array/createReverseOrderedArray - local.set $14 - i32.const 10000 - call $std/array/createReverseOrderedArray - local.set $12 - i32.const 512 - call $std/array/createRandomOrderedArray - local.set $2 - local.get $42 - call $std/array/assertSortedDefault - local.get $34 - call $std/array/assertSortedDefault - local.get $34 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 3992 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $17 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 873 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $std/array/assertSortedDefault - local.get $8 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 4016 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $15 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 876 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $7 - call $std/array/assertSortedDefault - local.get $7 - local.get $11 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 879 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $std/array/assertSortedDefault - local.get $1 - local.get $11 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 882 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $13 - call $std/array/assertSortedDefault - local.get $13 - local.get $11 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 885 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $14 - call $std/array/assertSortedDefault - local.get $14 - local.get $11 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 888 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $12 - call $std/array/assertSortedDefault - local.get $12 - local.get $11 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 891 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $std/array/assertSortedDefault - local.get $52 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release + call $~lib/builtins/abort + unreachable end - block - i32.const 64 - call $std/array/createRandomOrderedArray - local.set $15 - i32.const 257 - call $std/array/createRandomOrderedArray - local.set $17 - local.get $15 - i32.const 49 - call $std/array/assertSorted - local.get $15 - i32.const 50 - call $std/array/assertSorted - local.get $17 - i32.const 51 - call $std/array/assertSorted - local.get $17 - i32.const 52 - call $std/array/assertSorted - local.get $15 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - end - block - i32.const 2 - call $std/array/createReverseOrderedNestedArray - local.set $17 - local.get $17 - i32.const 53 - call $std/array/assertSorted<~lib/array/Array> - local.get $17 - call $~lib/rt/pure/__release - end - block - i32.const 512 - call $std/array/createReverseOrderedElementsArray - local.set $17 - local.get $17 - i32.const 54 - call $std/array/assertSorted> - local.get $17 - call $~lib/rt/pure/__release - end - block - i32.const 7 - i32.const 2 - i32.const 13 - i32.const 4264 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $15 - call $~lib/rt/pure/__retain - local.set $17 - i32.const 7 - i32.const 2 - i32.const 13 - i32.const 4312 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $12 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 1 - global.set $~lib/argc - local.get $17 + i32.const 8 + i32.const 3 + i32.const 9 + i32.const 3488 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $49 + call $~lib/rt/pure/__retain + local.set $47 + i32.const 0 + global.set $~lib/argc + local.get $47 + i32.const 0 + call $~lib/array/Array#sort|trampoline + call $~lib/rt/pure/__release + local.get $47 + i32.const 8 + i32.const 3 + i32.const 9 + i32.const 3568 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $43 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if i32.const 0 - call $std/array/assertSorted<~lib/string/String | null>|trampoline - local.get $17 - local.get $2 - i32.const 0 - call $std/array/isArraysEqual<~lib/string/String | null> - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 928 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 400 - call $std/array/createRandomStringArray - local.set $14 - i32.const 1 - global.set $~lib/argc - local.get $14 - i32.const 0 - call $std/array/assertSorted<~lib/string/String>|trampoline - local.get $15 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release + i32.const 376 + i32.const 845 + i32.const 2 + call $~lib/builtins/abort + unreachable end - block - i32.const 2 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3648 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $46 + call $~lib/rt/pure/__retain + local.set $48 + i32.const 0 + global.set $~lib/argc + local.get $48 + i32.const 0 + call $~lib/array/Array#sort|trampoline + call $~lib/rt/pure/__release + local.get $48 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3688 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $44 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if i32.const 0 - i32.const 15 - i32.const 4432 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 4512 - call $~lib/array/Array#join - local.tee $14 - i32.const 4536 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 939 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 3 + i32.const 376 + i32.const 849 i32.const 2 - i32.const 3 - i32.const 4576 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $17 - i32.const 4248 - call $~lib/array/Array#join - local.tee $12 - i32.const 5080 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 940 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 7 - i32.const 5112 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $13 - i32.const 5144 - call $~lib/array/Array#join - local.tee $15 - i32.const 5080 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 941 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 5168 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $11 - i32.const 5192 - call $~lib/array/Array#join - local.tee $1 - i32.const 5216 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 942 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 6 - i32.const 3 - i32.const 9 - i32.const 5280 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - i32.const 5344 - call $~lib/array/Array#join - local.tee $9 - i32.const 6544 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 943 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 14 - i32.const 6664 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - i32.const 4248 - call $~lib/array/Array<~lib/string/String>#join - local.tee $10 - i32.const 6640 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 944 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 3 - i32.const 2 - i32.const 19 - i32.const 0 - call $~lib/rt/__allocArray - local.set $5 - local.get $5 - i32.load offset=4 - local.set $34 - local.get $34 - i32.const 0 - call $std/array/Ref#constructor - local.tee $38 - call $~lib/rt/pure/__retain - i32.store - local.get $34 - i32.const 0 - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $34 - i32.const 0 - call $std/array/Ref#constructor - local.tee $42 - call $~lib/rt/pure/__retain - i32.store offset=8 - local.get $5 - end - call $~lib/rt/pure/__retain - local.set $34 - local.get $34 - i32.const 4512 - call $~lib/array/Array#join - local.tee $5 - i32.const 6744 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 946 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + call $~lib/builtins/abort + unreachable end - block + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 3728 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $39 + call $~lib/rt/pure/__retain + local.set $45 + i32.const 0 + global.set $~lib/argc + local.get $45 + i32.const 0 + call $~lib/array/Array#sort|trampoline + call $~lib/rt/pure/__release + local.get $45 + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 3768 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $41 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if i32.const 0 + i32.const 376 + i32.const 853 i32.const 2 - i32.const 3 - i32.const 6824 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $34 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 6840 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $38 - call $~lib/rt/pure/__retain - local.set $42 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 6864 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $~lib/rt/pure/__retain - local.set $10 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 6888 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/array/Array#toString - local.tee $1 - i32.const 4248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 956 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $42 - call $~lib/array/Array#toString - local.tee $11 - i32.const 6640 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 957 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $10 - call $~lib/array/Array#toString - local.tee $15 - i32.const 6920 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 958 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $9 - call $~lib/array/Array#toString - local.tee $13 - i32.const 6944 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 959 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 0 - i32.const 20 - i32.const 6976 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $17 - call $~lib/array/Array#toString - local.tee $12 - i32.const 7000 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 961 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 1 - i32.const 21 - i32.const 7032 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - call $~lib/array/Array#toString - local.tee $14 - i32.const 7056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 962 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 3 - i32.const 16 - i32.const 7096 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $41 - call $~lib/array/Array#toString - local.tee $40 - i32.const 7136 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 963 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 3 - i32.const 22 - i32.const 7200 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $39 - call $~lib/array/Array#toString - local.tee $45 - i32.const 7248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 964 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 7 - i32.const 2 - i32.const 13 - i32.const 7352 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $48 - call $~lib/rt/pure/__retain - local.set $44 - local.get $44 - call $~lib/array/Array<~lib/string/String | null>#toString - local.tee $46 - i32.const 7400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 968 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 2 - i32.const 14 - i32.const 7496 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $47 - call $~lib/array/Array<~lib/string/String>#toString - local.tee $43 - i32.const 7528 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 969 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 2 - i32.const 2 - i32.const 10 - i32.const 0 - call $~lib/rt/__allocArray - local.set $49 - local.get $49 - i32.load offset=4 - local.set $50 - local.get $50 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 7560 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $52 - call $~lib/rt/pure/__retain - i32.store - local.get $50 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 7584 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $16 - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $49 - end - call $~lib/rt/pure/__retain - local.set $54 - local.get $54 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $50 - i32.const 7608 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 972 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 2 - i32.const 2 - i32.const 23 - i32.const 0 - call $~lib/rt/__allocArray - local.set $49 - local.get $49 - i32.load offset=4 - local.set $53 - local.get $53 - i32.const 2 - i32.const 0 - i32.const 6 - i32.const 7640 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $19 - call $~lib/rt/pure/__retain - i32.store - local.get $53 - i32.const 2 - i32.const 0 - i32.const 6 - i32.const 7664 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $20 - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $49 - end - call $~lib/rt/pure/__retain - local.set $55 - local.get $55 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $53 - i32.const 7608 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 975 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 1 - i32.const 2 - i32.const 25 - i32.const 0 - call $~lib/rt/__allocArray - local.set $49 - local.get $49 - i32.load offset=4 - local.set $0 - local.get $0 - block (result i32) - i32.const 1 - i32.const 2 - i32.const 24 - i32.const 0 - call $~lib/rt/__allocArray - local.set $18 - local.get $18 - i32.load offset=4 - local.set $4 - local.get $4 - i32.const 1 - i32.const 2 - i32.const 7 - i32.const 7688 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $23 - call $~lib/rt/pure/__retain - i32.store - local.get $18 - end - call $~lib/rt/pure/__retain - i32.store - local.get $49 - end - call $~lib/rt/pure/__retain - local.set $56 - local.get $56 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString - local.tee $0 - i32.const 6640 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 376 - i32.const 978 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $34 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + call $~lib/builtins/abort + unreachable end + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 3808 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $40 + call $~lib/rt/pure/__retain + local.set $42 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 3824 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $38 + call $~lib/rt/pure/__retain + local.set $34 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 3848 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $5 + call $~lib/rt/pure/__retain + local.set $8 + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 3872 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $10 + call $~lib/rt/pure/__retain + local.set $7 + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 3904 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $9 + call $~lib/rt/pure/__retain + local.set $11 + i32.const 64 + call $std/array/createReverseOrderedArray + local.set $1 + i32.const 128 + call $std/array/createReverseOrderedArray + local.set $13 + i32.const 1024 + call $std/array/createReverseOrderedArray + local.set $14 + i32.const 10000 + call $std/array/createReverseOrderedArray + local.set $12 + i32.const 512 + call $std/array/createRandomOrderedArray + local.set $2 + local.get $42 + call $std/array/assertSortedDefault + local.get $34 + call $std/array/assertSortedDefault + local.get $34 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 3992 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $17 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 873 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + call $std/array/assertSortedDefault + local.get $8 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 4016 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $15 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 876 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $std/array/assertSortedDefault + local.get $7 + local.get $11 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 879 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $std/array/assertSortedDefault + local.get $1 + local.get $11 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 882 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $13 + call $std/array/assertSortedDefault + local.get $13 + local.get $11 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 885 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $14 + call $std/array/assertSortedDefault + local.get $14 + local.get $11 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 888 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $12 + call $std/array/assertSortedDefault + local.get $12 + local.get $11 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 891 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $std/array/assertSortedDefault + local.get $52 + call $~lib/rt/pure/__release + local.get $53 + call $~lib/rt/pure/__release + local.get $50 + call $~lib/rt/pure/__release + local.get $49 + call $~lib/rt/pure/__release + local.get $47 + call $~lib/rt/pure/__release + local.get $43 + call $~lib/rt/pure/__release + local.get $46 + call $~lib/rt/pure/__release + local.get $48 + call $~lib/rt/pure/__release + local.get $44 + call $~lib/rt/pure/__release + local.get $39 + call $~lib/rt/pure/__release + local.get $45 + call $~lib/rt/pure/__release + local.get $41 + call $~lib/rt/pure/__release + local.get $40 + call $~lib/rt/pure/__release + local.get $42 + call $~lib/rt/pure/__release + local.get $38 + call $~lib/rt/pure/__release + local.get $34 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $13 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + local.get $12 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $17 + call $~lib/rt/pure/__release + local.get $15 + call $~lib/rt/pure/__release + i32.const 64 + call $std/array/createRandomOrderedArray + local.set $15 + i32.const 257 + call $std/array/createRandomOrderedArray + local.set $17 + local.get $15 + i32.const 49 + call $std/array/assertSorted + local.get $15 + i32.const 50 + call $std/array/assertSorted + local.get $17 + i32.const 51 + call $std/array/assertSorted + local.get $17 + i32.const 52 + call $std/array/assertSorted + local.get $15 + call $~lib/rt/pure/__release + local.get $17 + call $~lib/rt/pure/__release + i32.const 2 + call $std/array/createReverseOrderedNestedArray + local.set $17 + local.get $17 + i32.const 53 + call $std/array/assertSorted<~lib/array/Array> + local.get $17 + call $~lib/rt/pure/__release + i32.const 512 + call $std/array/createReverseOrderedElementsArray + local.set $17 + local.get $17 + i32.const 54 + call $std/array/assertSorted> + local.get $17 + call $~lib/rt/pure/__release + i32.const 7 + i32.const 2 + i32.const 13 + i32.const 4264 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $15 + call $~lib/rt/pure/__retain + local.set $17 + i32.const 7 + i32.const 2 + i32.const 13 + i32.const 4312 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $12 + call $~lib/rt/pure/__retain + local.set $2 + i32.const 1 + global.set $~lib/argc + local.get $17 + i32.const 0 + call $std/array/assertSorted<~lib/string/String | null>|trampoline + local.get $17 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual<~lib/string/String | null> + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 928 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 400 + call $std/array/createRandomStringArray + local.set $14 + i32.const 1 + global.set $~lib/argc + local.get $14 + i32.const 0 + call $std/array/assertSorted<~lib/string/String>|trampoline + local.get $15 + call $~lib/rt/pure/__release + local.get $17 + call $~lib/rt/pure/__release + local.get $12 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + i32.const 2 + i32.const 0 + i32.const 15 + i32.const 4432 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $2 + i32.const 4512 + call $~lib/array/Array#join + local.tee $14 + i32.const 4536 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 939 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 4576 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $17 + i32.const 4248 + call $~lib/array/Array#join + local.tee $12 + i32.const 5080 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 940 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 7 + i32.const 5112 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $13 + i32.const 5144 + call $~lib/array/Array#join + local.tee $15 + i32.const 5080 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 941 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 5168 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $11 + i32.const 5192 + call $~lib/array/Array#join + local.tee $1 + i32.const 5216 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 942 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 6 + i32.const 3 + i32.const 9 + i32.const 5280 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $7 + i32.const 5344 + call $~lib/array/Array#join + local.tee $9 + i32.const 6544 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 943 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 14 + i32.const 6664 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $8 + i32.const 4248 + call $~lib/array/Array<~lib/string/String>#join + local.tee $10 + i32.const 6640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 944 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 2 + i32.const 19 + i32.const 0 + call $~lib/rt/__allocArray + local.set $5 + local.get $5 + i32.load offset=4 + local.set $34 + local.get $34 + i32.const 0 + call $std/array/Ref#constructor + local.tee $38 + call $~lib/rt/pure/__retain + i32.store + local.get $34 + i32.const 0 + call $~lib/rt/pure/__retain + i32.store offset=4 + local.get $34 + i32.const 0 + call $std/array/Ref#constructor + local.tee $42 + call $~lib/rt/pure/__retain + i32.store offset=8 + local.get $5 + call $~lib/rt/pure/__retain + local.set $34 + local.get $34 + i32.const 4512 + call $~lib/array/Array#join + local.tee $5 + i32.const 6744 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 946 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + local.get $17 + call $~lib/rt/pure/__release + local.get $12 + call $~lib/rt/pure/__release + local.get $13 + call $~lib/rt/pure/__release + local.get $15 + call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $38 + call $~lib/rt/pure/__release + local.get $42 + call $~lib/rt/pure/__release + local.get $34 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 6824 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $34 + call $~lib/rt/pure/__retain + local.set $5 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 6840 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $38 + call $~lib/rt/pure/__retain + local.set $42 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 6864 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $8 + call $~lib/rt/pure/__retain + local.set $10 + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 6888 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $7 + call $~lib/rt/pure/__retain + local.set $9 + local.get $5 + call $~lib/array/Array#toString + local.tee $1 + i32.const 4248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 956 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $42 + call $~lib/array/Array#toString + local.tee $11 + i32.const 6640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 957 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $10 + call $~lib/array/Array#toString + local.tee $15 + i32.const 6920 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 958 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + call $~lib/array/Array#toString + local.tee $13 + i32.const 6944 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 959 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 0 + i32.const 20 + i32.const 6976 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $17 + call $~lib/array/Array#toString + local.tee $12 + i32.const 7000 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 961 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 1 + i32.const 21 + i32.const 7032 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $2 + call $~lib/array/Array#toString + local.tee $14 + i32.const 7056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 962 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 3 + i32.const 16 + i32.const 7096 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $41 + call $~lib/array/Array#toString + local.tee $40 + i32.const 7136 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 963 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 3 + i32.const 22 + i32.const 7200 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $39 + call $~lib/array/Array#toString + local.tee $45 + i32.const 7248 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 964 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 7 + i32.const 2 + i32.const 13 + i32.const 7352 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $48 + call $~lib/rt/pure/__retain + local.set $44 + local.get $44 + call $~lib/array/Array<~lib/string/String | null>#toString + local.tee $46 + i32.const 7400 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 968 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + i32.const 2 + i32.const 14 + i32.const 7496 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $47 + call $~lib/array/Array<~lib/string/String>#toString + local.tee $43 + i32.const 7528 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 969 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + i32.const 10 + i32.const 0 + call $~lib/rt/__allocArray + local.set $49 + local.get $49 + i32.load offset=4 + local.set $50 + local.get $50 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 7560 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $52 + call $~lib/rt/pure/__retain + i32.store + local.get $50 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 7584 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $16 + call $~lib/rt/pure/__retain + i32.store offset=4 + local.get $49 + call $~lib/rt/pure/__retain + local.set $54 + local.get $54 + call $~lib/array/Array<~lib/array/Array>#toString + local.tee $50 + i32.const 7608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 972 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + i32.const 2 + i32.const 23 + i32.const 0 + call $~lib/rt/__allocArray + local.set $49 + local.get $49 + i32.load offset=4 + local.set $53 + local.get $53 + i32.const 2 + i32.const 0 + i32.const 6 + i32.const 7640 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $19 + call $~lib/rt/pure/__retain + i32.store + local.get $53 + i32.const 2 + i32.const 0 + i32.const 6 + i32.const 7664 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $20 + call $~lib/rt/pure/__retain + i32.store offset=4 + local.get $49 + call $~lib/rt/pure/__retain + local.set $55 + local.get $55 + call $~lib/array/Array<~lib/array/Array>#toString + local.tee $53 + i32.const 7608 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 975 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + i32.const 25 + i32.const 0 + call $~lib/rt/__allocArray + local.set $49 + local.get $49 + i32.load offset=4 + local.set $0 + local.get $0 + i32.const 1 + i32.const 2 + i32.const 24 + i32.const 0 + call $~lib/rt/__allocArray + local.set $18 + local.get $18 + i32.load offset=4 + local.set $4 + local.get $4 + i32.const 1 + i32.const 2 + i32.const 7 + i32.const 7688 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $23 + call $~lib/rt/pure/__retain + i32.store + local.get $18 + call $~lib/rt/pure/__retain + i32.store + local.get $49 + call $~lib/rt/pure/__retain + local.set $56 + local.get $56 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString + local.tee $0 + i32.const 6640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 376 + i32.const 978 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $34 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $38 + call $~lib/rt/pure/__release + local.get $42 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $11 + call $~lib/rt/pure/__release + local.get $15 + call $~lib/rt/pure/__release + local.get $13 + call $~lib/rt/pure/__release + local.get $17 + call $~lib/rt/pure/__release + local.get $12 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + local.get $41 + call $~lib/rt/pure/__release + local.get $40 + call $~lib/rt/pure/__release + local.get $39 + call $~lib/rt/pure/__release + local.get $45 + call $~lib/rt/pure/__release + local.get $48 + call $~lib/rt/pure/__release + local.get $44 + call $~lib/rt/pure/__release + local.get $46 + call $~lib/rt/pure/__release + local.get $47 + call $~lib/rt/pure/__release + local.get $43 + call $~lib/rt/pure/__release + local.get $52 + call $~lib/rt/pure/__release + local.get $16 + call $~lib/rt/pure/__release + local.get $50 + call $~lib/rt/pure/__release + local.get $19 + call $~lib/rt/pure/__release + local.get $20 + call $~lib/rt/pure/__release + local.get $53 + call $~lib/rt/pure/__release + local.get $23 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release global.get $std/array/arr call $~lib/rt/pure/__release local.get $54 @@ -23853,103 +23136,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -23982,23 +23245,24 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 if - local.get $2 - i32.load - local.set $4 local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + local.get $1 + call $~lib/rt/pure/__visit end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end + unreachable end ) (func $~lib/array/Array>#__visit_impl (; 312 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -24020,23 +23284,24 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 if - local.get $2 - i32.load - local.set $4 local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + local.get $1 + call $~lib/rt/pure/__visit end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end + unreachable end ) (func $~lib/array/Array<~lib/string/String | null>#__visit_impl (; 313 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -24058,23 +23323,24 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 if - local.get $2 - i32.load - local.set $4 local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + local.get $1 + call $~lib/rt/pure/__visit end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end + unreachable end ) (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 314 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -24096,23 +23362,24 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 if - local.get $2 - i32.load - local.set $4 local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + local.get $1 + call $~lib/rt/pure/__visit end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end + unreachable end ) (func $~lib/array/Array#__visit_impl (; 315 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -24143,23 +23410,24 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 if - local.get $2 - i32.load - local.set $4 local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + local.get $1 + call $~lib/rt/pure/__visit end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end + unreachable end ) (func $~lib/array/Array#__visit_impl (; 319 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -24190,23 +23458,24 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 if - local.get $2 - i32.load - local.set $4 local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + local.get $1 + call $~lib/rt/pure/__visit end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end + unreachable end ) (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 323 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -24228,23 +23497,24 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 if - local.get $2 - i32.load - local.set $4 local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + local.get $1 + call $~lib/rt/pure/__visit end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end + unreachable end ) (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl (; 324 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -24266,426 +23536,167 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 if - local.get $2 - i32.load - local.set $4 local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + local.get $1 + call $~lib/rt/pure/__visit end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end + unreachable end ) (func $~lib/rt/__visit_members (; 325 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $block$4$break - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$27 - block $switch$1$case$26 - block $switch$1$case$25 - block $switch$1$case$24 - block $switch$1$case$23 - block $switch$1$case$22 - block $switch$1$case$21 - block $switch$1$case$19 - block $switch$1$case$18 - block $switch$1$case$17 - block $switch$1$case$16 - block $switch$1$case$15 - block $switch$1$case$14 - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$2 $switch$1$case$4 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$2 $switch$1$case$14 $switch$1$case$15 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$2 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - br $block$4$break - unreachable - end - unreachable - end - block - block + block $switch$1$default + block $switch$1$case$27 + block $switch$1$case$26 + block $switch$1$case$25 + block $switch$1$case$24 + block $switch$1$case$23 + block $switch$1$case$22 + block $switch$1$case$21 + block $switch$1$case$19 + block $switch$1$case$18 + block $switch$1$case$17 + block $switch$1$case$16 + block $switch$1$case$15 + block $switch$1$case$14 + block $switch$1$case$12 + block $switch$1$case$11 + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$2 $switch$1$case$4 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$2 $switch$1$case$14 $switch$1$case$15 $switch$1$case$16 $switch$1$case$17 $switch$1$case$18 $switch$1$case$19 $switch$1$case$2 $switch$1$case$21 $switch$1$case$22 $switch$1$case$23 $switch$1$case$24 $switch$1$case$25 $switch$1$case$26 $switch$1$case$27 $switch$1$default end - unreachable - unreachable + return end - unreachable + br $block$4$break end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array>#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String | null>#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array<~lib/array/Array>#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array>#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array<~lib/string/String | null>#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array<~lib/string/String>#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - unreachable + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__visit_impl + br $block$4$break end - unreachable - end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - end - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array<~lib/array/Array>#__visit_impl + br $block$4$break end - return - unreachable + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl + br $block$4$break end unreachable - unreachable end - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return ) (func $null (; 326 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index fee6f954..c883da19 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -625,7 +625,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -640,7 +640,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -661,14 +661,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 624 @@ -1183,7 +1183,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1265,7 +1266,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 @@ -1873,10 +1875,8 @@ i32.const -1 i32.const 1073741808 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 local.tee $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 1 @@ -1893,10 +1893,8 @@ i32.const 1 i32.const 3 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 local.tee $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 2 @@ -1913,10 +1911,8 @@ i32.const 1 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 local.tee $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 6 @@ -2071,7 +2067,6 @@ i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $0 - local.set $6 local.get $0 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> i32.eqz @@ -2128,7 +2123,6 @@ call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $6 call $~lib/rt/pure/__release local.get $7 call $~lib/rt/pure/__release diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 12c672b1..a2158288 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -159,85 +159,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -293,20 +285,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -344,20 +334,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -368,14 +356,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -528,24 +514,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -559,27 +543,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -588,36 +570,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -655,12 +633,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -757,15 +733,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -825,75 +799,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -901,8 +868,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1032,18 +998,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1076,18 +1040,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1099,29 +1061,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1139,7 +1078,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1260,34 +1218,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1614,36 +1568,37 @@ local.get $3 i32.const 32 i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 end + unreachable end end ) @@ -1752,32 +1707,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1790,50 +1742,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1898,22 +1851,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1945,338 +1894,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2284,15 +1973,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2300,15 +1989,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2316,10 +2005,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2335,306 +2024,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2642,148 +2494,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2791,76 +2611,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2868,40 +2672,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2909,22 +2705,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2985,94 +2777,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -3090,54 +2877,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -3149,9 +2895,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3530,11 +3320,9 @@ drop local.get $0 if - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3543,11 +3331,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3556,11 +3342,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3569,11 +3353,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3582,11 +3364,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3595,11 +3375,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3608,11 +3386,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3621,11 +3397,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3634,11 +3408,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3647,11 +3419,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3660,11 +3430,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3673,11 +3441,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3696,110 +3462,86 @@ (func $~lib/arraybuffer/ArrayBuffer.isView (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 if - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 return @@ -3814,11 +3556,9 @@ drop local.get $0 if - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3827,11 +3567,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 1 - end + local.get $0 + drop + i32.const 1 if i32.const 1 local.set $1 @@ -3840,11 +3578,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3853,11 +3589,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3866,11 +3600,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3879,11 +3611,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3892,11 +3622,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3905,11 +3633,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3918,11 +3644,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3931,11 +3655,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3944,11 +3666,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3957,11 +3677,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3984,11 +3702,9 @@ drop local.get $0 if - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -3997,11 +3713,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4010,11 +3724,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4023,11 +3735,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4036,11 +3746,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4049,11 +3757,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 1 - end + local.get $0 + drop + i32.const 1 if i32.const 1 local.set $1 @@ -4062,11 +3768,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4075,11 +3779,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4088,11 +3790,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4101,11 +3801,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4114,11 +3812,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4127,11 +3823,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4154,11 +3848,9 @@ drop local.get $0 if - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4167,11 +3859,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4180,11 +3870,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4193,11 +3881,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4206,11 +3892,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4219,11 +3903,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4232,11 +3914,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4245,11 +3925,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4258,11 +3936,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4271,11 +3947,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4284,11 +3958,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 0 - end + local.get $0 + drop + i32.const 0 if i32.const 1 local.set $1 @@ -4297,11 +3969,9 @@ local.get $1 return end - block (result i32) - local.get $0 - drop - i32.const 1 - end + local.get $0 + drop + i32.const 1 if i32.const 1 local.set $1 @@ -4341,44 +4011,40 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 - block (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 local.tee $4 - block (result i32) - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - drop - local.get $4 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if local.get $5 + call $~lib/rt/pure/__retain + drop + local.get $4 + call $~lib/rt/pure/__release end + local.get $5 i32.store local.get $0 local.get $3 @@ -4478,55 +4144,47 @@ if local.get $1 call $~lib/rt/pure/__release - block - i32.const 24 - i32.const 456 - i32.const 21 - i32.const 6 - call $~lib/builtins/abort - unreachable - unreachable - end + i32.const 24 + i32.const 456 + i32.const 21 + i32.const 6 + call $~lib/builtins/abort unreachable end - block (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 15 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 15 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 local.tee $4 - block (result i32) - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - drop - local.get $4 - call $~lib/rt/pure/__release - end + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if local.get $5 + call $~lib/rt/pure/__retain + drop + local.get $4 + call $~lib/rt/pure/__release end + local.get $5 i32.store local.get $1 local.get $2 @@ -4627,16 +4285,14 @@ call $~lib/builtins/abort unreachable end - block (result i32) - local.get $0 - i32.const 1 - i32.const 1073741808 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - end + local.get $0 + i32.const 1 + i32.const 1073741808 + call $~lib/arraybuffer/ArrayBuffer#slice + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 local.set $1 local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -4651,16 +4307,14 @@ call $~lib/builtins/abort unreachable end - block (result i32) - local.get $0 - i32.const -1 - i32.const 1073741808 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - end + local.get $0 + i32.const -1 + i32.const 1073741808 + call $~lib/arraybuffer/ArrayBuffer#slice + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 local.set $1 local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -4675,16 +4329,14 @@ call $~lib/builtins/abort unreachable end - block (result i32) - local.get $0 - i32.const 1 - i32.const 3 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - end + local.get $0 + i32.const 1 + i32.const 3 + call $~lib/arraybuffer/ArrayBuffer#slice + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 local.set $1 local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -4699,16 +4351,14 @@ call $~lib/builtins/abort unreachable end - block (result i32) - local.get $0 - i32.const 1 - i32.const -1 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - end + local.get $0 + i32.const 1 + i32.const -1 + call $~lib/arraybuffer/ArrayBuffer#slice + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 local.set $1 local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -4723,16 +4373,14 @@ call $~lib/builtins/abort unreachable end - block (result i32) - local.get $0 - i32.const -3 - i32.const -1 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - end + local.get $0 + i32.const -3 + i32.const -1 + call $~lib/arraybuffer/ArrayBuffer#slice + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 local.set $1 local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -4747,16 +4395,14 @@ call $~lib/builtins/abort unreachable end - block (result i32) - local.get $0 - i32.const -4 - i32.const 42 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - end + local.get $0 + i32.const -4 + i32.const 42 + call $~lib/arraybuffer/ArrayBuffer#slice + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 local.set $1 local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -4771,16 +4417,14 @@ call $~lib/builtins/abort unreachable end - block (result i32) - local.get $0 - i32.const 42 - i32.const 1073741808 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - end + local.get $0 + i32.const 42 + i32.const 1073741808 + call $~lib/arraybuffer/ArrayBuffer#slice + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 local.set $1 local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength @@ -4914,18 +4558,16 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 1 - global.set $~lib/argc - i32.const 0 - local.get $2 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $5 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#constructor|trampoline - local.tee $6 - end + i32.const 1 + global.set $~lib/argc + i32.const 0 + local.get $2 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $5 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#constructor|trampoline + local.tee $6 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> i32.eqz if @@ -5120,103 +4762,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -5233,80 +4855,36 @@ (func $~lib/rt/__visit_members (; 50 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $block$4$break - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - br $block$4$break - unreachable - end - unreachable - end - block - block + block $switch$1$default + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default end - unreachable - unreachable + return end - unreachable + br $block$4$break end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - end - block - block local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break end unreachable - unreachable end - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return ) (func $null (; 51 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index e98883b1..8dbdbb92 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -631,7 +631,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -646,7 +646,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -667,14 +667,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 560 @@ -1185,7 +1185,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1267,7 +1268,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 841a3664..82f363e1 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -166,85 +166,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -300,20 +292,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -351,20 +341,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -375,14 +363,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -535,24 +521,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -566,27 +550,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -595,36 +577,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -662,12 +640,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -764,15 +740,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -832,75 +806,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -908,8 +875,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1039,18 +1005,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1083,18 +1047,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1106,29 +1068,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1146,7 +1085,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1267,34 +1225,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1520,32 +1474,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1558,50 +1509,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1666,22 +1618,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1713,338 +1661,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2052,15 +1740,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2068,15 +1756,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2084,10 +1772,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2103,306 +1791,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2410,148 +2261,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2559,76 +2378,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2636,40 +2439,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2677,22 +2472,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2753,94 +2544,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -2858,54 +2644,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -2917,9 +2662,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3178,44 +2967,40 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 - block (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 local.tee $4 - block (result i32) - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - drop - local.get $4 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if local.get $5 + call $~lib/rt/pure/__retain + drop + local.get $4 + call $~lib/rt/pure/__release end + local.get $5 i32.store local.get $0 local.get $3 @@ -3287,55 +3072,47 @@ if local.get $1 call $~lib/rt/pure/__release - block - i32.const 24 - i32.const 432 - i32.const 21 - i32.const 6 - call $~lib/builtins/abort - unreachable - unreachable - end + i32.const 24 + i32.const 432 + i32.const 21 + i32.const 6 + call $~lib/builtins/abort unreachable end - block (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 local.tee $4 - block (result i32) - local.get $1 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - drop - local.get $4 - call $~lib/rt/pure/__release - end + local.get $1 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if local.get $5 + call $~lib/rt/pure/__retain + drop + local.get $4 + call $~lib/rt/pure/__release end + local.get $5 i32.store local.get $1 local.get $2 @@ -5849,23 +5626,19 @@ call $~lib/builtins/abort unreachable end - block (result i32) - block (result i32) - i32.const 1 - global.set $~lib/argc - i32.const 0 - local.get $0 - call $~lib/typedarray/Uint8Array#get:buffer - local.tee $3 - i32.const 0 - i32.const 0 - call $~lib/dataview/DataView#constructor|trampoline - end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - end + i32.const 1 + global.set $~lib/argc + i32.const 0 + local.get $0 + call $~lib/typedarray/Uint8Array#get:buffer + local.tee $3 + i32.const 0 + i32.const 0 + call $~lib/dataview/DataView#constructor|trampoline + local.set $4 + local.get $2 + call $~lib/rt/pure/__release + local.get $4 local.set $2 local.get $2 call $~lib/dataview/DataView#get:byteOffset @@ -6068,103 +5841,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 232 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 232 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -6180,60 +5933,28 @@ ) (func $~lib/rt/__visit_members (; 70 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$default end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable + return end - block - block - unreachable - unreachable - end - unreachable - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end - unreachable + return end + unreachable ) (func $null (; 71 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index ad6e7da3..6cf87316 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -118,21 +118,19 @@ local.get $0 ) (func $~lib/date/Date#constructor (; 5 ;) (type $FUNCSIG$iij) (param $0 i32) (param $1 i64) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i64.const 0 - i64.store - local.get $0 + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end + local.get $0 + i64.const 0 + i64.store + local.get $0 local.get $1 i64.store local.get $0 @@ -155,32 +153,30 @@ (local $4 i32) (local $5 i32) (local $6 i64) - block $~lib/date/Date.UTC|inlined.0 (result i64) - i32.const 1970 - local.set $2 - i32.const 0 - local.set $1 - i32.const 1 - local.set $0 - i32.const 0 - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - i64.const 0 - local.set $6 - local.get $2 - local.get $1 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - local.get $6 - f64.convert_i64_s - call $~lib/bindings/Date/UTC - i64.trunc_f64_s - end + i32.const 1970 + local.set $2 + i32.const 0 + local.set $1 + i32.const 1 + local.set $0 + i32.const 0 + local.set $3 + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + i64.const 0 + local.set $6 + local.get $2 + local.get $1 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + local.get $6 + f64.convert_i64_s + call $~lib/bindings/Date/UTC + i64.trunc_f64_s i64.const 0 i64.eq i32.eqz @@ -192,32 +188,30 @@ call $~lib/builtins/abort unreachable end - block $~lib/date/Date.UTC|inlined.1 (result i64) - i32.const 1970 - local.set $5 - i32.const 0 - local.set $4 - i32.const 1 - local.set $3 - i32.const 0 - local.set $2 - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - i64.const 0 - local.set $6 - local.get $5 - local.get $4 - local.get $3 - local.get $2 - local.get $1 - local.get $0 - local.get $6 - f64.convert_i64_s - call $~lib/bindings/Date/UTC - i64.trunc_f64_s - end + i32.const 1970 + local.set $5 + i32.const 0 + local.set $4 + i32.const 1 + local.set $3 + i32.const 0 + local.set $2 + i32.const 0 + local.set $1 + i32.const 0 + local.set $0 + i64.const 0 + local.set $6 + local.get $5 + local.get $4 + local.get $3 + local.get $2 + local.get $1 + local.get $0 + local.get $6 + f64.convert_i64_s + call $~lib/bindings/Date/UTC + i64.trunc_f64_s i64.const 0 i64.eq i32.eqz @@ -229,32 +223,30 @@ call $~lib/builtins/abort unreachable end - block $~lib/date/Date.UTC|inlined.2 (result i64) - i32.const 2018 - local.set $5 - i32.const 10 - local.set $4 - i32.const 10 - local.set $3 - i32.const 11 - local.set $2 - i32.const 0 - local.set $1 - i32.const 0 - local.set $0 - i64.const 1 - local.set $6 - local.get $5 - local.get $4 - local.get $3 - local.get $2 - local.get $1 - local.get $0 - local.get $6 - f64.convert_i64_s - call $~lib/bindings/Date/UTC - i64.trunc_f64_s - end + i32.const 2018 + local.set $5 + i32.const 10 + local.set $4 + i32.const 10 + local.set $3 + i32.const 11 + local.set $2 + i32.const 0 + local.set $1 + i32.const 0 + local.set $0 + i64.const 1 + local.set $6 + local.get $5 + local.get $4 + local.get $3 + local.get $2 + local.get $1 + local.get $0 + local.get $6 + f64.convert_i64_s + call $~lib/bindings/Date/UTC + i64.trunc_f64_s global.set $std/date/creationTime global.get $std/date/creationTime i64.const 1541847600001 @@ -268,10 +260,8 @@ call $~lib/builtins/abort unreachable end - block $~lib/date/Date.now|inlined.0 (result i64) - call $~lib/bindings/Date/now - i64.trunc_f64_s - end + call $~lib/bindings/Date/now + i64.trunc_f64_s global.get $std/date/creationTime i64.gt_s i32.eqz diff --git a/tests/compiler/std/hash.optimized.wat b/tests/compiler/std/hash.optimized.wat index 61c4825b..3e763339 100644 --- a/tests/compiler/std/hash.optimized.wat +++ b/tests/compiler/std/hash.optimized.wat @@ -27,7 +27,7 @@ i32.const 1 i32.shl local.set $3 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $3 i32.ge_u @@ -45,8 +45,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index 19f8e807..5a0d62c9 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -40,16 +40,14 @@ i32.ne if block $break|0 - block - i32.const 0 - local.set $2 - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $3 - end - loop $repeat|0 + i32.const 0 + local.set $2 + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $3 + loop $loop|0 local.get $2 local.get $3 i32.lt_u @@ -68,8 +66,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end diff --git a/tests/compiler/std/libm.optimized.wat b/tests/compiler/std/libm.optimized.wat index f9e1c760..280b885b 100644 --- a/tests/compiler/std/libm.optimized.wat +++ b/tests/compiler/std/libm.optimized.wat @@ -2260,10 +2260,8 @@ i64.lt_u if local.get $4 - local.set $11 local.get $2 local.set $4 - local.get $11 local.set $2 end local.get $4 @@ -6117,10 +6115,8 @@ i32.lt_u if local.get $3 - local.set $5 local.get $2 local.set $3 - local.get $5 local.set $2 end local.get $3 @@ -7959,7 +7955,6 @@ local.get $9 select end - local.set $2 global.get $~lib/math/rempio2f_y local.tee $3 local.get $3 @@ -7999,7 +7994,6 @@ f64.mul f64.add local.set $1 - local.get $2 i32.const 1 i32.and if diff --git a/tests/compiler/std/libm.untouched.wat b/tests/compiler/std/libm.untouched.wat index 58424564..d09a870c 100644 --- a/tests/compiler/std/libm.untouched.wat +++ b/tests/compiler/std/libm.untouched.wat @@ -1324,61 +1324,45 @@ br_if $case3|0 br $case4|0 end - block - f64.const 0.4636476090008061 - local.get $8 - f64.const 2.2698777452961687e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $3 - br $break|0 - unreachable - end - unreachable - end - block - f64.const 0.7853981633974483 + f64.const 0.4636476090008061 local.get $8 - f64.const 3.061616997868383e-17 + f64.const 2.2698777452961687e-17 f64.sub local.get $0 f64.sub f64.sub local.set $3 br $break|0 - unreachable end - unreachable - end - block - f64.const 0.982793723247329 + f64.const 0.7853981633974483 local.get $8 - f64.const 1.3903311031230998e-17 + f64.const 3.061616997868383e-17 f64.sub local.get $0 f64.sub f64.sub local.set $3 br $break|0 - unreachable end - unreachable - end - block - f64.const 1.5707963267948966 + f64.const 0.982793723247329 local.get $8 - f64.const 6.123233995736766e-17 + f64.const 1.3903311031230998e-17 f64.sub local.get $0 f64.sub f64.sub local.set $3 br $break|0 - unreachable end - unreachable + f64.const 1.5707963267948966 + local.get $8 + f64.const 6.123233995736766e-17 + f64.sub + local.get $0 + f64.sub + f64.sub + local.set $3 + br $break|0 end unreachable end @@ -1800,7 +1784,6 @@ return end unreachable - f64.const 0 ) (func $../../lib/libm/assembly/libm/atan2 (; 21 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) local.get $0 @@ -2636,30 +2619,28 @@ f64.mul return end - block $~lib/math/expo2|inlined.0 (result f64) - local.get $0 - local.set $4 - i32.const 1023 - i32.const 2043 - i32.const 2 - i32.div_u - i32.add - i32.const 20 - i32.shl - i64.extend_i32_u - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.set $5 - local.get $4 - f64.const 1416.0996898839683 - f64.sub - call $~lib/math/NativeMath.exp - local.get $5 - f64.mul - local.get $5 - f64.mul - end + local.get $0 + local.set $4 + i32.const 1023 + i32.const 2043 + i32.const 2 + i32.div_u + i32.add + i32.const 20 + i32.shl + i64.extend_i32_u + i64.const 32 + i64.shl + f64.reinterpret_i64 + local.set $5 + local.get $4 + f64.const 1416.0996898839683 + f64.sub + call $~lib/math/NativeMath.exp + local.get $5 + f64.mul + local.get $5 + f64.mul local.set $3 local.get $3 ) @@ -3709,7 +3690,6 @@ unreachable end unreachable - unreachable end local.get $8 i32.const 1072693248 @@ -4679,30 +4659,28 @@ f64.const 2 local.get $5 f64.mul - block $~lib/math/expo2|inlined.1 (result f64) - local.get $2 - local.set $6 - i32.const 1023 - i32.const 2043 - i32.const 2 - i32.div_u - i32.add - i32.const 20 - i32.shl - i64.extend_i32_u - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.set $7 - local.get $6 - f64.const 1416.0996898839683 - f64.sub - call $~lib/math/NativeMath.exp - local.get $7 - f64.mul - local.get $7 - f64.mul - end + local.get $2 + local.set $6 + i32.const 1023 + i32.const 2043 + i32.const 2 + i32.div_u + i32.add + i32.const 20 + i32.shl + i64.extend_i32_u + i64.const 32 + i64.shl + f64.reinterpret_i64 + local.set $7 + local.get $6 + f64.const 1416.0996898839683 + f64.sub + call $~lib/math/NativeMath.exp + local.get $7 + f64.mul + local.get $7 + f64.mul f64.mul local.set $4 local.get $4 @@ -5799,61 +5777,45 @@ br_if $case3|0 br $case4|0 end - block - f32.const 0.46364760398864746 - local.get $8 - f32.const 5.01215824399992e-09 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $3 - br $break|0 - unreachable - end - unreachable - end - block - f32.const 0.7853981256484985 + f32.const 0.46364760398864746 local.get $8 - f32.const 3.774894707930798e-08 + f32.const 5.01215824399992e-09 f32.sub local.get $0 f32.sub f32.sub local.set $3 br $break|0 - unreachable end - unreachable - end - block - f32.const 0.9827936887741089 + f32.const 0.7853981256484985 local.get $8 - f32.const 3.447321716976148e-08 + f32.const 3.774894707930798e-08 f32.sub local.get $0 f32.sub f32.sub local.set $3 br $break|0 - unreachable end - unreachable - end - block - f32.const 1.570796251296997 + f32.const 0.9827936887741089 local.get $8 - f32.const 7.549789415861596e-08 + f32.const 3.447321716976148e-08 f32.sub local.get $0 f32.sub f32.sub local.set $3 br $break|0 - unreachable end - unreachable + f32.const 1.570796251296997 + local.get $8 + f32.const 7.549789415861596e-08 + f32.sub + local.get $0 + f32.sub + f32.sub + local.set $3 + br $break|0 end unreachable end @@ -6234,7 +6196,6 @@ return end unreachable - f32.const 0 ) (func $../../lib/libm/assembly/libmf/atan2 (; 83 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) local.get $0 @@ -6460,42 +6421,40 @@ f32.const 1 return end - block $~lib/math/cos_kernf|inlined.0 (result f32) - local.get $0 - f64.promote_f32 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $6 - f32.const 1 - f64.promote_f32 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $4 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - end + local.get $0 + f64.promote_f32 + local.set $3 + local.get $3 + local.get $3 + f64.mul + local.set $4 + local.get $4 + local.get $4 + f64.mul + local.set $5 + f64.const -0.001388676377460993 + local.get $4 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $6 + f32.const 1 + f64.promote_f32 + local.get $4 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $5 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $5 + local.get $4 + f64.mul + local.get $6 + f64.mul + f64.add + f32.demote_f64 return end local.get $1 @@ -6506,52 +6465,50 @@ i32.const 1075235811 i32.gt_u if - block $~lib/math/cos_kernf|inlined.1 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.sub - end - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $6 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $4 - f32.const 1 + local.get $2 + if (result f64) + local.get $0 f64.promote_f32 - local.get $6 - f64.const -0.499999997251031 - f64.mul + f64.const 3.141592653589793 f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $6 - f64.mul - local.get $4 - f64.mul - f64.add - f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const 3.141592653589793 + f64.sub end + local.set $3 + local.get $3 + local.get $3 + f64.mul + local.set $6 + local.get $6 + local.get $6 + f64.mul + local.set $5 + f64.const -0.001388676377460993 + local.get $6 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $4 + f32.const 1 + f64.promote_f32 + local.get $6 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $5 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $5 + local.get $6 + f64.mul + local.get $4 + f64.mul + f64.add + f32.demote_f64 f32.neg return else @@ -6640,7 +6597,6 @@ return end unreachable - unreachable end local.get $1 i32.const 1088565717 @@ -6650,52 +6606,50 @@ i32.const 1085271519 i32.gt_u if - block $~lib/math/cos_kernf|inlined.2 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.sub - end - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $6 - f32.const 1 + local.get $2 + if (result f64) + local.get $0 f64.promote_f32 - local.get $4 - f64.const -0.499999997251031 - f64.mul + f64.const 6.283185307179586 f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $4 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const 6.283185307179586 + f64.sub end + local.set $3 + local.get $3 + local.get $3 + f64.mul + local.set $4 + local.get $4 + local.get $4 + f64.mul + local.set $5 + f64.const -0.001388676377460993 + local.get $4 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $6 + f32.const 1 + f64.promote_f32 + local.get $4 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $5 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $5 + local.get $4 + f64.mul + local.get $6 + f64.mul + f64.add + f32.demote_f64 return else local.get $2 @@ -6784,7 +6738,6 @@ return end unreachable - unreachable end local.get $1 i32.const 2139095040 @@ -6827,124 +6780,122 @@ i32.trunc_f64_s br $~lib/math/rempio2f|inlined.0 end - block $~lib/math/pio2_large_quot|inlined.0 (result i32) - local.get $10 - local.set $12 - local.get $9 - local.set $11 - local.get $11 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.set $13 - local.get $13 - i32.const 6 - i32.shr_s - local.set $14 - local.get $13 - i32.const 63 - i32.and - local.set $15 + local.get $10 + local.set $12 + local.get $9 + local.set $11 + local.get $11 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.set $13 + local.get $13 + i32.const 6 + i32.shr_s + local.set $14 + local.get $13 + i32.const 63 + i32.and + local.set $15 + i32.const 72 + local.get $14 + i32.const 0 + i32.add + call $~lib/array/Array#__unchecked_get + local.set $16 + i32.const 72 + local.get $14 + i32.const 1 + i32.add + call $~lib/array/Array#__unchecked_get + local.set $17 + local.get $15 + i32.const 32 + i32.gt_s + if i32.const 72 local.get $14 - i32.const 0 + i32.const 2 i32.add call $~lib/array/Array#__unchecked_get - local.set $16 - i32.const 72 - local.get $14 - i32.const 1 - i32.add - call $~lib/array/Array#__unchecked_get - local.set $17 - local.get $15 - i32.const 32 - i32.gt_s - if - i32.const 72 - local.get $14 - i32.const 2 - i32.add - call $~lib/array/Array#__unchecked_get - local.set $19 - local.get $19 - i64.const 96 - local.get $15 - i64.extend_i32_s - i64.sub - i64.shr_u - local.set $18 - local.get $18 - local.get $17 - local.get $15 - i32.const 32 - i32.sub - i64.extend_i32_s - i64.shl - i64.or - local.set $18 - else - local.get $17 - i64.const 32 - local.get $15 - i64.extend_i32_s - i64.sub - i64.shr_u - local.set $18 - end - local.get $17 - i64.const 64 + local.set $19 + local.get $19 + i64.const 96 local.get $15 i64.extend_i32_s i64.sub i64.shr_u - local.get $16 + local.set $18 + local.get $18 + local.get $17 local.get $15 + i32.const 32 + i32.sub i64.extend_i32_s i64.shl i64.or - local.set $19 - local.get $11 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.set $20 - local.get $20 - local.get $19 - i64.mul - local.get $20 - local.get $18 - i64.mul + local.set $18 + else + local.get $17 i64.const 32 + local.get $15 + i64.extend_i32_s + i64.sub i64.shr_u - i64.add - local.set $21 - local.get $21 - i64.const 2 - i64.shl - local.set $22 - local.get $21 - i64.const 62 - i64.shr_u - local.get $22 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.set $23 - f64.const 8.515303950216386e-20 - local.get $12 - f64.promote_f32 - f64.copysign - local.get $22 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - local.get $23 + local.set $18 end + local.get $17 + i64.const 64 + local.get $15 + i64.extend_i32_s + i64.sub + i64.shr_u + local.get $16 + local.get $15 + i64.extend_i32_s + i64.shl + i64.or + local.set $19 + local.get $11 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.set $20 + local.get $20 + local.get $19 + i64.mul + local.get $20 + local.get $18 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $21 + local.get $21 + i64.const 2 + i64.shl + local.set $22 + local.get $21 + i64.const 62 + i64.shr_u + local.get $22 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.set $23 + f64.const 8.515303950216386e-20 + local.get $12 + f64.promote_f32 + f64.copysign + local.get $22 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + local.get $23 local.set $23 i32.const 0 local.get $23 @@ -7632,27 +7583,25 @@ f32.add return end - block $~lib/math/expo2f|inlined.0 (result f32) - local.get $0 - local.set $2 - i32.const 127 - i32.const 235 - i32.const 1 - i32.shr_u - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.set $3 - local.get $2 - f32.const 162.88958740234375 - f32.sub - call $~lib/math/NativeMathf.exp - local.get $3 - f32.mul - local.get $3 - f32.mul - end + local.get $0 + local.set $2 + i32.const 127 + i32.const 235 + i32.const 1 + i32.shr_u + i32.add + i32.const 23 + i32.shl + f32.reinterpret_i32 + local.set $3 + local.get $2 + f32.const 162.88958740234375 + f32.sub + call $~lib/math/NativeMathf.exp + local.get $3 + f32.mul + local.get $3 + f32.mul ) (func $../../lib/libm/assembly/libmf/cosh (; 97 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 @@ -8440,7 +8389,6 @@ unreachable end unreachable - unreachable end local.get $5 i32.const 1065353216 @@ -9304,45 +9252,43 @@ local.get $0 return end - block $~lib/math/sin_kernf|inlined.5 (result f32) - local.get $0 - f64.promote_f32 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -1.9839334836096632e-04 - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $6 - local.get $4 - local.get $3 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.const -0.16666666641626524 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $7 - local.get $5 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - end + local.get $0 + f64.promote_f32 + local.set $3 + local.get $3 + local.get $3 + f64.mul + local.set $4 + local.get $4 + local.get $4 + f64.mul + local.set $5 + f64.const -1.9839334836096632e-04 + local.get $4 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $6 + local.get $4 + local.get $3 + f64.mul + local.set $7 + local.get $3 + local.get $7 + f64.const -0.16666666641626524 + local.get $4 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $7 + local.get $5 + f64.mul + local.get $6 + f64.mul + f64.add + f32.demote_f64 return end local.get $1 @@ -9355,44 +9301,42 @@ if local.get $2 if (result f32) - block $~lib/math/cos_kernf|inlined.4 (result f32) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - f64.const -0.001388676377460993 - local.get $7 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $5 - f32.const 1 - f64.promote_f32 - local.get $7 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $6 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 - end + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + local.set $3 + local.get $3 + local.get $3 + f64.mul + local.set $7 + local.get $7 + local.get $7 + f64.mul + local.set $6 + f64.const -0.001388676377460993 + local.get $7 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $5 + f32.const 1 + f64.promote_f32 + local.get $7 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $6 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $6 + local.get $7 + f64.mul + local.get $5 + f64.mul + f64.add + f32.demote_f64 f32.neg else local.get $0 @@ -9434,56 +9378,54 @@ end return end - block $~lib/math/sin_kernf|inlined.6 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.sub - end - f64.neg - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - f64.const -1.9839334836096632e-04 - local.get $7 - f64.const 2.718311493989822e-06 - f64.mul + local.get $2 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 3.141592653589793 f64.add - local.set $5 - local.get $7 - local.get $3 - f64.mul - local.set $4 - local.get $3 - local.get $4 - f64.const -0.16666666641626524 - local.get $7 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $4 - local.get $6 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const 3.141592653589793 + f64.sub end + f64.neg + local.set $3 + local.get $3 + local.get $3 + f64.mul + local.set $7 + local.get $7 + local.get $7 + f64.mul + local.set $6 + f64.const -1.9839334836096632e-04 + local.get $7 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $5 + local.get $7 + local.get $3 + f64.mul + local.set $4 + local.get $3 + local.get $4 + f64.const -0.16666666641626524 + local.get $7 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $4 + local.get $6 + f64.mul + local.get $5 + f64.mul + f64.add + f32.demote_f64 return end local.get $1 @@ -9533,97 +9475,93 @@ f64.add f32.demote_f64 else - block $~lib/math/cos_kernf|inlined.7 (result f32) - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $6 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $4 - f32.const 1 - f64.promote_f32 - local.get $6 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $6 - f64.mul - local.get $4 - f64.mul - f64.add - f32.demote_f64 - end + local.get $0 + f64.promote_f32 + f64.const 4.71238898038469 + f64.sub + local.set $7 + local.get $7 + local.get $7 + f64.mul + local.set $6 + local.get $6 + local.get $6 + f64.mul + local.set $5 + f64.const -0.001388676377460993 + local.get $6 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $4 + f32.const 1 + f64.promote_f32 + local.get $6 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $5 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $5 + local.get $6 + f64.mul + local.get $4 + f64.mul + f64.add + f32.demote_f64 f32.neg end return end - block $~lib/math/sin_kernf|inlined.7 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.sub - end - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -1.9839334836096632e-04 - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul + local.get $2 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 6.283185307179586 f64.add - local.set $6 - local.get $4 - local.get $3 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.const -0.16666666641626524 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $7 - local.get $5 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const 6.283185307179586 + f64.sub end + local.set $3 + local.get $3 + local.get $3 + f64.mul + local.set $4 + local.get $4 + local.get $4 + f64.mul + local.set $5 + f64.const -1.9839334836096632e-04 + local.get $4 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $6 + local.get $4 + local.get $3 + f64.mul + local.set $7 + local.get $3 + local.get $7 + f64.const -0.16666666641626524 + local.get $4 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $7 + local.get $5 + f64.mul + local.get $6 + f64.mul + f64.add + f32.demote_f64 return end local.get $1 @@ -9667,124 +9605,122 @@ i32.trunc_f64_s br $~lib/math/rempio2f|inlined.1 end - block $~lib/math/pio2_large_quot|inlined.1 (result i32) - local.get $10 - local.set $12 - local.get $9 - local.set $11 - local.get $11 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.set $13 - local.get $13 - i32.const 6 - i32.shr_s - local.set $14 - local.get $13 - i32.const 63 - i32.and - local.set $15 + local.get $10 + local.set $12 + local.get $9 + local.set $11 + local.get $11 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.set $13 + local.get $13 + i32.const 6 + i32.shr_s + local.set $14 + local.get $13 + i32.const 63 + i32.and + local.set $15 + i32.const 72 + local.get $14 + i32.const 0 + i32.add + call $~lib/array/Array#__unchecked_get + local.set $16 + i32.const 72 + local.get $14 + i32.const 1 + i32.add + call $~lib/array/Array#__unchecked_get + local.set $17 + local.get $15 + i32.const 32 + i32.gt_s + if i32.const 72 local.get $14 - i32.const 0 + i32.const 2 i32.add call $~lib/array/Array#__unchecked_get - local.set $16 - i32.const 72 - local.get $14 - i32.const 1 - i32.add - call $~lib/array/Array#__unchecked_get - local.set $17 - local.get $15 - i32.const 32 - i32.gt_s - if - i32.const 72 - local.get $14 - i32.const 2 - i32.add - call $~lib/array/Array#__unchecked_get - local.set $19 - local.get $19 - i64.const 96 - local.get $15 - i64.extend_i32_s - i64.sub - i64.shr_u - local.set $18 - local.get $18 - local.get $17 - local.get $15 - i32.const 32 - i32.sub - i64.extend_i32_s - i64.shl - i64.or - local.set $18 - else - local.get $17 - i64.const 32 - local.get $15 - i64.extend_i32_s - i64.sub - i64.shr_u - local.set $18 - end - local.get $17 - i64.const 64 + local.set $19 + local.get $19 + i64.const 96 local.get $15 i64.extend_i32_s i64.sub i64.shr_u - local.get $16 + local.set $18 + local.get $18 + local.get $17 local.get $15 + i32.const 32 + i32.sub i64.extend_i32_s i64.shl i64.or - local.set $19 - local.get $11 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.set $20 - local.get $20 - local.get $19 - i64.mul - local.get $20 - local.get $18 - i64.mul + local.set $18 + else + local.get $17 i64.const 32 + local.get $15 + i64.extend_i32_s + i64.sub i64.shr_u - i64.add - local.set $21 - local.get $21 - i64.const 2 - i64.shl - local.set $22 - local.get $21 - i64.const 62 - i64.shr_u - local.get $22 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.set $23 - f64.const 8.515303950216386e-20 - local.get $12 - f64.promote_f32 - f64.copysign - local.get $22 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - local.get $23 + local.set $18 end + local.get $17 + i64.const 64 + local.get $15 + i64.extend_i32_s + i64.sub + i64.shr_u + local.get $16 + local.get $15 + i64.extend_i32_s + i64.shl + i64.or + local.set $19 + local.get $11 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.set $20 + local.get $20 + local.get $19 + i64.mul + local.get $20 + local.get $18 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $21 + local.get $21 + i64.const 2 + i64.shl + local.set $22 + local.get $21 + i64.const 62 + i64.shr_u + local.get $22 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.set $23 + f64.const 8.515303950216386e-20 + local.get $12 + f64.promote_f32 + f64.copysign + local.get $22 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + local.get $23 local.set $23 i32.const 0 local.get $23 @@ -9952,27 +9888,25 @@ f32.const 2 local.get $4 f32.mul - block $~lib/math/expo2f|inlined.1 (result f32) - local.get $2 - local.set $5 - i32.const 127 - i32.const 235 - i32.const 1 - i32.shr_u - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.set $6 - local.get $5 - f32.const 162.88958740234375 - f32.sub - call $~lib/math/NativeMathf.exp - local.get $6 - f32.mul - local.get $6 - f32.mul - end + local.get $2 + local.set $5 + i32.const 127 + i32.const 235 + i32.const 1 + i32.shr_u + i32.add + i32.const 23 + i32.shl + f32.reinterpret_i32 + local.set $6 + local.get $5 + f32.const 162.88958740234375 + f32.sub + call $~lib/math/NativeMathf.exp + local.get $6 + f32.mul + local.get $6 + f32.mul f32.mul local.set $3 local.get $3 @@ -10038,9 +9972,162 @@ local.get $0 return end - block $~lib/math/tan_kernf|inlined.0 (result f32) - local.get $0 + local.get $0 + f64.promote_f32 + local.set $4 + i32.const 0 + local.set $3 + local.get $4 + local.get $4 + f64.mul + local.set $5 + f64.const 0.002974357433599673 + local.get $5 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $6 + f64.const 0.05338123784456704 + local.get $5 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $7 + local.get $5 + local.get $5 + f64.mul + local.set $8 + local.get $5 + local.get $4 + f64.mul + local.set $9 + f64.const 0.3333313950307914 + local.get $5 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $10 + local.get $4 + local.get $9 + local.get $10 + f64.mul + f64.add + local.get $9 + local.get $8 + f64.mul + local.get $7 + local.get $8 + local.get $6 + f64.mul + f64.add + f64.mul + f64.add + local.set $6 + local.get $3 + if (result f64) + f32.const -1 f64.promote_f32 + local.get $6 + f64.div + else + local.get $6 + end + f32.demote_f64 + return + end + local.get $1 + i32.const 1081824209 + i32.le_u + if + local.get $1 + i32.const 1075235811 + i32.le_u + if + local.get $2 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + else + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.sub + end + local.set $4 + i32.const 1 + local.set $3 + local.get $4 + local.get $4 + f64.mul + local.set $10 + f64.const 0.002974357433599673 + local.get $10 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $9 + f64.const 0.05338123784456704 + local.get $10 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $8 + local.get $10 + local.get $10 + f64.mul + local.set $7 + local.get $10 + local.get $4 + f64.mul + local.set $6 + f64.const 0.3333313950307914 + local.get $10 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $5 + local.get $4 + local.get $6 + local.get $5 + f64.mul + f64.add + local.get $6 + local.get $7 + f64.mul + local.get $8 + local.get $7 + local.get $9 + f64.mul + f64.add + f64.mul + f64.add + local.set $9 + local.get $3 + if (result f64) + f32.const -1 + f64.promote_f32 + local.get $9 + f64.div + else + local.get $9 + end + f32.demote_f64 + return + else + local.get $2 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 3.141592653589793 + f64.add + else + local.get $0 + f64.promote_f32 + f64.const 3.141592653589793 + f64.sub + end local.set $4 i32.const 0 local.set $3 @@ -10100,169 +10187,9 @@ local.get $6 end f32.demote_f64 - end - return - end - local.get $1 - i32.const 1081824209 - i32.le_u - if - local.get $1 - i32.const 1075235811 - i32.le_u - if - block $~lib/math/tan_kernf|inlined.1 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.sub - end - local.set $4 - i32.const 1 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $10 - f64.const 0.002974357433599673 - local.get $10 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $9 - f64.const 0.05338123784456704 - local.get $10 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $8 - local.get $10 - local.get $10 - f64.mul - local.set $7 - local.get $10 - local.get $4 - f64.mul - local.set $6 - f64.const 0.3333313950307914 - local.get $10 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $5 - local.get $4 - local.get $6 - local.get $5 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $8 - local.get $7 - local.get $9 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $9 - f64.div - else - local.get $9 - end - f32.demote_f64 - end - return - else - block $~lib/math/tan_kernf|inlined.2 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.sub - end - local.set $4 - i32.const 0 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const 0.002974357433599673 - local.get $5 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $6 - f64.const 0.05338123784456704 - local.get $5 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $7 - local.get $5 - local.get $5 - f64.mul - local.set $8 - local.get $5 - local.get $4 - f64.mul - local.set $9 - f64.const 0.3333313950307914 - local.get $5 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $10 - local.get $4 - local.get $9 - local.get $10 - f64.mul - f64.add - local.get $9 - local.get $8 - f64.mul - local.get $7 - local.get $8 - local.get $6 - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $6 - f64.div - else - local.get $6 - end - f32.demote_f64 - end return end unreachable - unreachable end local.get $1 i32.const 1088565717 @@ -10272,158 +10199,153 @@ i32.const 1085271519 i32.le_u if - block $~lib/math/tan_kernf|inlined.3 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - end - local.set $4 - i32.const 1 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $10 - f64.const 0.002974357433599673 - local.get $10 - f64.const 0.009465647849436732 - f64.mul + local.get $2 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 4.71238898038469 f64.add - local.set $9 - f64.const 0.05338123784456704 - local.get $10 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $8 - local.get $10 - local.get $10 - f64.mul - local.set $7 - local.get $10 - local.get $4 - f64.mul - local.set $6 - f64.const 0.3333313950307914 - local.get $10 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $5 - local.get $4 - local.get $6 - local.get $5 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $8 - local.get $7 - local.get $9 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $9 - f64.div - else - local.get $9 - end - f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const 4.71238898038469 + f64.sub end + local.set $4 + i32.const 1 + local.set $3 + local.get $4 + local.get $4 + f64.mul + local.set $10 + f64.const 0.002974357433599673 + local.get $10 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $9 + f64.const 0.05338123784456704 + local.get $10 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $8 + local.get $10 + local.get $10 + f64.mul + local.set $7 + local.get $10 + local.get $4 + f64.mul + local.set $6 + f64.const 0.3333313950307914 + local.get $10 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $5 + local.get $4 + local.get $6 + local.get $5 + f64.mul + f64.add + local.get $6 + local.get $7 + f64.mul + local.get $8 + local.get $7 + local.get $9 + f64.mul + f64.add + f64.mul + f64.add + local.set $9 + local.get $3 + if (result f64) + f32.const -1 + f64.promote_f32 + local.get $9 + f64.div + else + local.get $9 + end + f32.demote_f64 return else - block $~lib/math/tan_kernf|inlined.4 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.sub - end - local.set $4 - i32.const 0 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const 0.002974357433599673 - local.get $5 - f64.const 0.009465647849436732 - f64.mul + local.get $2 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 6.283185307179586 f64.add - local.set $6 - f64.const 0.05338123784456704 - local.get $5 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $7 - local.get $5 - local.get $5 - f64.mul - local.set $8 - local.get $5 - local.get $4 - f64.mul - local.set $9 - f64.const 0.3333313950307914 - local.get $5 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $10 - local.get $4 - local.get $9 - local.get $10 - f64.mul - f64.add - local.get $9 - local.get $8 - f64.mul - local.get $7 - local.get $8 - local.get $6 - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $6 - f64.div - else - local.get $6 - end - f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const 6.283185307179586 + f64.sub end + local.set $4 + i32.const 0 + local.set $3 + local.get $4 + local.get $4 + f64.mul + local.set $5 + f64.const 0.002974357433599673 + local.get $5 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $6 + f64.const 0.05338123784456704 + local.get $5 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $7 + local.get $5 + local.get $5 + f64.mul + local.set $8 + local.get $5 + local.get $4 + f64.mul + local.set $9 + f64.const 0.3333313950307914 + local.get $5 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $10 + local.get $4 + local.get $9 + local.get $10 + f64.mul + f64.add + local.get $9 + local.get $8 + f64.mul + local.get $7 + local.get $8 + local.get $6 + f64.mul + f64.add + f64.mul + f64.add + local.set $6 + local.get $3 + if (result f64) + f32.const -1 + f64.promote_f32 + local.get $6 + f64.div + else + local.get $6 + end + f32.demote_f64 return end unreachable - unreachable end local.get $1 i32.const 2139095040 @@ -10466,124 +10388,122 @@ i32.trunc_f64_s br $~lib/math/rempio2f|inlined.2 end - block $~lib/math/pio2_large_quot|inlined.2 (result i32) - local.get $12 - local.set $14 - local.get $11 - local.set $13 - local.get $13 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.set $15 - local.get $15 - i32.const 6 - i32.shr_s - local.set $16 - local.get $15 - i32.const 63 - i32.and - local.set $17 + local.get $12 + local.set $14 + local.get $11 + local.set $13 + local.get $13 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.set $15 + local.get $15 + i32.const 6 + i32.shr_s + local.set $16 + local.get $15 + i32.const 63 + i32.and + local.set $17 + i32.const 72 + local.get $16 + i32.const 0 + i32.add + call $~lib/array/Array#__unchecked_get + local.set $18 + i32.const 72 + local.get $16 + i32.const 1 + i32.add + call $~lib/array/Array#__unchecked_get + local.set $19 + local.get $17 + i32.const 32 + i32.gt_s + if i32.const 72 local.get $16 - i32.const 0 + i32.const 2 i32.add call $~lib/array/Array#__unchecked_get - local.set $18 - i32.const 72 - local.get $16 - i32.const 1 - i32.add - call $~lib/array/Array#__unchecked_get - local.set $19 - local.get $17 - i32.const 32 - i32.gt_s - if - i32.const 72 - local.get $16 - i32.const 2 - i32.add - call $~lib/array/Array#__unchecked_get - local.set $21 - local.get $21 - i64.const 96 - local.get $17 - i64.extend_i32_s - i64.sub - i64.shr_u - local.set $20 - local.get $20 - local.get $19 - local.get $17 - i32.const 32 - i32.sub - i64.extend_i32_s - i64.shl - i64.or - local.set $20 - else - local.get $19 - i64.const 32 - local.get $17 - i64.extend_i32_s - i64.sub - i64.shr_u - local.set $20 - end - local.get $19 - i64.const 64 + local.set $21 + local.get $21 + i64.const 96 local.get $17 i64.extend_i32_s i64.sub i64.shr_u - local.get $18 + local.set $20 + local.get $20 + local.get $19 local.get $17 + i32.const 32 + i32.sub i64.extend_i32_s i64.shl i64.or - local.set $21 - local.get $13 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.set $22 - local.get $22 - local.get $21 - i64.mul - local.get $22 - local.get $20 - i64.mul + local.set $20 + else + local.get $19 i64.const 32 + local.get $17 + i64.extend_i32_s + i64.sub i64.shr_u - i64.add - local.set $23 - local.get $23 - i64.const 2 - i64.shl - local.set $24 - local.get $23 - i64.const 62 - i64.shr_u - local.get $24 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.set $25 - f64.const 8.515303950216386e-20 - local.get $14 - f64.promote_f32 - f64.copysign - local.get $24 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - local.get $25 + local.set $20 end + local.get $19 + i64.const 64 + local.get $17 + i64.extend_i32_s + i64.sub + i64.shr_u + local.get $18 + local.get $17 + i64.extend_i32_s + i64.shl + i64.or + local.set $21 + local.get $13 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.set $22 + local.get $22 + local.get $21 + i64.mul + local.get $22 + local.get $20 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $23 + local.get $23 + i64.const 2 + i64.shl + local.set $24 + local.get $23 + i64.const 62 + i64.shr_u + local.get $24 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.set $25 + f64.const 8.515303950216386e-20 + local.get $14 + f64.promote_f32 + f64.copysign + local.get $24 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + local.get $25 local.set $25 i32.const 0 local.get $25 @@ -10595,70 +10515,68 @@ local.set $26 global.get $~lib/math/rempio2f_y local.set $27 - block $~lib/math/tan_kernf|inlined.5 (result f32) - local.get $27 - local.set $4 - local.get $26 - i32.const 1 - i32.and - local.set $13 - local.get $4 - local.get $4 - f64.mul - local.set $10 - f64.const 0.002974357433599673 - local.get $10 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $9 - f64.const 0.05338123784456704 - local.get $10 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $8 - local.get $10 - local.get $10 - f64.mul - local.set $7 - local.get $10 - local.get $4 - f64.mul - local.set $6 - f64.const 0.3333313950307914 - local.get $10 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $5 - local.get $4 - local.get $6 - local.get $5 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $8 - local.get $7 + local.get $27 + local.set $4 + local.get $26 + i32.const 1 + i32.and + local.set $13 + local.get $4 + local.get $4 + f64.mul + local.set $10 + f64.const 0.002974357433599673 + local.get $10 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $9 + f64.const 0.05338123784456704 + local.get $10 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $8 + local.get $10 + local.get $10 + f64.mul + local.set $7 + local.get $10 + local.get $4 + f64.mul + local.set $6 + f64.const 0.3333313950307914 + local.get $10 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $5 + local.get $4 + local.get $6 + local.get $5 + f64.mul + f64.add + local.get $6 + local.get $7 + f64.mul + local.get $8 + local.get $7 + local.get $9 + f64.mul + f64.add + f64.mul + f64.add + local.set $9 + local.get $13 + if (result f64) + f32.const -1 + f64.promote_f32 + local.get $9 + f64.div + else local.get $9 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $13 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $9 - f64.div - else - local.get $9 - end - f32.demote_f64 end + f32.demote_f64 ) (func $../../lib/libm/assembly/libmf/tan (; 123 ;) (type $FUNCSIG$ff) (param $0 f32) (result f32) local.get $0 diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 1cf649d8..bab4f540 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -635,7 +635,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -650,7 +650,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -671,14 +671,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 512 @@ -1160,14 +1160,12 @@ i32.and local.tee $1 i32.sub - local.set $2 local.get $0 local.get $1 i32.add local.tee $0 i32.const 0 i32.store - local.get $2 i32.const -4 i32.and local.tee $1 @@ -1422,7 +1420,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1504,7 +1503,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 @@ -1843,13 +1843,15 @@ if local.get $0 return + else + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 + unreachable end end i32.const 0 @@ -1907,7 +1909,8 @@ loop $continue|0 local.get $4 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $4 i32.load offset=8 @@ -2179,7 +2182,7 @@ (local $1 i32) call $~lib/map/Map#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 100 i32.lt_s @@ -2240,7 +2243,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -2259,7 +2262,7 @@ end i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i32.const 100 i32.lt_s @@ -2340,7 +2343,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -2359,7 +2362,7 @@ end i32.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i32.const 50 i32.lt_s @@ -2413,7 +2416,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -2432,7 +2435,7 @@ end i32.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i32.const 50 i32.lt_s @@ -2488,7 +2491,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -2599,7 +2602,8 @@ loop $continue|0 local.get $4 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $4 i32.load offset=8 @@ -2865,7 +2869,7 @@ (local $1 i32) call $~lib/map/Map#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 100 i32.lt_u @@ -2922,7 +2926,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -2941,7 +2945,7 @@ end i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i32.const 100 i32.lt_u @@ -3016,7 +3020,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -3035,7 +3039,7 @@ end i32.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i32.const 50 i32.lt_u @@ -3087,7 +3091,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -3106,7 +3110,7 @@ end i32.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i32.const 50 i32.lt_u @@ -3160,7 +3164,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -3267,13 +3271,15 @@ if local.get $0 return + else + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 + unreachable end end i32.const 0 @@ -3331,7 +3337,8 @@ loop $continue|0 local.get $4 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $4 i32.load offset=8 @@ -3603,7 +3610,7 @@ (local $1 i32) call $~lib/map/Map#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 100 i32.lt_s @@ -3664,7 +3671,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -3683,7 +3690,7 @@ end i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i32.const 100 i32.lt_s @@ -3764,7 +3771,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -3783,7 +3790,7 @@ end i32.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i32.const 50 i32.lt_s @@ -3837,7 +3844,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -3856,7 +3863,7 @@ end i32.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i32.const 50 i32.lt_s @@ -3912,7 +3919,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -4023,7 +4030,8 @@ loop $continue|0 local.get $4 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $4 i32.load offset=8 @@ -4289,7 +4297,7 @@ (local $1 i32) call $~lib/map/Map#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 100 i32.lt_u @@ -4346,7 +4354,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -4365,7 +4373,7 @@ end i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i32.const 100 i32.lt_u @@ -4440,7 +4448,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -4459,7 +4467,7 @@ end i32.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i32.const 50 i32.lt_u @@ -4511,7 +4519,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -4530,7 +4538,7 @@ end i32.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i32.const 50 i32.lt_u @@ -4584,7 +4592,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -4705,13 +4713,15 @@ if local.get $0 return + else + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 + unreachable end end i32.const 0 @@ -4765,7 +4775,8 @@ loop $continue|0 local.get $4 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $4 i32.load offset=8 @@ -5025,7 +5036,7 @@ (local $1 i32) call $~lib/map/Map#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 100 i32.lt_s @@ -5078,7 +5089,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -5097,7 +5108,7 @@ end i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i32.const 100 i32.lt_s @@ -5166,7 +5177,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -5185,7 +5196,7 @@ end i32.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i32.const 50 i32.lt_s @@ -5235,7 +5246,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -5254,7 +5265,7 @@ end i32.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i32.const 50 i32.lt_s @@ -5306,7 +5317,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -5371,7 +5382,7 @@ (local $1 i32) call $~lib/map/Map#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 100 i32.lt_u @@ -5424,7 +5435,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -5443,7 +5454,7 @@ end i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i32.const 100 i32.lt_u @@ -5512,7 +5523,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -5531,7 +5542,7 @@ end i32.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i32.const 50 i32.lt_u @@ -5581,7 +5592,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -5600,7 +5611,7 @@ end i32.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i32.const 50 i32.lt_u @@ -5652,7 +5663,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -5841,13 +5852,15 @@ if local.get $0 return + else + local.get $0 + i32.load offset=12 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end - local.get $0 - i32.load offset=12 - i32.const -2 - i32.and - local.set $0 - br $continue|0 + unreachable end end i32.const 0 @@ -5901,7 +5914,8 @@ loop $continue|0 local.get $4 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $4 i32.load offset=12 @@ -6162,7 +6176,7 @@ (local $1 i32) call $~lib/map/Map#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i64.const 100 i64.lt_s @@ -6217,7 +6231,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -6236,7 +6250,7 @@ end i64.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i64.const 100 i64.lt_s @@ -6308,7 +6322,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -6327,7 +6341,7 @@ end i64.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i64.const 50 i64.lt_s @@ -6378,7 +6392,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -6397,7 +6411,7 @@ end i64.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i64.const 50 i64.lt_s @@ -6450,7 +6464,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -6515,7 +6529,7 @@ (local $1 i32) call $~lib/map/Map#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i64.const 100 i64.lt_u @@ -6570,7 +6584,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -6589,7 +6603,7 @@ end i64.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i64.const 100 i64.lt_u @@ -6661,7 +6675,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -6680,7 +6694,7 @@ end i64.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i64.const 50 i64.lt_u @@ -6731,7 +6745,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -6750,7 +6764,7 @@ end i64.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i64.const 50 i64.lt_u @@ -6803,7 +6817,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -6893,13 +6907,15 @@ if local.get $0 return + else + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 + unreachable end end i32.const 0 @@ -6954,7 +6970,8 @@ loop $continue|0 local.get $4 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $4 i32.load offset=8 @@ -7219,7 +7236,7 @@ (local $1 i32) call $~lib/map/Map#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 f32.const 100 f32.lt @@ -7274,7 +7291,7 @@ f32.const 1 f32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -7293,7 +7310,7 @@ end f32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 f32.const 100 f32.lt @@ -7365,7 +7382,7 @@ f32.const 1 f32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -7384,7 +7401,7 @@ end f32.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 f32.const 50 f32.lt @@ -7435,7 +7452,7 @@ f32.const 1 f32.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -7454,7 +7471,7 @@ end f32.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 f32.const 50 f32.lt @@ -7507,7 +7524,7 @@ f32.const 1 f32.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -7597,13 +7614,15 @@ if local.get $0 return + else + local.get $0 + i32.load offset=12 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end - local.get $0 - i32.load offset=12 - i32.const -2 - i32.and - local.set $0 - br $continue|0 + unreachable end end i32.const 0 @@ -7658,7 +7677,8 @@ loop $continue|0 local.get $4 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $4 i32.load offset=12 @@ -7923,7 +7943,7 @@ (local $1 i32) call $~lib/map/Map#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 f64.const 100 f64.lt @@ -7978,7 +7998,7 @@ f64.const 1 f64.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -7997,7 +8017,7 @@ end f64.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 f64.const 100 f64.lt @@ -8069,7 +8089,7 @@ f64.const 1 f64.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -8088,7 +8108,7 @@ end f64.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 f64.const 50 f64.lt @@ -8139,7 +8159,7 @@ f64.const 1 f64.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -8158,7 +8178,7 @@ end f64.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 f64.const 50 f64.lt @@ -8211,7 +8231,7 @@ f64.const 1 f64.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index aa051bb8..edb8f666 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -165,85 +165,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -299,20 +291,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -350,20 +340,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -374,14 +362,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -534,24 +520,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -565,27 +549,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -594,36 +576,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -661,12 +639,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -763,15 +739,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -831,75 +805,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -907,8 +874,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1038,18 +1004,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1082,18 +1046,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1105,29 +1067,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1145,7 +1084,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1266,34 +1224,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1681,36 +1635,37 @@ local.get $3 i32.const 32 i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 end + unreachable end end ) @@ -1806,32 +1761,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1844,50 +1796,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1952,22 +1905,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1999,338 +1948,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2338,15 +2027,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2354,15 +2043,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2370,10 +2059,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2389,306 +2078,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2696,148 +2548,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2845,76 +2665,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2922,40 +2726,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2963,22 +2759,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -3039,94 +2831,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -3144,54 +2931,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -3203,9 +2949,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3445,16 +3235,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -3463,16 +3251,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -3485,36 +3271,34 @@ i32.store offset=20 ) (func $~lib/map/Map#constructor (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/map/Map#clear local.get $0 ) @@ -3541,38 +3325,39 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load8_s + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_s - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -3625,9 +3410,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -3637,9 +3420,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add local.set $7 @@ -3650,106 +3431,99 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load8_s + i32.store8 + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load8_s - i32.store8 - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load8_s - local.set $11 - local.get $11 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $11 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $11 i32.store offset=8 local.get $0 local.get $4 @@ -3825,19 +3599,15 @@ call $~lib/rt/pure/__retain local.set $3 local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 12 i32.mul i32.add local.set $5 @@ -3989,7 +3759,7 @@ block $break|0 i32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i32.const 100 i32.lt_s @@ -4054,8 +3824,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -4075,7 +3844,7 @@ block $break|1 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i32.const 100 i32.lt_s @@ -4159,8 +3928,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -4180,7 +3948,7 @@ block $break|2 i32.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i32.const 50 i32.lt_s @@ -4239,8 +4007,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -4260,7 +4027,7 @@ block $break|3 i32.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i32.const 50 i32.lt_s @@ -4322,8 +4089,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -4363,16 +4129,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -4381,16 +4145,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -4403,36 +4165,34 @@ i32.store offset=20 ) (func $~lib/map/Map#constructor (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/map/Map#clear local.get $0 ) @@ -4452,36 +4212,37 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -4532,9 +4293,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -4544,9 +4303,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add local.set $7 @@ -4557,106 +4314,99 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load8_u + i32.store8 + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load8_u - i32.store8 - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load8_u - local.set $11 - local.get $11 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $11 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $11 i32.store offset=8 local.get $0 local.get $4 @@ -4730,19 +4480,15 @@ call $~lib/rt/pure/__retain local.set $3 local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 12 i32.mul i32.add local.set $5 @@ -4890,7 +4636,7 @@ block $break|0 i32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i32.const 100 i32.lt_u @@ -4951,8 +4697,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -4972,7 +4717,7 @@ block $break|1 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i32.const 100 i32.lt_u @@ -5050,8 +4795,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -5071,7 +4815,7 @@ block $break|2 i32.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i32.const 50 i32.lt_u @@ -5128,8 +4872,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -5149,7 +4892,7 @@ block $break|3 i32.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i32.const 50 i32.lt_u @@ -5209,8 +4952,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -5250,16 +4992,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -5268,16 +5008,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -5290,36 +5028,34 @@ i32.store offset=20 ) (func $~lib/map/Map#constructor (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/map/Map#clear local.get $0 ) @@ -5361,38 +5097,39 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load16_s + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_s - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -5445,9 +5182,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -5457,9 +5192,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add local.set $7 @@ -5470,106 +5203,99 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load16_s + i32.store16 + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load16_s - i32.store16 - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load16_s - local.set $11 - local.get $11 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $11 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $11 i32.store offset=8 local.get $0 local.get $4 @@ -5645,19 +5371,15 @@ call $~lib/rt/pure/__retain local.set $3 local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 12 i32.mul i32.add local.set $5 @@ -5809,7 +5531,7 @@ block $break|0 i32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i32.const 100 i32.lt_s @@ -5874,8 +5596,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -5895,7 +5616,7 @@ block $break|1 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i32.const 100 i32.lt_s @@ -5979,8 +5700,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -6000,7 +5720,7 @@ block $break|2 i32.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i32.const 50 i32.lt_s @@ -6059,8 +5779,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -6080,7 +5799,7 @@ block $break|3 i32.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i32.const 50 i32.lt_s @@ -6142,8 +5861,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -6183,16 +5901,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -6201,16 +5917,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -6223,36 +5937,34 @@ i32.store offset=20 ) (func $~lib/map/Map#constructor (; 61 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 6 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/map/Map#clear local.get $0 ) @@ -6272,36 +5984,37 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -6352,9 +6065,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -6364,9 +6075,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add local.set $7 @@ -6377,106 +6086,99 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load16_u + i32.store16 + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load16_u - i32.store16 - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load16_u - local.set $11 - local.get $11 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $11 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $11 i32.store offset=8 local.get $0 local.get $4 @@ -6550,19 +6252,15 @@ call $~lib/rt/pure/__retain local.set $3 local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 12 i32.mul i32.add local.set $5 @@ -6710,7 +6408,7 @@ block $break|0 i32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i32.const 100 i32.lt_u @@ -6771,8 +6469,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6792,7 +6489,7 @@ block $break|1 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i32.const 100 i32.lt_u @@ -6870,8 +6567,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -6891,7 +6587,7 @@ block $break|2 i32.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i32.const 50 i32.lt_u @@ -6948,8 +6644,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -6969,7 +6664,7 @@ block $break|3 i32.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i32.const 50 i32.lt_u @@ -7029,8 +6724,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -7070,16 +6764,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -7088,16 +6780,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -7110,36 +6800,34 @@ i32.store offset=20 ) (func $~lib/map/Map#constructor (; 71 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 7 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/map/Map#clear local.get $0 ) @@ -7201,34 +6889,35 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -7277,9 +6966,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -7289,9 +6976,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add local.set $7 @@ -7302,106 +6987,99 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load + i32.store + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load - i32.store - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $11 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $11 i32.store offset=8 local.get $0 local.get $4 @@ -7473,19 +7151,15 @@ call $~lib/rt/pure/__retain local.set $3 local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 12 i32.mul i32.add local.set $5 @@ -7629,7 +7303,7 @@ block $break|0 i32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i32.const 100 i32.lt_s @@ -7686,8 +7360,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7707,7 +7380,7 @@ block $break|1 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i32.const 100 i32.lt_s @@ -7779,8 +7452,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -7800,7 +7472,7 @@ block $break|2 i32.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i32.const 50 i32.lt_s @@ -7855,8 +7527,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -7876,7 +7547,7 @@ block $break|3 i32.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i32.const 50 i32.lt_s @@ -7934,8 +7605,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -7975,16 +7645,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -7993,16 +7661,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -8015,36 +7681,34 @@ i32.store offset=20 ) (func $~lib/map/Map#constructor (; 82 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 8 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/map/Map#clear local.get $0 ) @@ -8064,34 +7728,35 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -8140,9 +7805,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -8152,9 +7815,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add local.set $7 @@ -8165,106 +7826,99 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load + i32.store + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load - i32.store - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $11 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $11 i32.store offset=8 local.get $0 local.get $4 @@ -8336,19 +7990,15 @@ call $~lib/rt/pure/__retain local.set $3 local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 12 i32.mul i32.add local.set $5 @@ -8492,7 +8142,7 @@ block $break|0 i32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i32.const 100 i32.lt_u @@ -8549,8 +8199,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -8570,7 +8219,7 @@ block $break|1 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i32.const 100 i32.lt_u @@ -8642,8 +8291,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -8663,7 +8311,7 @@ block $break|2 i32.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i32.const 50 i32.lt_u @@ -8718,8 +8366,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -8739,7 +8386,7 @@ block $break|3 i32.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i32.const 50 i32.lt_u @@ -8797,8 +8444,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -8838,16 +8484,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -8856,16 +8500,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -8878,36 +8520,34 @@ i32.store offset=20 ) (func $~lib/map/Map#constructor (; 92 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 9 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 9 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/map/Map#clear local.get $0 ) @@ -9015,34 +8655,35 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i64.load + local.get $1 + i64.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=12 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=12 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -9092,9 +8733,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -9104,9 +8743,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end + i32.const 16 i32.mul i32.add local.set $7 @@ -9117,106 +8754,99 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i64.load + i64.store + local.get $10 + local.get $9 + i32.load offset=8 + i32.store offset=8 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i64.load - i64.store - local.get $10 - local.get $9 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i64.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=12 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 + local.set $11 + local.get $11 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=12 + local.get $13 + local.get $8 + i32.store + local.get $8 + i32.const 16 + i32.add + local.set $8 end + local.get $6 + i32.const 16 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $12 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $12 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -9289,19 +8919,15 @@ call $~lib/rt/pure/__retain local.set $6 local.get $6 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + i32.store offset=16 + local.get $7 + i32.const 16 i32.mul i32.add local.set $5 @@ -9446,7 +9072,7 @@ block $break|0 i64.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i64.const 100 i64.lt_s @@ -9505,8 +9131,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -9526,7 +9151,7 @@ block $break|1 i64.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i64.const 100 i64.lt_s @@ -9601,8 +9226,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -9622,7 +9246,7 @@ block $break|2 i64.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i64.const 50 i64.lt_s @@ -9678,8 +9302,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -9699,7 +9322,7 @@ block $break|3 i64.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i64.const 50 i64.lt_s @@ -9758,8 +9381,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -9799,16 +9421,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -9817,16 +9437,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -9839,36 +9457,34 @@ i32.store offset=20 ) (func $~lib/map/Map#constructor (; 103 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 10 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/map/Map#clear local.get $0 ) @@ -9888,34 +9504,35 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i64.load + local.get $1 + i64.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=12 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=12 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -9965,9 +9582,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -9977,9 +9592,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end + i32.const 16 i32.mul i32.add local.set $7 @@ -9990,106 +9603,99 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i64.load + i64.store + local.get $10 + local.get $9 + i32.load offset=8 + i32.store offset=8 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i64.load - i64.store - local.get $10 - local.get $9 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i64.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=12 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 + local.set $11 + local.get $11 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=12 + local.get $13 + local.get $8 + i32.store + local.get $8 + i32.const 16 + i32.add + local.set $8 end + local.get $6 + i32.const 16 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $12 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $12 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -10162,19 +9768,15 @@ call $~lib/rt/pure/__retain local.set $6 local.get $6 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + i32.store offset=16 + local.get $7 + i32.const 16 i32.mul i32.add local.set $5 @@ -10319,7 +9921,7 @@ block $break|0 i64.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i64.const 100 i64.lt_u @@ -10378,8 +9980,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -10399,7 +10000,7 @@ block $break|1 i64.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i64.const 100 i64.lt_u @@ -10474,8 +10075,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -10495,7 +10095,7 @@ block $break|2 i64.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i64.const 50 i64.lt_u @@ -10551,8 +10151,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -10572,7 +10171,7 @@ block $break|3 i64.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i64.const 50 i64.lt_u @@ -10631,8 +10230,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -10672,16 +10270,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -10690,16 +10286,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -10712,36 +10306,34 @@ i32.store offset=20 ) (func $~lib/map/Map#constructor (; 113 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 11 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 11 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/map/Map#clear local.get $0 ) @@ -10761,34 +10353,35 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + f32.load + local.get $1 + f32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f32.load - local.get $1 - f32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -10839,9 +10432,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -10851,9 +10442,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add local.set $7 @@ -10864,107 +10453,100 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + f32.load + f32.store + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 f32.load - f32.store - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - f32.load - local.set $11 - local.get $11 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 + local.set $11 + local.get $11 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=8 + local.get $13 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $12 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $12 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -11038,19 +10620,15 @@ call $~lib/rt/pure/__retain local.set $6 local.get $6 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + i32.store offset=16 + local.get $7 + i32.const 12 i32.mul i32.add local.set $5 @@ -11197,7 +10775,7 @@ block $break|0 f32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 f32.const 100 f32.lt @@ -11256,8 +10834,7 @@ f32.const 1 f32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -11277,7 +10854,7 @@ block $break|1 f32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 f32.const 100 f32.lt @@ -11352,8 +10929,7 @@ f32.const 1 f32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -11373,7 +10949,7 @@ block $break|2 f32.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 f32.const 50 f32.lt @@ -11429,8 +11005,7 @@ f32.const 1 f32.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -11450,7 +11025,7 @@ block $break|3 f32.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 f32.const 50 f32.lt @@ -11509,8 +11084,7 @@ f32.const 1 f32.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -11550,16 +11124,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -11568,16 +11140,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -11590,36 +11160,34 @@ i32.store offset=20 ) (func $~lib/map/Map#constructor (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/map/Map#clear local.get $0 ) @@ -11639,34 +11207,35 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + f64.load + local.get $1 + f64.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f64.load - local.get $1 - f64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=12 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=12 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -11717,9 +11286,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -11729,9 +11296,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end + i32.const 16 i32.mul i32.add local.set $7 @@ -11742,107 +11307,100 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + f64.load + f64.store + local.get $10 + local.get $9 + i32.load offset=8 + i32.store offset=8 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 f64.load - f64.store - local.get $10 - local.get $9 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - f64.load - local.set $11 - local.get $11 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=12 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 + local.set $11 + local.get $11 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=12 + local.get $13 + local.get $8 + i32.store + local.get $8 + i32.const 16 + i32.add + local.set $8 end + local.get $6 + i32.const 16 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $12 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $12 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -11916,19 +11474,15 @@ call $~lib/rt/pure/__retain local.set $6 local.get $6 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + i32.store offset=16 + local.get $7 + i32.const 16 i32.mul i32.add local.set $5 @@ -12075,7 +11629,7 @@ block $break|0 f64.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 f64.const 100 f64.lt @@ -12134,8 +11688,7 @@ f64.const 1 f64.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -12155,7 +11708,7 @@ block $break|1 f64.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 f64.const 100 f64.lt @@ -12230,8 +11783,7 @@ f64.const 1 f64.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -12251,7 +11803,7 @@ block $break|2 f64.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 f64.const 50 f64.lt @@ -12307,8 +11859,7 @@ f64.const 1 f64.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -12328,7 +11879,7 @@ block $break|3 f64.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 f64.const 50 f64.lt @@ -12387,8 +11938,7 @@ f64.const 1 f64.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -12601,103 +12151,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -12843,240 +12373,88 @@ ) (func $~lib/rt/__visit_members (; 149 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block + block $switch$1$default + block $switch$1$case$14 + block $switch$1$case$13 + block $switch$1$case$12 + block $switch$1$case$11 + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl - return - unreachable + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$default end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl return - unreachable end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block local.get $0 - local.get $1 - call $~lib/map/Map#__visit_impl + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end return - unreachable end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return - unreachable end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return - unreachable end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return - unreachable end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return - unreachable end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return - unreachable end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block local.get $0 local.get $1 - call $~lib/map/Map#__visit_impl + call $~lib/map/Map#__visit_impl return - unreachable end - unreachable - unreachable + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return end - unreachable - unreachable + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return end - unreachable + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable + local.get $0 + local.get $1 + call $~lib/map/Map#__visit_impl + return end + unreachable ) (func $null (; 150 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index aacd74b8..24789e80 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -230,7 +230,6 @@ local.get $0 local.get $1 f64.sub - local.set $0 local.get $1 i64.reinterpret_f64 i64.const 52 @@ -246,7 +245,6 @@ i32.add local.set $3 end - local.get $0 i32.const 0 local.get $3 i32.const -1075 @@ -429,7 +427,6 @@ local.get $0 local.get $1 f32.sub - local.set $0 local.get $1 i32.reinterpret_f32 i32.const 23 @@ -444,7 +441,6 @@ i32.add local.set $3 end - local.get $0 i32.const 0 local.get $3 i32.const -150 @@ -4718,10 +4714,8 @@ i64.lt_u if local.get $4 - local.set $11 local.get $2 local.set $4 - local.get $11 local.set $2 end local.get $4 @@ -4903,10 +4897,8 @@ i32.lt_u if local.get $3 - local.set $5 local.get $2 local.set $3 - local.get $5 local.set $2 end local.get $3 @@ -8262,7 +8254,6 @@ i64.const 63 i64.shr_u i32.wrap_i64 - local.set $8 i32.const 1 local.get $3 i64.const 2047 @@ -8362,7 +8353,8 @@ loop $continue|1 local.get $3 local.get $6 - i64.gt_s + i64.le_s + i32.eqz if local.get $2 local.get $4 @@ -8483,7 +8475,6 @@ select select local.set $0 - local.get $8 if local.get $0 f64.neg @@ -8526,7 +8517,6 @@ local.get $2 i32.const 31 i32.shr_u - local.set $8 local.get $3 i32.const 255 i32.eq @@ -8619,7 +8609,8 @@ loop $continue|1 local.get $3 local.get $5 - i32.gt_s + i32.le_s + i32.eqz if local.get $2 local.get $6 @@ -8649,23 +8640,21 @@ br $continue|1 end end - block (result i32) + local.get $2 + local.get $6 + i32.ge_u + if + local.get $4 + i32.const 1 + i32.add + local.set $4 local.get $2 local.get $6 - i32.ge_u - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - local.get $2 - local.get $6 - i32.sub - local.set $2 - end - local.get $2 - i32.eqz + i32.sub + local.set $2 end + local.get $2 + i32.eqz if i32.const -30 local.set $3 @@ -8739,7 +8728,6 @@ select select local.set $0 - local.get $8 if local.get $0 f32.neg @@ -9437,7 +9425,6 @@ local.get $9 select end - local.set $2 global.get $~lib/math/rempio2f_y local.tee $3 local.get $3 @@ -9477,7 +9464,6 @@ f64.mul f64.add local.set $1 - local.get $2 i32.const 1 i32.and if @@ -9756,7 +9742,8 @@ loop $continue|0 local.get $1 i32.const 0 - i32.gt_s + i32.le_s + i32.eqz if local.get $0 local.get $2 @@ -31401,7 +31388,7 @@ call $~lib/bindings/Math/random i64.reinterpret_f64 call $~lib/math/NativeMath.seedRandom - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 f64.convert_i32_s @@ -31425,7 +31412,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 else i32.const 0 i32.const 24 @@ -31442,7 +31429,7 @@ call $~lib/math/NativeMath.seedRandom i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 f64.convert_i32_s @@ -31466,7 +31453,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 else i32.const 0 i32.const 24 diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index 8f4406b8..db26c0f5 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -253,34 +253,30 @@ local.get $1 f64.eq if - block $~lib/math/NativeMath.signbit|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $3 - local.get $3 - f64.eq - i32.and - end + local.get $0 + local.set $3 + local.get $3 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.get $3 + local.get $3 + f64.eq + i32.and i32.const 0 i32.ne - block $~lib/math/NativeMath.signbit|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $3 - local.get $3 - f64.eq - i32.and - end + local.get $1 + local.set $3 + local.get $3 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.get $3 + local.get $3 + f64.eq + i32.and i32.const 0 i32.ne i32.eq @@ -492,32 +488,28 @@ local.get $1 f32.eq if - block $~lib/math/NativeMathf.signbit|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $3 - local.get $3 - f32.eq - i32.and - end + local.get $0 + local.set $3 + local.get $3 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + local.get $3 + local.get $3 + f32.eq + i32.and i32.const 0 i32.ne - block $~lib/math/NativeMathf.signbit|inlined.1 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $3 - local.get $3 - f32.eq - i32.and - end + local.get $1 + local.set $3 + local.get $3 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + local.get $3 + local.get $3 + f32.eq + i32.and i32.const 0 i32.ne i32.eq @@ -603,12 +595,10 @@ ) (func $std/math/test_abs (; 44 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 f64) - block $~lib/math/NativeMath.abs|inlined.0 (result f64) - local.get $0 - local.set $4 - local.get $4 - f64.abs - end + local.get $0 + local.set $4 + local.get $4 + f64.abs local.get $1 local.get $2 local.get $3 @@ -632,12 +622,10 @@ ) (func $std/math/test_absf (; 45 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) (local $4 f32) - block $~lib/math/NativeMathf.abs|inlined.0 (result f32) - local.get $0 - local.set $4 - local.get $4 - f32.abs - end + local.get $0 + local.set $4 + local.get $4 + f32.abs local.get $1 local.get $2 local.get $3 @@ -2689,61 +2677,45 @@ br_if $case3|0 br $case4|0 end - block - f64.const 0.4636476090008061 - local.get $8 - f64.const 2.2698777452961687e-17 - f64.sub - local.get $0 - f64.sub - f64.sub - local.set $3 - br $break|0 - unreachable - end - unreachable - end - block - f64.const 0.7853981633974483 + f64.const 0.4636476090008061 local.get $8 - f64.const 3.061616997868383e-17 + f64.const 2.2698777452961687e-17 f64.sub local.get $0 f64.sub f64.sub local.set $3 br $break|0 - unreachable end - unreachable - end - block - f64.const 0.982793723247329 + f64.const 0.7853981633974483 local.get $8 - f64.const 1.3903311031230998e-17 + f64.const 3.061616997868383e-17 f64.sub local.get $0 f64.sub f64.sub local.set $3 br $break|0 - unreachable end - unreachable - end - block - f64.const 1.5707963267948966 + f64.const 0.982793723247329 local.get $8 - f64.const 6.123233995736766e-17 + f64.const 1.3903311031230998e-17 f64.sub local.get $0 f64.sub f64.sub local.set $3 br $break|0 - unreachable end - unreachable + f64.const 1.5707963267948966 + local.get $8 + f64.const 6.123233995736766e-17 + f64.sub + local.get $0 + f64.sub + f64.sub + local.set $3 + br $break|0 end unreachable end @@ -2958,61 +2930,45 @@ br_if $case3|0 br $case4|0 end - block - f32.const 0.46364760398864746 - local.get $8 - f32.const 5.01215824399992e-09 - f32.sub - local.get $0 - f32.sub - f32.sub - local.set $3 - br $break|0 - unreachable - end - unreachable - end - block - f32.const 0.7853981256484985 + f32.const 0.46364760398864746 local.get $8 - f32.const 3.774894707930798e-08 + f32.const 5.01215824399992e-09 f32.sub local.get $0 f32.sub f32.sub local.set $3 br $break|0 - unreachable end - unreachable - end - block - f32.const 0.9827936887741089 + f32.const 0.7853981256484985 local.get $8 - f32.const 3.447321716976148e-08 + f32.const 3.774894707930798e-08 f32.sub local.get $0 f32.sub f32.sub local.set $3 br $break|0 - unreachable end - unreachable - end - block - f32.const 1.570796251296997 + f32.const 0.9827936887741089 local.get $8 - f32.const 7.549789415861596e-08 + f32.const 3.447321716976148e-08 f32.sub local.get $0 f32.sub f32.sub local.set $3 br $break|0 - unreachable end - unreachable + f32.const 1.570796251296997 + local.get $8 + f32.const 7.549789415861596e-08 + f32.sub + local.get $0 + f32.sub + f32.sub + local.set $3 + br $break|0 end unreachable end @@ -3520,7 +3476,6 @@ return end unreachable - f64.const 0 ) (func $std/math/test_atan2 (; 77 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) local.get $0 @@ -3859,7 +3814,6 @@ return end unreachable - f32.const 0 ) (func $std/math/test_atan2f (; 79 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) local.get $0 @@ -4164,12 +4118,10 @@ ) (func $std/math/test_ceil (; 84 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 f64) - block $~lib/math/NativeMath.ceil|inlined.0 (result f64) - local.get $0 - local.set $4 - local.get $4 - f64.ceil - end + local.get $0 + local.set $4 + local.get $4 + f64.ceil local.get $1 local.get $2 local.get $3 @@ -4193,12 +4145,10 @@ ) (func $std/math/test_ceilf (; 85 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) (local $4 f32) - block $~lib/math/NativeMathf.ceil|inlined.0 (result f32) - local.get $0 - local.set $4 - local.get $4 - f32.ceil - end + local.get $0 + local.set $4 + local.get $4 + f32.ceil local.get $1 local.get $2 local.get $3 @@ -4262,42 +4212,40 @@ f32.const 1 return end - block $~lib/math/cos_kernf|inlined.0 (result f32) - local.get $0 - f64.promote_f32 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $6 - f32.const 1 - f64.promote_f32 - local.get $4 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $4 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - end + local.get $0 + f64.promote_f32 + local.set $3 + local.get $3 + local.get $3 + f64.mul + local.set $4 + local.get $4 + local.get $4 + f64.mul + local.set $5 + f64.const -0.001388676377460993 + local.get $4 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $6 + f32.const 1 + f64.promote_f32 + local.get $4 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $5 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $5 + local.get $4 + f64.mul + local.get $6 + f64.mul + f64.add + f32.demote_f64 return end local.get $1 @@ -4308,52 +4256,50 @@ i32.const 1075235811 i32.gt_u if - block $~lib/math/cos_kernf|inlined.1 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.sub - end - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $6 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $4 - f32.const 1 + local.get $2 + if (result f64) + local.get $0 f64.promote_f32 - local.get $6 - f64.const -0.499999997251031 - f64.mul + f64.const 3.141592653589793 f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $6 - f64.mul - local.get $4 - f64.mul - f64.add - f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const 3.141592653589793 + f64.sub end + local.set $3 + local.get $3 + local.get $3 + f64.mul + local.set $6 + local.get $6 + local.get $6 + f64.mul + local.set $5 + f64.const -0.001388676377460993 + local.get $6 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $4 + f32.const 1 + f64.promote_f32 + local.get $6 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $5 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $5 + local.get $6 + f64.mul + local.get $4 + f64.mul + f64.add + f32.demote_f64 f32.neg return else @@ -4442,7 +4388,6 @@ return end unreachable - unreachable end local.get $1 i32.const 1088565717 @@ -4452,52 +4397,50 @@ i32.const 1085271519 i32.gt_u if - block $~lib/math/cos_kernf|inlined.2 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.sub - end - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $4 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $6 - f32.const 1 + local.get $2 + if (result f64) + local.get $0 f64.promote_f32 - local.get $4 - f64.const -0.499999997251031 - f64.mul + f64.const 6.283185307179586 f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $4 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const 6.283185307179586 + f64.sub end + local.set $3 + local.get $3 + local.get $3 + f64.mul + local.set $4 + local.get $4 + local.get $4 + f64.mul + local.set $5 + f64.const -0.001388676377460993 + local.get $4 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $6 + f32.const 1 + f64.promote_f32 + local.get $4 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $5 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $5 + local.get $4 + f64.mul + local.get $6 + f64.mul + f64.add + f32.demote_f64 return else local.get $2 @@ -4586,7 +4529,6 @@ return end unreachable - unreachable end local.get $1 i32.const 2139095040 @@ -4629,124 +4571,122 @@ i32.trunc_f64_s br $~lib/math/rempio2f|inlined.0 end - block $~lib/math/pio2_large_quot|inlined.0 (result i32) - local.get $10 - local.set $12 - local.get $9 - local.set $11 - local.get $11 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.set $13 - local.get $13 - i32.const 6 - i32.shr_s - local.set $14 - local.get $13 - i32.const 63 - i32.and - local.set $15 + local.get $10 + local.set $12 + local.get $9 + local.set $11 + local.get $11 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.set $13 + local.get $13 + i32.const 6 + i32.shr_s + local.set $14 + local.get $13 + i32.const 63 + i32.and + local.set $15 + i32.const 112 + local.get $14 + i32.const 0 + i32.add + call $~lib/array/Array#__unchecked_get + local.set $16 + i32.const 112 + local.get $14 + i32.const 1 + i32.add + call $~lib/array/Array#__unchecked_get + local.set $17 + local.get $15 + i32.const 32 + i32.gt_s + if i32.const 112 local.get $14 - i32.const 0 + i32.const 2 i32.add call $~lib/array/Array#__unchecked_get - local.set $16 - i32.const 112 - local.get $14 - i32.const 1 - i32.add - call $~lib/array/Array#__unchecked_get - local.set $17 - local.get $15 - i32.const 32 - i32.gt_s - if - i32.const 112 - local.get $14 - i32.const 2 - i32.add - call $~lib/array/Array#__unchecked_get - local.set $19 - local.get $19 - i64.const 96 - local.get $15 - i64.extend_i32_s - i64.sub - i64.shr_u - local.set $18 - local.get $18 - local.get $17 - local.get $15 - i32.const 32 - i32.sub - i64.extend_i32_s - i64.shl - i64.or - local.set $18 - else - local.get $17 - i64.const 32 - local.get $15 - i64.extend_i32_s - i64.sub - i64.shr_u - local.set $18 - end - local.get $17 - i64.const 64 + local.set $19 + local.get $19 + i64.const 96 local.get $15 i64.extend_i32_s i64.sub i64.shr_u - local.get $16 + local.set $18 + local.get $18 + local.get $17 local.get $15 + i32.const 32 + i32.sub i64.extend_i32_s i64.shl i64.or - local.set $19 - local.get $11 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.set $20 - local.get $20 - local.get $19 - i64.mul - local.get $20 - local.get $18 - i64.mul + local.set $18 + else + local.get $17 i64.const 32 + local.get $15 + i64.extend_i32_s + i64.sub i64.shr_u - i64.add - local.set $21 - local.get $21 - i64.const 2 - i64.shl - local.set $22 - local.get $21 - i64.const 62 - i64.shr_u - local.get $22 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.set $23 - f64.const 8.515303950216386e-20 - local.get $12 - f64.promote_f32 - f64.copysign - local.get $22 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - local.get $23 + local.set $18 end + local.get $17 + i64.const 64 + local.get $15 + i64.extend_i32_s + i64.sub + i64.shr_u + local.get $16 + local.get $15 + i64.extend_i32_s + i64.shl + i64.or + local.set $19 + local.get $11 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.set $20 + local.get $20 + local.get $19 + i64.mul + local.get $20 + local.get $18 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $21 + local.get $21 + i64.const 2 + i64.shl + local.set $22 + local.get $21 + i64.const 62 + i64.shr_u + local.get $22 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.set $23 + f64.const 8.515303950216386e-20 + local.get $12 + f64.promote_f32 + f64.copysign + local.get $22 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + local.get $23 local.set $23 i32.const 0 local.get $23 @@ -5395,30 +5335,28 @@ f64.mul return end - block $~lib/math/expo2|inlined.0 (result f64) - local.get $0 - local.set $4 - i32.const 1023 - i32.const 2043 - i32.const 2 - i32.div_u - i32.add - i32.const 20 - i32.shl - i64.extend_i32_u - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.set $5 - local.get $4 - f64.const 1416.0996898839683 - f64.sub - call $~lib/math/NativeMath.exp - local.get $5 - f64.mul - local.get $5 - f64.mul - end + local.get $0 + local.set $4 + i32.const 1023 + i32.const 2043 + i32.const 2 + i32.div_u + i32.add + i32.const 20 + i32.shl + i64.extend_i32_u + i64.const 32 + i64.shl + f64.reinterpret_i64 + local.set $5 + local.get $4 + f64.const 1416.0996898839683 + f64.sub + call $~lib/math/NativeMath.exp + local.get $5 + f64.mul + local.get $5 + f64.mul local.set $3 local.get $3 ) @@ -5940,27 +5878,25 @@ f32.add return end - block $~lib/math/expo2f|inlined.0 (result f32) - local.get $0 - local.set $2 - i32.const 127 - i32.const 235 - i32.const 1 - i32.shr_u - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.set $3 - local.get $2 - f32.const 162.88958740234375 - f32.sub - call $~lib/math/NativeMathf.exp - local.get $3 - f32.mul - local.get $3 - f32.mul - end + local.get $0 + local.set $2 + i32.const 127 + i32.const 235 + i32.const 1 + i32.shr_u + i32.add + i32.const 23 + i32.shl + f32.reinterpret_i32 + local.set $3 + local.get $2 + f32.const 162.88958740234375 + f32.sub + call $~lib/math/NativeMathf.exp + local.get $3 + f32.mul + local.get $3 + f32.mul ) (func $std/math/test_coshf (; 96 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) local.get $0 @@ -6036,12 +5972,10 @@ ) (func $std/math/test_floor (; 101 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 f64) - block $~lib/math/NativeMath.floor|inlined.0 (result f64) - local.get $0 - local.set $4 - local.get $4 - f64.floor - end + local.get $0 + local.set $4 + local.get $4 + f64.floor local.get $1 local.get $2 local.get $3 @@ -6065,12 +5999,10 @@ ) (func $std/math/test_floorf (; 102 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) (local $4 f32) - block $~lib/math/NativeMathf.floor|inlined.0 (result f32) - local.get $0 - local.set $4 - local.get $4 - f32.floor - end + local.get $0 + local.set $4 + local.get $4 + f32.floor local.get $1 local.get $2 local.get $3 @@ -7462,15 +7394,13 @@ (func $std/math/test_max (; 119 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) (local $5 f64) (local $6 f64) - block $~lib/math/NativeMath.max|inlined.0 (result f64) - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $6 - local.get $5 - f64.max - end + local.get $0 + local.set $6 + local.get $1 + local.set $5 + local.get $6 + local.get $5 + f64.max local.get $2 local.get $3 local.get $4 @@ -7496,15 +7426,13 @@ (func $std/math/test_maxf (; 120 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) (local $5 f32) (local $6 f32) - block $~lib/math/NativeMathf.max|inlined.0 (result f32) - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $6 - local.get $5 - f32.max - end + local.get $0 + local.set $6 + local.get $1 + local.set $5 + local.get $6 + local.get $5 + f32.max local.get $2 local.get $3 local.get $4 @@ -7513,15 +7441,13 @@ (func $std/math/test_min (; 121 ;) (type $FUNCSIG$iddddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 i32) (result i32) (local $5 f64) (local $6 f64) - block $~lib/math/NativeMath.min|inlined.0 (result f64) - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $6 - local.get $5 - f64.min - end + local.get $0 + local.set $6 + local.get $1 + local.set $5 + local.get $6 + local.get $5 + f64.min local.get $2 local.get $3 local.get $4 @@ -7547,15 +7473,13 @@ (func $std/math/test_minf (; 122 ;) (type $FUNCSIG$iffffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 f32) (param $4 i32) (result i32) (local $5 f32) (local $6 f32) - block $~lib/math/NativeMathf.min|inlined.0 (result f32) - local.get $0 - local.set $6 - local.get $1 - local.set $5 - local.get $6 - local.get $5 - f32.min - end + local.get $0 + local.set $6 + local.get $1 + local.set $5 + local.get $6 + local.get $5 + f32.min local.get $2 local.get $3 local.get $4 @@ -7712,36 +7636,37 @@ local.get $4 local.get $5 i64.gt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i64.ge_u if local.get $2 local.get $3 - i64.ge_u + i64.eq if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 - i64.sub - local.set $2 + f64.const 0 + local.get $0 + f64.mul + return end local.get $2 - i64.const 1 - i64.shl - local.set $2 - local.get $4 - i64.const 1 + local.get $3 i64.sub - local.set $4 - br $continue|0 + local.set $2 end + local.get $2 + i64.const 1 + i64.shl + local.set $2 + local.get $4 + i64.const 1 + i64.sub + local.set $4 + br $continue|0 end + unreachable end local.get $2 local.get $3 @@ -7986,36 +7911,37 @@ local.get $4 local.get $5 i32.gt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.ge_u if local.get $2 local.get $3 - i32.ge_u + i32.eq if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - local.set $2 + f32.const 0 + local.get $0 + f32.mul + return end local.get $2 - i32.const 1 - i32.shl - local.set $2 - local.get $4 - i32.const 1 + local.get $3 i32.sub - local.set $4 - br $continue|0 + local.set $2 end + local.get $2 + i32.const 1 + i32.shl + local.set $2 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $continue|0 end + unreachable end local.get $2 local.get $3 @@ -8320,7 +8246,6 @@ unreachable end unreachable - unreachable end local.get $8 i32.const 1072693248 @@ -9356,7 +9281,6 @@ unreachable end unreachable - unreachable end local.get $5 i32.const 1065353216 @@ -10348,16 +10272,14 @@ ) (func $std/math/test_round (; 136 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 f64) - block $~lib/math/NativeMath.round|inlined.0 (result f64) - local.get $0 - local.set $4 - local.get $4 - f64.const 0.5 - f64.add - f64.floor - local.get $4 - f64.copysign - end + local.get $0 + local.set $4 + local.get $4 + f64.const 0.5 + f64.add + f64.floor + local.get $4 + f64.copysign local.get $1 local.get $2 local.get $3 @@ -10365,16 +10287,14 @@ ) (func $std/math/test_roundf (; 137 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) (local $4 f32) - block $~lib/math/NativeMathf.round|inlined.0 (result f32) - local.get $0 - local.set $4 - local.get $4 - f32.const 0.5 - f32.add - f32.floor - local.get $4 - f32.copysign - end + local.get $0 + local.set $4 + local.get $4 + f32.const 0.5 + f32.add + f32.floor + local.get $4 + f32.copysign local.get $1 local.get $2 local.get $3 @@ -10590,96 +10510,92 @@ i32.const 0 local.set $9 block $break|0 - loop $continue|0 + local.get $4 + local.get $5 + i64.lt_s + if local.get $4 + i64.const 1 + i64.add local.get $5 - i64.lt_s + i64.eq if + br $break|0 + end + local.get $0 + return + end + block $break|1 + loop $continue|1 local.get $4 - i64.const 1 - i64.add local.get $5 - i64.eq - if - br $break|0 - end - local.get $0 - return - end - block $break|1 - loop $continue|1 - local.get $4 - local.get $5 - i64.gt_s - if - local.get $8 - local.get $3 - i64.ge_u - if - local.get $8 - local.get $3 - i64.sub - local.set $8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - end - local.get $8 - i64.const 1 - i64.shl - local.set $8 - local.get $9 - i32.const 1 - i32.shl - local.set $9 - local.get $4 - i64.const 1 - i64.sub - local.set $4 - br $continue|1 - end - end - end - local.get $8 - local.get $3 - i64.ge_u - if + i64.gt_s + i32.eqz + br_if $break|1 local.get $8 local.get $3 - i64.sub + i64.ge_u + if + local.get $8 + local.get $3 + i64.sub + local.set $8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + end + local.get $8 + i64.const 1 + i64.shl local.set $8 local.get $9 i32.const 1 - i32.add + i32.shl local.set $9 - end - local.get $8 - i64.const 0 - i64.eq - if - i64.const -60 - local.set $4 - else - local.get $8 - i64.const 11 - i64.shl - i64.clz - local.set $10 local.get $4 - local.get $10 + i64.const 1 i64.sub local.set $4 - local.get $8 - local.get $10 - i64.shl - local.set $8 + br $continue|1 end - br $break|0 unreachable end - unreachable - unreachable + local.get $8 + local.get $3 + i64.ge_u + if + local.get $8 + local.get $3 + i64.sub + local.set $8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + end + local.get $8 + i64.const 0 + i64.eq + if + i64.const -60 + local.set $4 + else + local.get $8 + i64.const 11 + i64.shl + i64.clz + local.set $10 + local.get $4 + local.get $10 + i64.sub + local.set $4 + local.get $8 + local.get $10 + i64.shl + local.set $8 + end + br $break|0 end local.get $4 i64.const 0 @@ -10911,96 +10827,92 @@ i32.const 0 local.set $8 block $break|0 - loop $continue|0 + local.get $4 + local.get $5 + i32.lt_s + if local.get $4 + i32.const 1 + i32.add local.get $5 - i32.lt_s + i32.eq if + br $break|0 + end + local.get $0 + return + end + block $break|1 + loop $continue|1 local.get $4 - i32.const 1 - i32.add local.get $5 - i32.eq - if - br $break|0 - end - local.get $0 - return - end - block $break|1 - loop $continue|1 - local.get $4 - local.get $5 - i32.gt_s - if - local.get $7 - local.get $3 - i32.ge_u - if - local.get $7 - local.get $3 - i32.sub - local.set $7 - local.get $8 - i32.const 1 - i32.add - local.set $8 - end - local.get $7 - i32.const 1 - i32.shl - local.set $7 - local.get $8 - i32.const 1 - i32.shl - local.set $8 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $continue|1 - end - end - end - local.get $7 - local.get $3 - i32.ge_u - if + i32.gt_s + i32.eqz + br_if $break|1 local.get $7 local.get $3 - i32.sub + i32.ge_u + if + local.get $7 + local.get $3 + i32.sub + local.set $7 + local.get $8 + i32.const 1 + i32.add + local.set $8 + end + local.get $7 + i32.const 1 + i32.shl local.set $7 local.get $8 i32.const 1 - i32.add - local.set $8 - end - local.get $7 - i32.const 0 - i32.eq - if - i32.const -30 - local.set $4 - else - local.get $7 - i32.const 8 i32.shl - i32.clz - local.set $9 + local.set $8 local.get $4 - local.get $9 + i32.const 1 i32.sub local.set $4 - local.get $7 - local.get $9 - i32.shl - local.set $7 + br $continue|1 end - br $break|0 unreachable end - unreachable - unreachable + local.get $7 + local.get $3 + i32.ge_u + if + local.get $7 + local.get $3 + i32.sub + local.set $7 + local.get $8 + i32.const 1 + i32.add + local.set $8 + end + local.get $7 + i32.const 0 + i32.eq + if + i32.const -30 + local.set $4 + else + local.get $7 + i32.const 8 + i32.shl + i32.clz + local.set $9 + local.get $4 + local.get $9 + i32.sub + local.set $4 + local.get $7 + local.get $9 + i32.shl + local.set $7 + end + br $break|0 end local.get $4 i32.const 0 @@ -11143,45 +11055,43 @@ local.get $0 return end - block $~lib/math/sin_kernf|inlined.5 (result f32) - local.get $0 - f64.promote_f32 - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -1.9839334836096632e-04 - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul - f64.add - local.set $6 - local.get $4 - local.get $3 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.const -0.16666666641626524 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $7 - local.get $5 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 - end + local.get $0 + f64.promote_f32 + local.set $3 + local.get $3 + local.get $3 + f64.mul + local.set $4 + local.get $4 + local.get $4 + f64.mul + local.set $5 + f64.const -1.9839334836096632e-04 + local.get $4 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $6 + local.get $4 + local.get $3 + f64.mul + local.set $7 + local.get $3 + local.get $7 + f64.const -0.16666666641626524 + local.get $4 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $7 + local.get $5 + f64.mul + local.get $6 + f64.mul + f64.add + f32.demote_f64 return end local.get $1 @@ -11194,44 +11104,42 @@ if local.get $2 if (result f32) - block $~lib/math/cos_kernf|inlined.4 (result f32) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - f64.const -0.001388676377460993 - local.get $7 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $5 - f32.const 1 - f64.promote_f32 - local.get $7 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $6 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 - end + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + local.set $3 + local.get $3 + local.get $3 + f64.mul + local.set $7 + local.get $7 + local.get $7 + f64.mul + local.set $6 + f64.const -0.001388676377460993 + local.get $7 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $5 + f32.const 1 + f64.promote_f32 + local.get $7 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $6 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $6 + local.get $7 + f64.mul + local.get $5 + f64.mul + f64.add + f32.demote_f64 f32.neg else local.get $0 @@ -11273,56 +11181,54 @@ end return end - block $~lib/math/sin_kernf|inlined.6 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.sub - end - f64.neg - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - f64.const -1.9839334836096632e-04 - local.get $7 - f64.const 2.718311493989822e-06 - f64.mul + local.get $2 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 3.141592653589793 f64.add - local.set $5 - local.get $7 - local.get $3 - f64.mul - local.set $4 - local.get $3 - local.get $4 - f64.const -0.16666666641626524 - local.get $7 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $4 - local.get $6 - f64.mul - local.get $5 - f64.mul - f64.add - f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const 3.141592653589793 + f64.sub end + f64.neg + local.set $3 + local.get $3 + local.get $3 + f64.mul + local.set $7 + local.get $7 + local.get $7 + f64.mul + local.set $6 + f64.const -1.9839334836096632e-04 + local.get $7 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $5 + local.get $7 + local.get $3 + f64.mul + local.set $4 + local.get $3 + local.get $4 + f64.const -0.16666666641626524 + local.get $7 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $4 + local.get $6 + f64.mul + local.get $5 + f64.mul + f64.add + f32.demote_f64 return end local.get $1 @@ -11372,97 +11278,93 @@ f64.add f32.demote_f64 else - block $~lib/math/cos_kernf|inlined.7 (result f32) - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - local.set $7 - local.get $7 - local.get $7 - f64.mul - local.set $6 - local.get $6 - local.get $6 - f64.mul - local.set $5 - f64.const -0.001388676377460993 - local.get $6 - f64.const 2.439044879627741e-05 - f64.mul - f64.add - local.set $4 - f32.const 1 - f64.promote_f32 - local.get $6 - f64.const -0.499999997251031 - f64.mul - f64.add - local.get $5 - f64.const 0.04166662332373906 - f64.mul - f64.add - local.get $5 - local.get $6 - f64.mul - local.get $4 - f64.mul - f64.add - f32.demote_f64 - end + local.get $0 + f64.promote_f32 + f64.const 4.71238898038469 + f64.sub + local.set $7 + local.get $7 + local.get $7 + f64.mul + local.set $6 + local.get $6 + local.get $6 + f64.mul + local.set $5 + f64.const -0.001388676377460993 + local.get $6 + f64.const 2.439044879627741e-05 + f64.mul + f64.add + local.set $4 + f32.const 1 + f64.promote_f32 + local.get $6 + f64.const -0.499999997251031 + f64.mul + f64.add + local.get $5 + f64.const 0.04166662332373906 + f64.mul + f64.add + local.get $5 + local.get $6 + f64.mul + local.get $4 + f64.mul + f64.add + f32.demote_f64 f32.neg end return end - block $~lib/math/sin_kernf|inlined.7 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.sub - end - local.set $3 - local.get $3 - local.get $3 - f64.mul - local.set $4 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const -1.9839334836096632e-04 - local.get $4 - f64.const 2.718311493989822e-06 - f64.mul + local.get $2 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 6.283185307179586 f64.add - local.set $6 - local.get $4 - local.get $3 - f64.mul - local.set $7 - local.get $3 - local.get $7 - f64.const -0.16666666641626524 - local.get $4 - f64.const 0.008333329385889463 - f64.mul - f64.add - f64.mul - f64.add - local.get $7 - local.get $5 - f64.mul - local.get $6 - f64.mul - f64.add - f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const 6.283185307179586 + f64.sub end + local.set $3 + local.get $3 + local.get $3 + f64.mul + local.set $4 + local.get $4 + local.get $4 + f64.mul + local.set $5 + f64.const -1.9839334836096632e-04 + local.get $4 + f64.const 2.718311493989822e-06 + f64.mul + f64.add + local.set $6 + local.get $4 + local.get $3 + f64.mul + local.set $7 + local.get $3 + local.get $7 + f64.const -0.16666666641626524 + local.get $4 + f64.const 0.008333329385889463 + f64.mul + f64.add + f64.mul + f64.add + local.get $7 + local.get $5 + f64.mul + local.get $6 + f64.mul + f64.add + f32.demote_f64 return end local.get $1 @@ -11506,124 +11408,122 @@ i32.trunc_f64_s br $~lib/math/rempio2f|inlined.1 end - block $~lib/math/pio2_large_quot|inlined.1 (result i32) - local.get $10 - local.set $12 - local.get $9 - local.set $11 - local.get $11 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.set $13 - local.get $13 - i32.const 6 - i32.shr_s - local.set $14 - local.get $13 - i32.const 63 - i32.and - local.set $15 + local.get $10 + local.set $12 + local.get $9 + local.set $11 + local.get $11 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.set $13 + local.get $13 + i32.const 6 + i32.shr_s + local.set $14 + local.get $13 + i32.const 63 + i32.and + local.set $15 + i32.const 112 + local.get $14 + i32.const 0 + i32.add + call $~lib/array/Array#__unchecked_get + local.set $16 + i32.const 112 + local.get $14 + i32.const 1 + i32.add + call $~lib/array/Array#__unchecked_get + local.set $17 + local.get $15 + i32.const 32 + i32.gt_s + if i32.const 112 local.get $14 - i32.const 0 + i32.const 2 i32.add call $~lib/array/Array#__unchecked_get - local.set $16 - i32.const 112 - local.get $14 - i32.const 1 - i32.add - call $~lib/array/Array#__unchecked_get - local.set $17 - local.get $15 - i32.const 32 - i32.gt_s - if - i32.const 112 - local.get $14 - i32.const 2 - i32.add - call $~lib/array/Array#__unchecked_get - local.set $19 - local.get $19 - i64.const 96 - local.get $15 - i64.extend_i32_s - i64.sub - i64.shr_u - local.set $18 - local.get $18 - local.get $17 - local.get $15 - i32.const 32 - i32.sub - i64.extend_i32_s - i64.shl - i64.or - local.set $18 - else - local.get $17 - i64.const 32 - local.get $15 - i64.extend_i32_s - i64.sub - i64.shr_u - local.set $18 - end - local.get $17 - i64.const 64 + local.set $19 + local.get $19 + i64.const 96 local.get $15 i64.extend_i32_s i64.sub i64.shr_u - local.get $16 + local.set $18 + local.get $18 + local.get $17 local.get $15 + i32.const 32 + i32.sub i64.extend_i32_s i64.shl i64.or - local.set $19 - local.get $11 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.set $20 - local.get $20 - local.get $19 - i64.mul - local.get $20 - local.get $18 - i64.mul + local.set $18 + else + local.get $17 i64.const 32 + local.get $15 + i64.extend_i32_s + i64.sub i64.shr_u - i64.add - local.set $21 - local.get $21 - i64.const 2 - i64.shl - local.set $22 - local.get $21 - i64.const 62 - i64.shr_u - local.get $22 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.set $23 - f64.const 8.515303950216386e-20 - local.get $12 - f64.promote_f32 - f64.copysign - local.get $22 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - local.get $23 + local.set $18 end + local.get $17 + i64.const 64 + local.get $15 + i64.extend_i32_s + i64.sub + i64.shr_u + local.get $16 + local.get $15 + i64.extend_i32_s + i64.shl + i64.or + local.set $19 + local.get $11 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.set $20 + local.get $20 + local.get $19 + i64.mul + local.get $20 + local.get $18 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $21 + local.get $21 + i64.const 2 + i64.shl + local.set $22 + local.get $21 + i64.const 62 + i64.shr_u + local.get $22 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.set $23 + f64.const 8.515303950216386e-20 + local.get $12 + f64.promote_f32 + f64.copysign + local.get $22 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + local.get $23 local.set $23 i32.const 0 local.get $23 @@ -11801,30 +11701,28 @@ f64.const 2 local.get $5 f64.mul - block $~lib/math/expo2|inlined.1 (result f64) - local.get $2 - local.set $6 - i32.const 1023 - i32.const 2043 - i32.const 2 - i32.div_u - i32.add - i32.const 20 - i32.shl - i64.extend_i32_u - i64.const 32 - i64.shl - f64.reinterpret_i64 - local.set $7 - local.get $6 - f64.const 1416.0996898839683 - f64.sub - call $~lib/math/NativeMath.exp - local.get $7 - f64.mul - local.get $7 - f64.mul - end + local.get $2 + local.set $6 + i32.const 1023 + i32.const 2043 + i32.const 2 + i32.div_u + i32.add + i32.const 20 + i32.shl + i64.extend_i32_u + i64.const 32 + i64.shl + f64.reinterpret_i64 + local.set $7 + local.get $6 + f64.const 1416.0996898839683 + f64.sub + call $~lib/math/NativeMath.exp + local.get $7 + f64.mul + local.get $7 + f64.mul f64.mul local.set $4 local.get $4 @@ -11919,27 +11817,25 @@ f32.const 2 local.get $4 f32.mul - block $~lib/math/expo2f|inlined.1 (result f32) - local.get $2 - local.set $5 - i32.const 127 - i32.const 235 - i32.const 1 - i32.shr_u - i32.add - i32.const 23 - i32.shl - f32.reinterpret_i32 - local.set $6 - local.get $5 - f32.const 162.88958740234375 - f32.sub - call $~lib/math/NativeMathf.exp - local.get $6 - f32.mul - local.get $6 - f32.mul - end + local.get $2 + local.set $5 + i32.const 127 + i32.const 235 + i32.const 1 + i32.shr_u + i32.add + i32.const 23 + i32.shl + f32.reinterpret_i32 + local.set $6 + local.get $5 + f32.const 162.88958740234375 + f32.sub + call $~lib/math/NativeMathf.exp + local.get $6 + f32.mul + local.get $6 + f32.mul f32.mul local.set $3 local.get $3 @@ -11954,12 +11850,10 @@ ) (func $std/math/test_sqrt (; 150 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 f64) - block $~lib/math/NativeMath.sqrt|inlined.0 (result f64) - local.get $0 - local.set $4 - local.get $4 - f64.sqrt - end + local.get $0 + local.set $4 + local.get $4 + f64.sqrt local.get $1 local.get $2 local.get $3 @@ -11983,12 +11877,10 @@ ) (func $std/math/test_sqrtf (; 151 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) (local $4 f32) - block $~lib/math/NativeMathf.sqrt|inlined.0 (result f32) - local.get $0 - local.set $4 - local.get $4 - f32.sqrt - end + local.get $0 + local.set $4 + local.get $4 + f32.sqrt local.get $1 local.get $2 local.get $3 @@ -12044,9 +11936,162 @@ local.get $0 return end - block $~lib/math/tan_kernf|inlined.0 (result f32) - local.get $0 + local.get $0 + f64.promote_f32 + local.set $4 + i32.const 0 + local.set $3 + local.get $4 + local.get $4 + f64.mul + local.set $5 + f64.const 0.002974357433599673 + local.get $5 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $6 + f64.const 0.05338123784456704 + local.get $5 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $7 + local.get $5 + local.get $5 + f64.mul + local.set $8 + local.get $5 + local.get $4 + f64.mul + local.set $9 + f64.const 0.3333313950307914 + local.get $5 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $10 + local.get $4 + local.get $9 + local.get $10 + f64.mul + f64.add + local.get $9 + local.get $8 + f64.mul + local.get $7 + local.get $8 + local.get $6 + f64.mul + f64.add + f64.mul + f64.add + local.set $6 + local.get $3 + if (result f64) + f32.const -1 f64.promote_f32 + local.get $6 + f64.div + else + local.get $6 + end + f32.demote_f64 + return + end + local.get $1 + i32.const 1081824209 + i32.le_u + if + local.get $1 + i32.const 1075235811 + i32.le_u + if + local.get $2 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.add + else + local.get $0 + f64.promote_f32 + f64.const 1.5707963267948966 + f64.sub + end + local.set $4 + i32.const 1 + local.set $3 + local.get $4 + local.get $4 + f64.mul + local.set $10 + f64.const 0.002974357433599673 + local.get $10 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $9 + f64.const 0.05338123784456704 + local.get $10 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $8 + local.get $10 + local.get $10 + f64.mul + local.set $7 + local.get $10 + local.get $4 + f64.mul + local.set $6 + f64.const 0.3333313950307914 + local.get $10 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $5 + local.get $4 + local.get $6 + local.get $5 + f64.mul + f64.add + local.get $6 + local.get $7 + f64.mul + local.get $8 + local.get $7 + local.get $9 + f64.mul + f64.add + f64.mul + f64.add + local.set $9 + local.get $3 + if (result f64) + f32.const -1 + f64.promote_f32 + local.get $9 + f64.div + else + local.get $9 + end + f32.demote_f64 + return + else + local.get $2 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 3.141592653589793 + f64.add + else + local.get $0 + f64.promote_f32 + f64.const 3.141592653589793 + f64.sub + end local.set $4 i32.const 0 local.set $3 @@ -12106,169 +12151,9 @@ local.get $6 end f32.demote_f64 - end - return - end - local.get $1 - i32.const 1081824209 - i32.le_u - if - local.get $1 - i32.const 1075235811 - i32.le_u - if - block $~lib/math/tan_kernf|inlined.1 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 1.5707963267948966 - f64.sub - end - local.set $4 - i32.const 1 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $10 - f64.const 0.002974357433599673 - local.get $10 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $9 - f64.const 0.05338123784456704 - local.get $10 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $8 - local.get $10 - local.get $10 - f64.mul - local.set $7 - local.get $10 - local.get $4 - f64.mul - local.set $6 - f64.const 0.3333313950307914 - local.get $10 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $5 - local.get $4 - local.get $6 - local.get $5 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $8 - local.get $7 - local.get $9 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $9 - f64.div - else - local.get $9 - end - f32.demote_f64 - end - return - else - block $~lib/math/tan_kernf|inlined.2 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 3.141592653589793 - f64.sub - end - local.set $4 - i32.const 0 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const 0.002974357433599673 - local.get $5 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $6 - f64.const 0.05338123784456704 - local.get $5 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $7 - local.get $5 - local.get $5 - f64.mul - local.set $8 - local.get $5 - local.get $4 - f64.mul - local.set $9 - f64.const 0.3333313950307914 - local.get $5 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $10 - local.get $4 - local.get $9 - local.get $10 - f64.mul - f64.add - local.get $9 - local.get $8 - f64.mul - local.get $7 - local.get $8 - local.get $6 - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $6 - f64.div - else - local.get $6 - end - f32.demote_f64 - end return end unreachable - unreachable end local.get $1 i32.const 1088565717 @@ -12278,158 +12163,153 @@ i32.const 1085271519 i32.le_u if - block $~lib/math/tan_kernf|inlined.3 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 4.71238898038469 - f64.sub - end - local.set $4 - i32.const 1 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $10 - f64.const 0.002974357433599673 - local.get $10 - f64.const 0.009465647849436732 - f64.mul + local.get $2 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 4.71238898038469 f64.add - local.set $9 - f64.const 0.05338123784456704 - local.get $10 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $8 - local.get $10 - local.get $10 - f64.mul - local.set $7 - local.get $10 - local.get $4 - f64.mul - local.set $6 - f64.const 0.3333313950307914 - local.get $10 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $5 - local.get $4 - local.get $6 - local.get $5 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $8 - local.get $7 - local.get $9 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $9 - f64.div - else - local.get $9 - end - f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const 4.71238898038469 + f64.sub end + local.set $4 + i32.const 1 + local.set $3 + local.get $4 + local.get $4 + f64.mul + local.set $10 + f64.const 0.002974357433599673 + local.get $10 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $9 + f64.const 0.05338123784456704 + local.get $10 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $8 + local.get $10 + local.get $10 + f64.mul + local.set $7 + local.get $10 + local.get $4 + f64.mul + local.set $6 + f64.const 0.3333313950307914 + local.get $10 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $5 + local.get $4 + local.get $6 + local.get $5 + f64.mul + f64.add + local.get $6 + local.get $7 + f64.mul + local.get $8 + local.get $7 + local.get $9 + f64.mul + f64.add + f64.mul + f64.add + local.set $9 + local.get $3 + if (result f64) + f32.const -1 + f64.promote_f32 + local.get $9 + f64.div + else + local.get $9 + end + f32.demote_f64 return else - block $~lib/math/tan_kernf|inlined.4 (result f32) - local.get $2 - if (result f64) - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.add - else - local.get $0 - f64.promote_f32 - f64.const 6.283185307179586 - f64.sub - end - local.set $4 - i32.const 0 - local.set $3 - local.get $4 - local.get $4 - f64.mul - local.set $5 - f64.const 0.002974357433599673 - local.get $5 - f64.const 0.009465647849436732 - f64.mul + local.get $2 + if (result f64) + local.get $0 + f64.promote_f32 + f64.const 6.283185307179586 f64.add - local.set $6 - f64.const 0.05338123784456704 - local.get $5 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $7 - local.get $5 - local.get $5 - f64.mul - local.set $8 - local.get $5 - local.get $4 - f64.mul - local.set $9 - f64.const 0.3333313950307914 - local.get $5 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $10 - local.get $4 - local.get $9 - local.get $10 - f64.mul - f64.add - local.get $9 - local.get $8 - f64.mul - local.get $7 - local.get $8 - local.get $6 - f64.mul - f64.add - f64.mul - f64.add - local.set $6 - local.get $3 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $6 - f64.div - else - local.get $6 - end - f32.demote_f64 + else + local.get $0 + f64.promote_f32 + f64.const 6.283185307179586 + f64.sub end + local.set $4 + i32.const 0 + local.set $3 + local.get $4 + local.get $4 + f64.mul + local.set $5 + f64.const 0.002974357433599673 + local.get $5 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $6 + f64.const 0.05338123784456704 + local.get $5 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $7 + local.get $5 + local.get $5 + f64.mul + local.set $8 + local.get $5 + local.get $4 + f64.mul + local.set $9 + f64.const 0.3333313950307914 + local.get $5 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $10 + local.get $4 + local.get $9 + local.get $10 + f64.mul + f64.add + local.get $9 + local.get $8 + f64.mul + local.get $7 + local.get $8 + local.get $6 + f64.mul + f64.add + f64.mul + f64.add + local.set $6 + local.get $3 + if (result f64) + f32.const -1 + f64.promote_f32 + local.get $6 + f64.div + else + local.get $6 + end + f32.demote_f64 return end unreachable - unreachable end local.get $1 i32.const 2139095040 @@ -12472,124 +12352,122 @@ i32.trunc_f64_s br $~lib/math/rempio2f|inlined.2 end - block $~lib/math/pio2_large_quot|inlined.2 (result i32) - local.get $12 - local.set $14 - local.get $11 - local.set $13 - local.get $13 - i32.const 23 - i32.shr_s - i32.const 152 - i32.sub - local.set $15 - local.get $15 - i32.const 6 - i32.shr_s - local.set $16 - local.get $15 - i32.const 63 - i32.and - local.set $17 + local.get $12 + local.set $14 + local.get $11 + local.set $13 + local.get $13 + i32.const 23 + i32.shr_s + i32.const 152 + i32.sub + local.set $15 + local.get $15 + i32.const 6 + i32.shr_s + local.set $16 + local.get $15 + i32.const 63 + i32.and + local.set $17 + i32.const 112 + local.get $16 + i32.const 0 + i32.add + call $~lib/array/Array#__unchecked_get + local.set $18 + i32.const 112 + local.get $16 + i32.const 1 + i32.add + call $~lib/array/Array#__unchecked_get + local.set $19 + local.get $17 + i32.const 32 + i32.gt_s + if i32.const 112 local.get $16 - i32.const 0 + i32.const 2 i32.add call $~lib/array/Array#__unchecked_get - local.set $18 - i32.const 112 - local.get $16 - i32.const 1 - i32.add - call $~lib/array/Array#__unchecked_get - local.set $19 - local.get $17 - i32.const 32 - i32.gt_s - if - i32.const 112 - local.get $16 - i32.const 2 - i32.add - call $~lib/array/Array#__unchecked_get - local.set $21 - local.get $21 - i64.const 96 - local.get $17 - i64.extend_i32_s - i64.sub - i64.shr_u - local.set $20 - local.get $20 - local.get $19 - local.get $17 - i32.const 32 - i32.sub - i64.extend_i32_s - i64.shl - i64.or - local.set $20 - else - local.get $19 - i64.const 32 - local.get $17 - i64.extend_i32_s - i64.sub - i64.shr_u - local.set $20 - end - local.get $19 - i64.const 64 + local.set $21 + local.get $21 + i64.const 96 local.get $17 i64.extend_i32_s i64.sub i64.shr_u - local.get $18 + local.set $20 + local.get $20 + local.get $19 local.get $17 + i32.const 32 + i32.sub i64.extend_i32_s i64.shl i64.or - local.set $21 - local.get $13 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - i64.extend_i32_s - local.set $22 - local.get $22 - local.get $21 - i64.mul - local.get $22 - local.get $20 - i64.mul + local.set $20 + else + local.get $19 i64.const 32 + local.get $17 + i64.extend_i32_s + i64.sub i64.shr_u - i64.add - local.set $23 - local.get $23 - i64.const 2 - i64.shl - local.set $24 - local.get $23 - i64.const 62 - i64.shr_u - local.get $24 - i64.const 63 - i64.shr_u - i64.add - i32.wrap_i64 - local.set $25 - f64.const 8.515303950216386e-20 - local.get $14 - f64.promote_f32 - f64.copysign - local.get $24 - f64.convert_i64_s - f64.mul - global.set $~lib/math/rempio2f_y - local.get $25 + local.set $20 end + local.get $19 + i64.const 64 + local.get $17 + i64.extend_i32_s + i64.sub + i64.shr_u + local.get $18 + local.get $17 + i64.extend_i32_s + i64.shl + i64.or + local.set $21 + local.get $13 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + i64.extend_i32_s + local.set $22 + local.get $22 + local.get $21 + i64.mul + local.get $22 + local.get $20 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $23 + local.get $23 + i64.const 2 + i64.shl + local.set $24 + local.get $23 + i64.const 62 + i64.shr_u + local.get $24 + i64.const 63 + i64.shr_u + i64.add + i32.wrap_i64 + local.set $25 + f64.const 8.515303950216386e-20 + local.get $14 + f64.promote_f32 + f64.copysign + local.get $24 + f64.convert_i64_s + f64.mul + global.set $~lib/math/rempio2f_y + local.get $25 local.set $25 i32.const 0 local.get $25 @@ -12601,70 +12479,68 @@ local.set $26 global.get $~lib/math/rempio2f_y local.set $27 - block $~lib/math/tan_kernf|inlined.5 (result f32) - local.get $27 - local.set $4 - local.get $26 - i32.const 1 - i32.and - local.set $13 - local.get $4 - local.get $4 - f64.mul - local.set $10 - f64.const 0.002974357433599673 - local.get $10 - f64.const 0.009465647849436732 - f64.mul - f64.add - local.set $9 - f64.const 0.05338123784456704 - local.get $10 - f64.const 0.024528318116654728 - f64.mul - f64.add - local.set $8 - local.get $10 - local.get $10 - f64.mul - local.set $7 - local.get $10 - local.get $4 - f64.mul - local.set $6 - f64.const 0.3333313950307914 - local.get $10 - f64.const 0.13339200271297674 - f64.mul - f64.add - local.set $5 - local.get $4 - local.get $6 - local.get $5 - f64.mul - f64.add - local.get $6 - local.get $7 - f64.mul - local.get $8 - local.get $7 + local.get $27 + local.set $4 + local.get $26 + i32.const 1 + i32.and + local.set $13 + local.get $4 + local.get $4 + f64.mul + local.set $10 + f64.const 0.002974357433599673 + local.get $10 + f64.const 0.009465647849436732 + f64.mul + f64.add + local.set $9 + f64.const 0.05338123784456704 + local.get $10 + f64.const 0.024528318116654728 + f64.mul + f64.add + local.set $8 + local.get $10 + local.get $10 + f64.mul + local.set $7 + local.get $10 + local.get $4 + f64.mul + local.set $6 + f64.const 0.3333313950307914 + local.get $10 + f64.const 0.13339200271297674 + f64.mul + f64.add + local.set $5 + local.get $4 + local.get $6 + local.get $5 + f64.mul + f64.add + local.get $6 + local.get $7 + f64.mul + local.get $8 + local.get $7 + local.get $9 + f64.mul + f64.add + f64.mul + f64.add + local.set $9 + local.get $13 + if (result f64) + f32.const -1 + f64.promote_f32 + local.get $9 + f64.div + else local.get $9 - f64.mul - f64.add - f64.mul - f64.add - local.set $9 - local.get $13 - if (result f64) - f32.const -1 - f64.promote_f32 - local.get $9 - f64.div - else - local.get $9 - end - f32.demote_f64 end + f32.demote_f64 ) (func $std/math/test_tanf (; 153 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) local.get $0 @@ -12886,12 +12762,10 @@ ) (func $std/math/test_trunc (; 158 ;) (type $FUNCSIG$idddi) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 i32) (result i32) (local $4 f64) - block $~lib/math/NativeMath.trunc|inlined.0 (result f64) - local.get $0 - local.set $4 - local.get $4 - f64.trunc - end + local.get $0 + local.set $4 + local.get $4 + f64.trunc local.get $1 local.get $2 local.get $3 @@ -12915,12 +12789,10 @@ ) (func $std/math/test_truncf (; 159 ;) (type $FUNCSIG$ifffi) (param $0 f32) (param $1 f32) (param $2 f32) (param $3 i32) (result i32) (local $4 f32) - block $~lib/math/NativeMathf.trunc|inlined.0 (result f32) - local.get $0 - local.set $4 - local.get $4 - f32.trunc - end + local.get $0 + local.set $4 + local.get $4 + f32.trunc local.get $1 local.get $2 local.get $3 @@ -13070,27 +12942,6 @@ br_if $case5|1 br $break|1 end - block - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i64.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - local.get $0 - local.get $0 - i64.mul - local.set $0 - end - end - block local.get $1 i32.const 1 i32.and @@ -13109,8 +12960,6 @@ i64.mul local.set $0 end - end - block local.get $1 i32.const 1 i32.and @@ -13129,8 +12978,6 @@ i64.mul local.set $0 end - end - block local.get $1 i32.const 1 i32.and @@ -13149,8 +12996,6 @@ i64.mul local.set $0 end - end - block local.get $1 i32.const 1 i32.and @@ -13169,6 +13014,23 @@ i64.mul local.set $0 end + local.get $1 + i32.const 1 + i32.and + if + local.get $2 + local.get $0 + i64.mul + local.set $2 + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 end local.get $1 i32.const 1 @@ -13188,27 +13050,28 @@ local.get $1 i32.const 0 i32.gt_s + i32.eqz + br_if $break|2 + local.get $1 + i32.const 1 + i32.and if - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i64.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - local.get $0 + local.get $2 local.get $0 i64.mul - local.set $0 - br $continue|2 + local.set $2 end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + local.get $0 + local.get $0 + i64.mul + local.set $0 + br $continue|2 end + unreachable end local.get $2 ) @@ -13230,27 +13093,28 @@ block $break|0 loop $continue|0 local.get $1 - if - local.get $3 - local.get $0 - f32.const 1 - local.get $1 - i32.const 1 - i32.and - select - f32.mul - local.set $3 - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - local.get $0 - local.get $0 - f32.mul - local.set $0 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $3 + local.get $0 + f32.const 1 + local.get $1 + i32.const 1 + i32.and + select + f32.mul + local.set $3 + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + local.get $0 + local.get $0 + f32.mul + local.set $0 + br $continue|0 end + unreachable end local.get $2 if (result f32) @@ -13279,27 +13143,28 @@ block $break|0 loop $continue|0 local.get $1 - if - local.get $3 - local.get $0 - f64.const 1 - local.get $1 - i32.const 1 - i32.and - select - f64.mul - local.set $3 - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - local.get $0 - local.get $0 - f64.mul - local.set $0 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $3 + local.get $0 + f64.const 1 + local.get $1 + i32.const 1 + i32.and + select + f64.mul + local.set $3 + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + local.get $0 + local.get $0 + f64.mul + local.set $0 + br $continue|0 end + unreachable end local.get $2 if (result f64) @@ -37588,7 +37453,7 @@ block $break|0 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 f64.convert_i32_s f64.const 1e6 @@ -37620,22 +37485,19 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 - unreachable + br $loop|0 end unreachable end - block $~lib/math/NativeMathf.seedRandom|inlined.0 - call $~lib/bindings/Math/random - i64.reinterpret_f64 - local.set $2 - local.get $2 - call $~lib/math/NativeMath.seedRandom - end + call $~lib/bindings/Math/random + i64.reinterpret_f64 + local.set $2 + local.get $2 + call $~lib/math/NativeMath.seedRandom block $break|1 i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 f64.convert_i32_s f64.const 1e6 @@ -37667,8 +37529,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -38686,19 +38547,17 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMath.signbit|inlined.2 (result i32) - f64.const 0 - local.set $1 - local.get $1 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $1 - local.get $1 - f64.eq - i32.and - end + f64.const 0 + local.set $1 + local.get $1 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.get $1 + local.get $1 + f64.eq + i32.and i32.const 0 i32.ne i32.const 0 @@ -38712,19 +38571,17 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMath.signbit|inlined.3 (result i32) - f64.const -0 - local.set $1 - local.get $1 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $1 - local.get $1 - f64.eq - i32.and - end + f64.const -0 + local.set $1 + local.get $1 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.get $1 + local.get $1 + f64.eq + i32.and i32.const 0 i32.ne i32.const 1 @@ -38738,19 +38595,17 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMath.signbit|inlined.4 (result i32) - f64.const 1 - local.set $1 - local.get $1 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $1 - local.get $1 - f64.eq - i32.and - end + f64.const 1 + local.set $1 + local.get $1 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.get $1 + local.get $1 + f64.eq + i32.and i32.const 0 i32.ne i32.const 0 @@ -38764,19 +38619,17 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMath.signbit|inlined.5 (result i32) - f64.const -1 - local.set $1 - local.get $1 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $1 - local.get $1 - f64.eq - i32.and - end + f64.const -1 + local.set $1 + local.get $1 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.get $1 + local.get $1 + f64.eq + i32.and i32.const 0 i32.ne i32.const 1 @@ -38790,19 +38643,17 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMath.signbit|inlined.6 (result i32) - f64.const nan:0x8000000000000 - local.set $1 - local.get $1 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $1 - local.get $1 - f64.eq - i32.and - end + f64.const nan:0x8000000000000 + local.set $1 + local.get $1 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.get $1 + local.get $1 + f64.eq + i32.and i32.const 0 i32.ne i32.const 0 @@ -38816,20 +38667,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMath.signbit|inlined.7 (result i32) - f64.const nan:0x8000000000000 - f64.neg - local.set $1 - local.get $1 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $1 - local.get $1 - f64.eq - i32.and - end + f64.const nan:0x8000000000000 + f64.neg + local.set $1 + local.get $1 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.get $1 + local.get $1 + f64.eq + i32.and i32.const 0 i32.ne i32.const 0 @@ -38843,19 +38692,17 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMath.signbit|inlined.8 (result i32) - f64.const inf - local.set $1 - local.get $1 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $1 - local.get $1 - f64.eq - i32.and - end + f64.const inf + local.set $1 + local.get $1 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.get $1 + local.get $1 + f64.eq + i32.and i32.const 0 i32.ne i32.const 0 @@ -38869,20 +38716,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMath.signbit|inlined.9 (result i32) - f64.const inf - f64.neg - local.set $1 - local.get $1 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.get $1 - local.get $1 - f64.eq - i32.and - end + f64.const inf + f64.neg + local.set $1 + local.get $1 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.get $1 + local.get $1 + f64.eq + i32.and i32.const 0 i32.ne i32.const 1 @@ -38896,18 +38741,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMathf.signbit|inlined.2 (result i32) - f32.const 0 - local.set $3 - local.get $3 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $3 - local.get $3 - f32.eq - i32.and - end + f32.const 0 + local.set $3 + local.get $3 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + local.get $3 + local.get $3 + f32.eq + i32.and i32.const 0 i32.ne i32.const 0 @@ -38921,18 +38764,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMathf.signbit|inlined.3 (result i32) - f32.const -0 - local.set $3 - local.get $3 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $3 - local.get $3 - f32.eq - i32.and - end + f32.const -0 + local.set $3 + local.get $3 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + local.get $3 + local.get $3 + f32.eq + i32.and i32.const 0 i32.ne i32.const 1 @@ -38946,18 +38787,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMathf.signbit|inlined.4 (result i32) - f32.const 1 - local.set $3 - local.get $3 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $3 - local.get $3 - f32.eq - i32.and - end + f32.const 1 + local.set $3 + local.get $3 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + local.get $3 + local.get $3 + f32.eq + i32.and i32.const 0 i32.ne i32.const 0 @@ -38971,18 +38810,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMathf.signbit|inlined.5 (result i32) - f32.const -1 - local.set $3 - local.get $3 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $3 - local.get $3 - f32.eq - i32.and - end + f32.const -1 + local.set $3 + local.get $3 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + local.get $3 + local.get $3 + f32.eq + i32.and i32.const 0 i32.ne i32.const 1 @@ -38996,18 +38833,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMathf.signbit|inlined.6 (result i32) - f32.const nan:0x400000 - local.set $3 - local.get $3 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $3 - local.get $3 - f32.eq - i32.and - end + f32.const nan:0x400000 + local.set $3 + local.get $3 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + local.get $3 + local.get $3 + f32.eq + i32.and i32.const 0 i32.ne i32.const 0 @@ -39021,19 +38856,17 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMathf.signbit|inlined.7 (result i32) - f32.const nan:0x400000 - f32.neg - local.set $3 - local.get $3 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $3 - local.get $3 - f32.eq - i32.and - end + f32.const nan:0x400000 + f32.neg + local.set $3 + local.get $3 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + local.get $3 + local.get $3 + f32.eq + i32.and i32.const 0 i32.ne i32.const 0 @@ -39047,18 +38880,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMathf.signbit|inlined.8 (result i32) - f32.const inf - local.set $3 - local.get $3 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $3 - local.get $3 - f32.eq - i32.and - end + f32.const inf + local.set $3 + local.get $3 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + local.get $3 + local.get $3 + f32.eq + i32.and i32.const 0 i32.ne i32.const 0 @@ -39072,19 +38903,17 @@ call $~lib/builtins/abort unreachable end - block $~lib/math/NativeMathf.signbit|inlined.9 (result i32) - f32.const inf - f32.neg - local.set $3 - local.get $3 - i32.reinterpret_f32 - i32.const 31 - i32.shr_u - local.get $3 - local.get $3 - f32.eq - i32.and - end + f32.const inf + f32.neg + local.set $3 + local.get $3 + i32.reinterpret_f32 + i32.const 31 + i32.shr_u + local.get $3 + local.get $3 + f32.eq + i32.and i32.const 0 i32.ne i32.const 1 diff --git a/tests/compiler/std/mod.untouched.wat b/tests/compiler/std/mod.untouched.wat index 9d55b9cd..857bd9e0 100644 --- a/tests/compiler/std/mod.untouched.wat +++ b/tests/compiler/std/mod.untouched.wat @@ -175,36 +175,37 @@ local.get $4 local.get $5 i64.gt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i64.ge_u if local.get $2 local.get $3 - i64.ge_u + i64.eq if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 - i64.sub - local.set $2 + f64.const 0 + local.get $0 + f64.mul + return end local.get $2 - i64.const 1 - i64.shl - local.set $2 - local.get $4 - i64.const 1 + local.get $3 i64.sub - local.set $4 - br $continue|0 + local.set $2 end + local.get $2 + i64.const 1 + i64.shl + local.set $2 + local.get $4 + i64.const 1 + i64.sub + local.set $4 + br $continue|0 end + unreachable end local.get $2 local.get $3 @@ -476,36 +477,37 @@ local.get $4 local.get $5 i32.gt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.ge_u if local.get $2 local.get $3 - i32.ge_u + i32.eq if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - local.set $2 + f32.const 0 + local.get $0 + f32.mul + return end local.get $2 - i32.const 1 - i32.shl - local.set $2 - local.get $4 - i32.const 1 + local.get $3 i32.sub - local.set $4 - br $continue|0 + local.set $2 end + local.get $2 + i32.const 1 + i32.shl + local.set $2 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $continue|0 end + unreachable end local.get $2 local.get $3 diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index d3182e92..7126f53a 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -110,24 +110,22 @@ ) (func $std/new/AClass#constructor (; 2 ;) (type $FUNCSIG$iif) (param $0 i32) (param $1 f32) (result i32) local.get $0 - block (result i32) - local.get $0 - i32.eqz - if - i32.const 8 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 1 - i32.store - local.get $0 - f32.const 2 - f32.store offset=4 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 8 + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end + local.get $0 + i32.const 1 + i32.store + local.get $0 + f32.const 2 + f32.store offset=4 + local.get $0 i32.load i32.const 1 i32.add diff --git a/tests/compiler/std/object-literal.untouched.wat b/tests/compiler/std/object-literal.untouched.wat index 507c5536..7bae1474 100644 --- a/tests/compiler/std/object-literal.untouched.wat +++ b/tests/compiler/std/object-literal.untouched.wat @@ -161,22 +161,23 @@ else i32.const 0 end - if - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $continue|0 end + unreachable end local.get $5 local.set $8 @@ -341,44 +342,38 @@ global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset - block (result i32) - i32.const 8 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 1 - i32.store - local.get $0 - i32.const 24 - i32.store offset=4 - local.get $0 - end + i32.const 8 + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 + local.get $0 + i32.const 1 + i32.store + local.get $0 + i32.const 24 + i32.store offset=4 + local.get $0 call $std/object-literal/bar - block (result i32) - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - i32.const 2 - i32.store - local.get $1 - end + i32.const 4 + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 + i32.const 2 + i32.store + local.get $1 call $std/object-literal/bar2 - block (result i32) - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - i32.const 3 - i32.store - local.get $2 - end + i32.const 4 + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $2 + local.get $2 + i32.const 3 + i32.store + local.get $2 call $std/object-literal/Foo2#test local.get $0 call $~lib/rt/stub/__release diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index dfedd2fd..67d1b850 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -656,7 +656,6 @@ unreachable end unreachable - unreachable end local.get $8 i32.const 1072693248 @@ -2729,24 +2728,22 @@ i32.const 2 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/shl - block (result i32) - global.get $std/operator-overloading/shl - i32.const 3 - call $std/operator-overloading/Tester.shl - local.tee $11 - local.tee $12 - global.get $std/operator-overloading/sres - local.tee $13 - i32.ne - if - local.get $12 - call $~lib/rt/stub/__retain - drop - local.get $13 - call $~lib/rt/stub/__release - end + global.get $std/operator-overloading/shl + i32.const 3 + call $std/operator-overloading/Tester.shl + local.tee $11 + local.tee $12 + global.get $std/operator-overloading/sres + local.tee $13 + i32.ne + if local.get $12 + call $~lib/rt/stub/__retain + drop + local.get $13 + call $~lib/rt/stub/__release end + local.get $12 global.set $std/operator-overloading/sres global.get $std/operator-overloading/sres i32.load @@ -2922,23 +2919,21 @@ i32.const 1 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/incdec - block (result i32) - global.get $std/operator-overloading/incdec - call $std/operator-overloading/Tester#inc - local.tee $15 - local.tee $16 - global.get $std/operator-overloading/incdec - local.tee $17 - i32.ne - if - local.get $16 - call $~lib/rt/stub/__retain - drop - local.get $17 - call $~lib/rt/stub/__release - end + global.get $std/operator-overloading/incdec + call $std/operator-overloading/Tester#inc + local.tee $15 + local.tee $16 + global.get $std/operator-overloading/incdec + local.tee $17 + i32.ne + if local.get $16 + call $~lib/rt/stub/__retain + drop + local.get $17 + call $~lib/rt/stub/__release end + local.get $16 global.set $std/operator-overloading/incdec global.get $std/operator-overloading/incdec i32.load @@ -2961,23 +2956,21 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $std/operator-overloading/incdec - call $std/operator-overloading/Tester#dec - local.tee $16 - local.tee $17 - global.get $std/operator-overloading/incdec - local.tee $18 - i32.ne - if - local.get $17 - call $~lib/rt/stub/__retain - drop - local.get $18 - call $~lib/rt/stub/__release - end + global.get $std/operator-overloading/incdec + call $std/operator-overloading/Tester#dec + local.tee $16 + local.tee $17 + global.get $std/operator-overloading/incdec + local.tee $18 + i32.ne + if local.get $17 + call $~lib/rt/stub/__retain + drop + local.get $18 + call $~lib/rt/stub/__release end + local.get $17 global.set $std/operator-overloading/incdec global.get $std/operator-overloading/incdec i32.load @@ -3000,39 +2993,33 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 0 - i32.const 0 - i32.const 1 - call $std/operator-overloading/Tester#constructor - local.set $18 - global.get $std/operator-overloading/incdec - call $~lib/rt/stub/__release - local.get $18 - end + i32.const 0 + i32.const 0 + i32.const 1 + call $std/operator-overloading/Tester#constructor + local.set $18 + global.get $std/operator-overloading/incdec + call $~lib/rt/stub/__release + local.get $18 global.set $std/operator-overloading/incdec - block (result i32) - block (result i32) - global.get $std/operator-overloading/incdec - local.tee $18 - call $std/operator-overloading/Tester#postInc - local.tee $17 - local.tee $19 - global.get $std/operator-overloading/incdec - local.tee $20 - i32.ne - if - local.get $19 - call $~lib/rt/stub/__retain - drop - local.get $20 - call $~lib/rt/stub/__release - end - local.get $19 - end - global.set $std/operator-overloading/incdec - local.get $18 + global.get $std/operator-overloading/incdec + local.tee $18 + call $std/operator-overloading/Tester#postInc + local.tee $17 + local.tee $19 + global.get $std/operator-overloading/incdec + local.tee $20 + i32.ne + if + local.get $19 + call $~lib/rt/stub/__retain + drop + local.get $20 + call $~lib/rt/stub/__release end + local.get $19 + global.set $std/operator-overloading/incdec + local.get $18 call $~lib/rt/stub/__retain global.set $std/operator-overloading/tmp global.get $std/operator-overloading/tmp @@ -3077,42 +3064,36 @@ call $~lib/builtins/abort unreachable end - block (result i32) - block (result i32) - block (result i32) - global.get $std/operator-overloading/incdec - local.tee $18 - call $std/operator-overloading/Tester#postDec - local.tee $19 - local.tee $20 - global.get $std/operator-overloading/incdec - local.tee $21 - i32.ne - if - local.get $20 - call $~lib/rt/stub/__retain - drop - local.get $21 - call $~lib/rt/stub/__release - end - local.get $20 - end - global.set $std/operator-overloading/incdec - local.get $18 - end - local.tee $21 - global.get $std/operator-overloading/tmp - local.tee $18 - i32.ne - if - local.get $21 - call $~lib/rt/stub/__retain - drop - local.get $18 - call $~lib/rt/stub/__release - end + global.get $std/operator-overloading/incdec + local.tee $18 + call $std/operator-overloading/Tester#postDec + local.tee $19 + local.tee $20 + global.get $std/operator-overloading/incdec + local.tee $21 + i32.ne + if + local.get $20 + call $~lib/rt/stub/__retain + drop local.get $21 + call $~lib/rt/stub/__release end + local.get $20 + global.set $std/operator-overloading/incdec + local.get $18 + local.tee $21 + global.get $std/operator-overloading/tmp + local.tee $18 + i32.ne + if + local.get $21 + call $~lib/rt/stub/__retain + drop + local.get $18 + call $~lib/rt/stub/__release + end + local.get $21 global.set $std/operator-overloading/tmp global.get $std/operator-overloading/tmp i32.load @@ -3161,23 +3142,21 @@ i32.const 2 call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais1 - block (result i32) - global.get $std/operator-overloading/ais1 - call $std/operator-overloading/TesterInlineStatic.postInc - local.tee $21 - local.tee $20 - global.get $std/operator-overloading/ais1 - local.tee $18 - i32.ne - if - local.get $20 - call $~lib/rt/stub/__retain - drop - local.get $18 - call $~lib/rt/stub/__release - end + global.get $std/operator-overloading/ais1 + call $std/operator-overloading/TesterInlineStatic.postInc + local.tee $21 + local.tee $20 + global.get $std/operator-overloading/ais1 + local.tee $18 + i32.ne + if local.get $20 + call $~lib/rt/stub/__retain + drop + local.get $18 + call $~lib/rt/stub/__release end + local.get $20 global.set $std/operator-overloading/ais1 i32.const 0 i32.const 2 @@ -3216,23 +3195,21 @@ i32.const 2 call $std/operator-overloading/TesterInlineInstance#constructor global.set $std/operator-overloading/aii1 - block (result i32) - global.get $std/operator-overloading/aii1 - call $std/operator-overloading/TesterInlineInstance#postInc - local.tee $18 - local.tee $22 - global.get $std/operator-overloading/aii1 - local.tee $23 - i32.ne - if - local.get $22 - call $~lib/rt/stub/__retain - drop - local.get $23 - call $~lib/rt/stub/__release - end + global.get $std/operator-overloading/aii1 + call $std/operator-overloading/TesterInlineInstance#postInc + local.tee $18 + local.tee $22 + global.get $std/operator-overloading/aii1 + local.tee $23 + i32.ne + if local.get $22 + call $~lib/rt/stub/__retain + drop + local.get $23 + call $~lib/rt/stub/__release end + local.get $22 global.set $std/operator-overloading/aii1 i32.const 0 i32.const 2 diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat index d338ec1e..cc13408c 100644 --- a/tests/compiler/std/pointer.untouched.wat +++ b/tests/compiler/std/pointer.untouched.wat @@ -298,36 +298,37 @@ local.get $3 i32.const 32 i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 end + unreachable end end ) @@ -345,32 +346,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -383,50 +381,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -491,22 +490,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -538,338 +533,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -877,15 +612,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -893,15 +628,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -909,10 +644,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -928,306 +663,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1235,148 +1133,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1384,76 +1250,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1461,40 +1311,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1502,22 +1344,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1578,94 +1416,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -1683,54 +1516,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -1742,9 +1534,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -1788,29 +1624,23 @@ (local $5 i32) (local $6 i32) (local $7 f32) - block $std/pointer/Pointer#constructor|inlined.0 (result i32) - i32.const 0 - local.set $1 - i32.const 8 - local.set $0 - local.get $0 - call $~lib/rt/stub/__retain - end + i32.const 0 + local.set $1 + i32.const 8 + local.set $0 + local.get $0 + call $~lib/rt/stub/__retain global.set $std/pointer/one - block $std/pointer/Pointer#constructor|inlined.1 (result i32) - i32.const 0 - local.set $1 - i32.const 24 - local.set $0 - local.get $0 - call $~lib/rt/stub/__retain - end + i32.const 0 + local.set $1 + i32.const 24 + local.set $0 + local.get $0 + call $~lib/rt/stub/__retain global.set $std/pointer/two - block $std/pointer/Pointer#get:offset|inlined.0 (result i32) - global.get $std/pointer/one - local.set $0 - local.get $0 - end + global.get $std/pointer/one + local.set $0 + local.get $0 i32.const 8 i32.eq i32.eqz @@ -1822,11 +1652,9 @@ call $~lib/builtins/abort unreachable end - block $std/pointer/Pointer#get:offset|inlined.1 (result i32) - global.get $std/pointer/two - local.set $1 - local.get $1 - end + global.get $std/pointer/two + local.set $1 + local.get $1 i32.const 24 i32.eq i32.eqz @@ -1896,11 +1724,9 @@ local.tee $1 call $~lib/rt/stub/__retain global.set $std/pointer/add - block $std/pointer/Pointer#get:offset|inlined.2 (result i32) - global.get $std/pointer/add - local.set $0 - local.get $0 - end + global.get $std/pointer/add + local.set $0 + local.get $0 i32.const 32 i32.eq i32.eqz @@ -1918,11 +1744,9 @@ local.tee $0 call $~lib/rt/stub/__retain global.set $std/pointer/sub - block $std/pointer/Pointer#get:offset|inlined.3 (result i32) - global.get $std/pointer/sub - local.set $2 - local.get $2 - end + global.get $std/pointer/sub + local.set $2 + local.get $2 i32.const 16 i32.eq i32.eqz @@ -1934,11 +1758,9 @@ call $~lib/builtins/abort unreachable end - block $std/pointer/Pointer#get:offset|inlined.4 (result i32) - global.get $std/pointer/one - local.set $2 - local.get $2 - end + global.get $std/pointer/one + local.set $2 + local.get $2 i32.const 8 i32.eq i32.eqz @@ -1950,27 +1772,23 @@ call $~lib/builtins/abort unreachable end - block (result i32) - block (result i32) - global.get $std/pointer/one - call $std/pointer/Pointer#inc - local.tee $2 - local.tee $3 - global.get $std/pointer/one - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $3 - end - global.set $std/pointer/one - global.get $std/pointer/one + global.get $std/pointer/one + call $std/pointer/Pointer#inc + local.tee $2 + local.tee $3 + global.get $std/pointer/one + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release end + local.get $3 + global.set $std/pointer/one + global.get $std/pointer/one call $~lib/rt/stub/__retain global.set $std/pointer/nextOne global.get $std/pointer/nextOne @@ -1985,11 +1803,9 @@ call $~lib/builtins/abort unreachable end - block $std/pointer/Pointer#get:offset|inlined.5 (result i32) - global.get $std/pointer/one - local.set $4 - local.get $4 - end + global.get $std/pointer/one + local.set $4 + local.get $4 i32.const 16 i32.eq i32.eqz @@ -2001,11 +1817,9 @@ call $~lib/builtins/abort unreachable end - block $std/pointer/Pointer#get:offset|inlined.6 (result i32) - global.get $std/pointer/two - local.set $3 - local.get $3 - end + global.get $std/pointer/two + local.set $3 + local.get $3 i32.const 24 i32.eq i32.eqz @@ -2017,47 +1831,41 @@ call $~lib/builtins/abort unreachable end - block (result i32) - global.get $std/pointer/two - call $std/pointer/Pointer#dec - local.tee $3 - local.tee $4 - global.get $std/pointer/two - local.tee $5 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $5 - call $~lib/rt/stub/__release - end + global.get $std/pointer/two + call $std/pointer/Pointer#dec + local.tee $3 + local.tee $4 + global.get $std/pointer/two + local.tee $5 + i32.ne + if local.get $4 - end - global.set $std/pointer/two - block (result i32) - global.get $std/pointer/two - call $std/pointer/Pointer#dec - local.tee $4 - local.tee $5 - global.get $std/pointer/two - local.tee $6 - i32.ne - if - local.get $5 - call $~lib/rt/stub/__retain - drop - local.get $6 - call $~lib/rt/stub/__release - end + call $~lib/rt/stub/__retain + drop local.get $5 + call $~lib/rt/stub/__release end + local.get $4 global.set $std/pointer/two - block $std/pointer/Pointer#get:offset|inlined.7 (result i32) - global.get $std/pointer/two - local.set $6 + global.get $std/pointer/two + call $std/pointer/Pointer#dec + local.tee $4 + local.tee $5 + global.get $std/pointer/two + local.tee $6 + i32.ne + if + local.get $5 + call $~lib/rt/stub/__retain + drop local.get $6 + call $~lib/rt/stub/__release end + local.get $5 + global.set $std/pointer/two + global.get $std/pointer/two + local.set $6 + local.get $6 i32.const 8 i32.eq i32.eqz @@ -2113,16 +1921,12 @@ br $std/pointer/Pointer#get:value|inlined.6 end call $std/pointer/Pointer#set:value - block $std/pointer/Pointer#get:offset|inlined.8 (result i32) - global.get $std/pointer/one - local.set $6 - local.get $6 - end - block $std/pointer/Pointer#get:offset|inlined.9 (result i32) - global.get $std/pointer/two - local.set $5 - local.get $5 - end + global.get $std/pointer/one + local.set $6 + local.get $6 + global.get $std/pointer/two + local.set $5 + local.get $5 i32.ne i32.eqz if @@ -2169,14 +1973,12 @@ call $~lib/builtins/abort unreachable end - block $std/pointer/Pointer#constructor|inlined.0 (result i32) - i32.const 0 - local.set $5 - i32.const 0 - local.set $6 - local.get $6 - call $~lib/rt/stub/__retain - end + i32.const 0 + local.set $5 + i32.const 0 + local.set $6 + local.get $6 + call $~lib/rt/stub/__retain global.set $std/pointer/buf global.get $std/pointer/buf i32.const 0 @@ -2186,18 +1988,16 @@ i32.const 1 f32.const 1.2000000476837158 call $std/pointer/Pointer#set - block $std/pointer/Pointer#get|inlined.0 (result f32) - global.get $std/pointer/buf - local.set $5 - i32.const 0 - local.set $6 - local.get $5 - local.get $6 - i32.const 4 - i32.mul - i32.add - f32.load - end + global.get $std/pointer/buf + local.set $5 + i32.const 0 + local.set $6 + local.get $5 + local.get $6 + i32.const 4 + i32.mul + i32.add + f32.load f32.const 1.100000023841858 f32.eq i32.eqz @@ -2209,18 +2009,16 @@ call $~lib/builtins/abort unreachable end - block $std/pointer/Pointer#get|inlined.1 (result f32) - global.get $std/pointer/buf - local.set $5 - i32.const 1 - local.set $6 - local.get $5 - local.get $6 - i32.const 4 - i32.mul - i32.add - f32.load - end + global.get $std/pointer/buf + local.set $5 + i32.const 1 + local.set $6 + local.get $5 + local.get $6 + i32.const 4 + i32.mul + i32.add + f32.load f32.const 1.2000000476837158 f32.eq i32.eqz @@ -2232,18 +2030,16 @@ call $~lib/builtins/abort unreachable end - block $std/pointer/Pointer#get|inlined.2 (result f32) - global.get $std/pointer/buf - local.set $5 - i32.const 0 - local.set $6 - local.get $5 - local.get $6 - i32.const 4 - i32.mul - i32.add - f32.load - end + global.get $std/pointer/buf + local.set $5 + i32.const 0 + local.set $6 + local.get $5 + local.get $6 + i32.const 4 + i32.mul + i32.add + f32.load f32.const 1.100000023841858 f32.eq i32.eqz @@ -2255,18 +2051,16 @@ call $~lib/builtins/abort unreachable end - block $std/pointer/Pointer#get|inlined.3 (result f32) - global.get $std/pointer/buf - local.set $5 - i32.const 1 - local.set $6 - local.get $5 - local.get $6 - i32.const 4 - i32.mul - i32.add - f32.load - end + global.get $std/pointer/buf + local.set $5 + i32.const 1 + local.set $6 + local.get $5 + local.get $6 + i32.const 4 + i32.mul + i32.add + f32.load f32.const 1.2000000476837158 f32.eq i32.eqz @@ -2304,33 +2098,29 @@ call $~lib/builtins/abort unreachable end - block $std/pointer/Pointer#set|inlined.0 - global.get $std/pointer/buf - local.set $5 - i32.const 2 - local.set $6 - f32.const 1.2999999523162842 - local.set $7 - local.get $5 - local.get $6 - i32.const 4 - i32.mul - i32.add - local.get $7 - f32.store - end - block $std/pointer/Pointer#get|inlined.4 (result f32) - global.get $std/pointer/buf - local.set $5 - i32.const 2 - local.set $6 - local.get $5 - local.get $6 - i32.const 4 - i32.mul - i32.add - f32.load - end + global.get $std/pointer/buf + local.set $5 + i32.const 2 + local.set $6 + f32.const 1.2999999523162842 + local.set $7 + local.get $5 + local.get $6 + i32.const 4 + i32.mul + i32.add + local.get $7 + f32.store + global.get $std/pointer/buf + local.set $5 + i32.const 2 + local.set $6 + local.get $5 + local.get $6 + i32.const 4 + i32.mul + i32.add + f32.load f32.const 1.2999999523162842 f32.eq i32.eqz @@ -2342,18 +2132,16 @@ call $~lib/builtins/abort unreachable end - block $std/pointer/Pointer#get|inlined.5 (result f32) - global.get $std/pointer/buf - local.set $5 - i32.const 2 - local.set $6 - local.get $5 - local.get $6 - i32.const 4 - i32.mul - i32.add - f32.load - end + global.get $std/pointer/buf + local.set $5 + i32.const 2 + local.set $6 + local.get $5 + local.get $6 + i32.const 4 + i32.mul + i32.add + f32.load f32.const 1.2999999523162842 f32.eq i32.eqz diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index aa7b9d87..a9d9e3bb 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -632,7 +632,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -647,7 +647,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -668,14 +668,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 512 @@ -1157,14 +1157,12 @@ i32.and local.tee $1 i32.sub - local.set $2 local.get $0 local.get $1 i32.add local.tee $0 i32.const 0 i32.store - local.get $2 i32.const -4 i32.and local.tee $1 @@ -1419,7 +1417,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1501,7 +1500,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 @@ -1840,13 +1840,15 @@ if local.get $0 return + else + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $continue|0 + unreachable end end i32.const 0 @@ -1904,7 +1906,8 @@ loop $continue|0 local.get $2 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $2 i32.load offset=4 @@ -2144,7 +2147,7 @@ (local $1 i32) call $~lib/set/Set#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 100 i32.lt_s @@ -2171,7 +2174,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 else i32.const 0 i32.const 376 @@ -2197,7 +2200,7 @@ end i32.const 50 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i32.const 100 i32.lt_s @@ -2225,7 +2228,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 else i32.const 0 i32.const 376 @@ -2251,7 +2254,7 @@ end i32.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i32.const 50 i32.lt_s @@ -2286,7 +2289,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -2305,7 +2308,7 @@ end i32.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i32.const 50 i32.lt_s @@ -2354,7 +2357,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -2465,7 +2468,8 @@ loop $continue|0 local.get $2 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $2 i32.load offset=4 @@ -2701,7 +2705,7 @@ (local $1 i32) call $~lib/set/Set#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 100 i32.lt_u @@ -2728,7 +2732,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 else i32.const 0 i32.const 376 @@ -2754,7 +2758,7 @@ end i32.const 50 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i32.const 100 i32.lt_u @@ -2782,7 +2786,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 else i32.const 0 i32.const 376 @@ -2808,7 +2812,7 @@ end i32.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i32.const 50 i32.lt_u @@ -2843,7 +2847,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -2862,7 +2866,7 @@ end i32.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i32.const 50 i32.lt_u @@ -2911,7 +2915,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -3018,13 +3022,15 @@ if local.get $0 return + else + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $continue|0 + unreachable end end i32.const 0 @@ -3082,7 +3088,8 @@ loop $continue|0 local.get $2 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $2 i32.load offset=4 @@ -3322,7 +3329,7 @@ (local $1 i32) call $~lib/set/Set#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 100 i32.lt_s @@ -3349,7 +3356,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 else i32.const 0 i32.const 376 @@ -3375,7 +3382,7 @@ end i32.const 50 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i32.const 100 i32.lt_s @@ -3403,7 +3410,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 else i32.const 0 i32.const 376 @@ -3429,7 +3436,7 @@ end i32.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i32.const 50 i32.lt_s @@ -3464,7 +3471,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -3483,7 +3490,7 @@ end i32.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i32.const 50 i32.lt_s @@ -3532,7 +3539,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -3643,7 +3650,8 @@ loop $continue|0 local.get $2 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $2 i32.load offset=4 @@ -3879,7 +3887,7 @@ (local $1 i32) call $~lib/set/Set#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 100 i32.lt_u @@ -3906,7 +3914,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 else i32.const 0 i32.const 376 @@ -3932,7 +3940,7 @@ end i32.const 50 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i32.const 100 i32.lt_u @@ -3960,7 +3968,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 else i32.const 0 i32.const 376 @@ -3986,7 +3994,7 @@ end i32.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i32.const 50 i32.lt_u @@ -4021,7 +4029,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -4040,7 +4048,7 @@ end i32.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i32.const 50 i32.lt_u @@ -4089,7 +4097,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -4210,13 +4218,15 @@ if local.get $0 return + else + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $continue|0 + unreachable end end i32.const 0 @@ -4270,7 +4280,8 @@ loop $continue|0 local.get $2 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $2 i32.load offset=4 @@ -4502,7 +4513,7 @@ (local $1 i32) call $~lib/set/Set#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 100 i32.lt_s @@ -4529,7 +4540,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 else i32.const 0 i32.const 376 @@ -4555,7 +4566,7 @@ end i32.const 50 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i32.const 100 i32.lt_s @@ -4583,7 +4594,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 else i32.const 0 i32.const 376 @@ -4609,7 +4620,7 @@ end i32.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i32.const 50 i32.lt_s @@ -4644,7 +4655,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -4663,7 +4674,7 @@ end i32.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i32.const 50 i32.lt_s @@ -4712,7 +4723,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -4777,7 +4788,7 @@ (local $1 i32) call $~lib/set/Set#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 100 i32.lt_u @@ -4804,7 +4815,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 else i32.const 0 i32.const 376 @@ -4830,7 +4841,7 @@ end i32.const 50 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i32.const 100 i32.lt_u @@ -4858,7 +4869,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 else i32.const 0 i32.const 376 @@ -4884,7 +4895,7 @@ end i32.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i32.const 50 i32.lt_u @@ -4919,7 +4930,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -4938,7 +4949,7 @@ end i32.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i32.const 50 i32.lt_u @@ -4987,7 +4998,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -5176,13 +5187,15 @@ if local.get $0 return + else + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 + unreachable end end i32.const 0 @@ -5236,7 +5249,8 @@ loop $continue|0 local.get $2 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $2 i32.load offset=8 @@ -5469,7 +5483,7 @@ (local $1 i32) call $~lib/set/Set#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i64.const 100 i64.lt_s @@ -5496,7 +5510,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|0 + br $loop|0 else i32.const 0 i32.const 376 @@ -5522,7 +5536,7 @@ end i64.const 50 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i64.const 100 i64.lt_s @@ -5550,7 +5564,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|1 + br $loop|1 else i32.const 0 i32.const 376 @@ -5576,7 +5590,7 @@ end i64.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i64.const 50 i64.lt_s @@ -5611,7 +5625,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -5630,7 +5644,7 @@ end i64.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i64.const 50 i64.lt_s @@ -5679,7 +5693,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -5744,7 +5758,7 @@ (local $1 i32) call $~lib/set/Set#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 i64.const 100 i64.lt_u @@ -5771,7 +5785,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|0 + br $loop|0 else i32.const 0 i32.const 376 @@ -5797,7 +5811,7 @@ end i64.const 50 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 i64.const 100 i64.lt_u @@ -5825,7 +5839,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|1 + br $loop|1 else i32.const 0 i32.const 376 @@ -5851,7 +5865,7 @@ end i64.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 i64.const 50 i64.lt_u @@ -5886,7 +5900,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -5905,7 +5919,7 @@ end i64.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 i64.const 50 i64.lt_u @@ -5954,7 +5968,7 @@ i64.const 1 i64.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -6044,13 +6058,15 @@ if local.get $0 return + else + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $continue|0 + unreachable end end i32.const 0 @@ -6105,7 +6121,8 @@ loop $continue|0 local.get $2 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $2 i32.load offset=4 @@ -6341,7 +6358,7 @@ (local $1 i32) call $~lib/set/Set#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 f32.const 100 f32.lt @@ -6368,7 +6385,7 @@ f32.const 1 f32.add local.set $0 - br $repeat|0 + br $loop|0 else i32.const 0 i32.const 376 @@ -6394,7 +6411,7 @@ end f32.const 50 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 f32.const 100 f32.lt @@ -6422,7 +6439,7 @@ f32.const 1 f32.add local.set $0 - br $repeat|1 + br $loop|1 else i32.const 0 i32.const 376 @@ -6448,7 +6465,7 @@ end f32.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 f32.const 50 f32.lt @@ -6483,7 +6500,7 @@ f32.const 1 f32.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -6502,7 +6519,7 @@ end f32.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 f32.const 50 f32.lt @@ -6551,7 +6568,7 @@ f32.const 1 f32.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end @@ -6641,13 +6658,15 @@ if local.get $0 return + else + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 + unreachable end end i32.const 0 @@ -6702,7 +6721,8 @@ loop $continue|0 local.get $2 local.get $7 - i32.ne + i32.eq + i32.eqz if local.get $2 i32.load offset=8 @@ -6938,7 +6958,7 @@ (local $1 i32) call $~lib/set/Set#constructor local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 f64.const 100 f64.lt @@ -6965,7 +6985,7 @@ f64.const 1 f64.add local.set $0 - br $repeat|0 + br $loop|0 else i32.const 0 i32.const 376 @@ -6991,7 +7011,7 @@ end f64.const 50 local.set $0 - loop $repeat|1 + loop $loop|1 local.get $0 f64.const 100 f64.lt @@ -7019,7 +7039,7 @@ f64.const 1 f64.add local.set $0 - br $repeat|1 + br $loop|1 else i32.const 0 i32.const 376 @@ -7045,7 +7065,7 @@ end f64.const 0 local.set $0 - loop $repeat|2 + loop $loop|2 local.get $0 f64.const 50 f64.lt @@ -7080,7 +7100,7 @@ f64.const 1 f64.add local.set $0 - br $repeat|2 + br $loop|2 end unreachable end @@ -7099,7 +7119,7 @@ end f64.const 0 local.set $0 - loop $repeat|3 + loop $loop|3 local.get $0 f64.const 50 f64.lt @@ -7148,7 +7168,7 @@ f64.const 1 f64.add local.set $0 - br $repeat|3 + br $loop|3 end unreachable end diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 0752b238..81a775de 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -165,85 +165,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -299,20 +291,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -350,20 +340,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -374,14 +362,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -534,24 +520,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -565,27 +549,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -594,36 +576,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -661,12 +639,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -763,15 +739,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -831,75 +805,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -907,8 +874,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1038,18 +1004,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1082,18 +1046,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1105,29 +1067,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1145,7 +1084,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1266,34 +1224,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1681,36 +1635,37 @@ local.get $3 i32.const 32 i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 end + unreachable end end ) @@ -1806,32 +1761,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1844,50 +1796,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1952,22 +1905,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1999,338 +1948,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2338,15 +2027,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2354,15 +2043,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2370,10 +2059,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2389,306 +2078,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2696,148 +2548,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2845,76 +2665,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2922,40 +2726,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2963,22 +2759,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -3039,94 +2831,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -3144,54 +2931,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -3203,9 +2949,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3445,16 +3235,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -3463,16 +3251,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -3485,36 +3271,34 @@ i32.store offset=20 ) (func $~lib/set/Set#constructor (; 29 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 3 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/set/Set#clear local.get $0 ) @@ -3541,38 +3325,39 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load8_s + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_s - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -3625,9 +3410,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end + i32.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -3637,9 +3420,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end + i32.const 8 i32.mul i32.add local.set $7 @@ -3650,102 +3431,95 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load8_s + i32.store8 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load8_s - i32.store8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load8_s - local.set $11 - local.get $11 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=4 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 end + local.get $6 + i32.const 8 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $11 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $11 i32.store offset=8 local.get $0 local.get $4 @@ -3814,19 +3588,15 @@ end local.get $0 i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + i32.const 8 i32.mul i32.add local.set $4 @@ -3947,7 +3717,7 @@ block $break|0 i32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i32.const 100 i32.lt_s @@ -3985,8 +3755,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -4006,7 +3775,7 @@ block $break|1 i32.const 50 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i32.const 100 i32.lt_s @@ -4043,8 +3812,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -4064,7 +3832,7 @@ block $break|2 i32.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i32.const 50 i32.lt_s @@ -4103,8 +3871,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -4124,7 +3891,7 @@ block $break|3 i32.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i32.const 50 i32.lt_s @@ -4179,8 +3946,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -4220,16 +3986,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -4238,16 +4002,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -4260,36 +4022,34 @@ i32.store offset=20 ) (func $~lib/set/Set#constructor (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 4 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 4 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/set/Set#clear local.get $0 ) @@ -4309,36 +4069,37 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -4389,9 +4150,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end + i32.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -4401,9 +4160,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end + i32.const 8 i32.mul i32.add local.set $7 @@ -4414,102 +4171,95 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load8_u + i32.store8 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load8_u - i32.store8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load8_u - local.set $11 - local.get $11 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=4 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 end + local.get $6 + i32.const 8 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $11 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $11 i32.store offset=8 local.get $0 local.get $4 @@ -4576,19 +4326,15 @@ end local.get $0 i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + i32.const 8 i32.mul i32.add local.set $4 @@ -4707,7 +4453,7 @@ block $break|0 i32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i32.const 100 i32.lt_u @@ -4745,8 +4491,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -4766,7 +4511,7 @@ block $break|1 i32.const 50 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i32.const 100 i32.lt_u @@ -4803,8 +4548,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -4824,7 +4568,7 @@ block $break|2 i32.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i32.const 50 i32.lt_u @@ -4863,8 +4607,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -4884,7 +4627,7 @@ block $break|3 i32.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i32.const 50 i32.lt_u @@ -4939,8 +4682,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -4980,16 +4722,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -4998,16 +4738,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -5020,36 +4758,34 @@ i32.store offset=20 ) (func $~lib/set/Set#constructor (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 5 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 5 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/set/Set#clear local.get $0 ) @@ -5091,38 +4827,39 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load16_s + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_s - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -5175,9 +4912,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end + i32.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -5187,9 +4922,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end + i32.const 8 i32.mul i32.add local.set $7 @@ -5200,102 +4933,95 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load16_s + i32.store16 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load16_s - i32.store16 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load16_s - local.set $11 - local.get $11 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=4 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 end + local.get $6 + i32.const 8 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $11 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $11 i32.store offset=8 local.get $0 local.get $4 @@ -5364,19 +5090,15 @@ end local.get $0 i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + i32.const 8 i32.mul i32.add local.set $4 @@ -5497,7 +5219,7 @@ block $break|0 i32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i32.const 100 i32.lt_s @@ -5535,8 +5257,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -5556,7 +5277,7 @@ block $break|1 i32.const 50 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i32.const 100 i32.lt_s @@ -5593,8 +5314,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -5614,7 +5334,7 @@ block $break|2 i32.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i32.const 50 i32.lt_s @@ -5653,8 +5373,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -5674,7 +5393,7 @@ block $break|3 i32.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i32.const 50 i32.lt_s @@ -5729,8 +5448,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -5770,16 +5488,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -5788,16 +5504,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -5810,36 +5524,34 @@ i32.store offset=20 ) (func $~lib/set/Set#constructor (; 58 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 6 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 6 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/set/Set#clear local.get $0 ) @@ -5859,36 +5571,37 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -5939,9 +5652,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end + i32.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -5951,9 +5662,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end + i32.const 8 i32.mul i32.add local.set $7 @@ -5964,102 +5673,95 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load16_u + i32.store16 + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load16_u - i32.store16 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load16_u - local.set $11 - local.get $11 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=4 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 end + local.get $6 + i32.const 8 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $11 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $11 i32.store offset=8 local.get $0 local.get $4 @@ -6126,19 +5828,15 @@ end local.get $0 i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + i32.const 8 i32.mul i32.add local.set $4 @@ -6257,7 +5955,7 @@ block $break|0 i32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i32.const 100 i32.lt_u @@ -6295,8 +5993,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6316,7 +6013,7 @@ block $break|1 i32.const 50 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i32.const 100 i32.lt_u @@ -6353,8 +6050,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -6374,7 +6070,7 @@ block $break|2 i32.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i32.const 50 i32.lt_u @@ -6413,8 +6109,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -6434,7 +6129,7 @@ block $break|3 i32.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i32.const 50 i32.lt_u @@ -6489,8 +6184,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -6530,16 +6224,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -6548,16 +6240,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -6570,36 +6260,34 @@ i32.store offset=20 ) (func $~lib/set/Set#constructor (; 67 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 7 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 7 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/set/Set#clear local.get $0 ) @@ -6661,34 +6349,35 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -6737,9 +6426,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end + i32.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -6749,9 +6436,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end + i32.const 8 i32.mul i32.add local.set $7 @@ -6762,102 +6447,95 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load + i32.store + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load - i32.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=4 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 end + local.get $6 + i32.const 8 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $11 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $11 i32.store offset=8 local.get $0 local.get $4 @@ -6922,19 +6600,15 @@ end local.get $0 i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + i32.const 8 i32.mul i32.add local.set $4 @@ -7051,7 +6725,7 @@ block $break|0 i32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i32.const 100 i32.lt_s @@ -7089,8 +6763,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7110,7 +6783,7 @@ block $break|1 i32.const 50 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i32.const 100 i32.lt_s @@ -7147,8 +6820,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -7168,7 +6840,7 @@ block $break|2 i32.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i32.const 50 i32.lt_s @@ -7207,8 +6879,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -7228,7 +6899,7 @@ block $break|3 i32.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i32.const 50 i32.lt_s @@ -7283,8 +6954,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -7324,16 +6994,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -7342,16 +7010,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -7364,36 +7030,34 @@ i32.store offset=20 ) (func $~lib/set/Set#constructor (; 77 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 8 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 8 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/set/Set#clear local.get $0 ) @@ -7413,34 +7077,35 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -7489,9 +7154,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end + i32.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -7501,9 +7164,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end + i32.const 8 i32.mul i32.add local.set $7 @@ -7514,102 +7175,95 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load + i32.store + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i32.load - i32.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i32.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=4 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=4 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 end + local.get $6 + i32.const 8 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $11 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $11 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $11 i32.store offset=8 local.get $0 local.get $4 @@ -7674,19 +7328,15 @@ end local.get $0 i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + i32.const 8 i32.mul i32.add local.set $4 @@ -7803,7 +7453,7 @@ block $break|0 i32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i32.const 100 i32.lt_u @@ -7841,8 +7491,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7862,7 +7511,7 @@ block $break|1 i32.const 50 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i32.const 100 i32.lt_u @@ -7899,8 +7548,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -7920,7 +7568,7 @@ block $break|2 i32.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i32.const 50 i32.lt_u @@ -7959,8 +7607,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -7980,7 +7627,7 @@ block $break|3 i32.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i32.const 50 i32.lt_u @@ -8035,8 +7682,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -8076,16 +7722,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -8094,16 +7738,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -8116,36 +7758,34 @@ i32.store offset=20 ) (func $~lib/set/Set#constructor (; 86 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 9 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 9 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/set/Set#clear local.get $0 ) @@ -8253,34 +7893,35 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i64.load + local.get $1 + i64.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -8330,9 +7971,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -8342,9 +7981,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end + i32.const 16 i32.mul i32.add local.set $7 @@ -8355,102 +7992,95 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i64.load + i64.store + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i64.load - i64.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i64.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 + local.set $11 + local.get $11 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=8 + local.get $13 + local.get $8 + i32.store + local.get $8 + i32.const 16 + i32.add + local.set $8 end + local.get $6 + i32.const 16 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $12 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $12 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -8516,19 +8146,15 @@ end local.get $0 i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 16 i32.mul i32.add local.set $4 @@ -8646,7 +8272,7 @@ block $break|0 i64.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i64.const 100 i64.lt_s @@ -8684,8 +8310,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -8705,7 +8330,7 @@ block $break|1 i64.const 50 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i64.const 100 i64.lt_s @@ -8742,8 +8367,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -8763,7 +8387,7 @@ block $break|2 i64.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i64.const 50 i64.lt_s @@ -8802,8 +8426,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -8823,7 +8446,7 @@ block $break|3 i64.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i64.const 50 i64.lt_s @@ -8878,8 +8501,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -8919,16 +8541,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -8937,16 +8557,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -8959,36 +8577,34 @@ i32.store offset=20 ) (func $~lib/set/Set#constructor (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 10 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 10 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/set/Set#clear local.get $0 ) @@ -9008,34 +8624,35 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i64.load + local.get $1 + i64.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -9085,9 +8702,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -9097,9 +8712,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end + i32.const 16 i32.mul i32.add local.set $7 @@ -9110,102 +8723,95 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i64.load + i64.store + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 i64.load - i64.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - i64.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 + local.set $11 + local.get $11 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=8 + local.get $13 + local.get $8 + i32.store + local.get $8 + i32.const 16 + i32.add + local.set $8 end + local.get $6 + i32.const 16 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $12 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $12 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -9271,19 +8877,15 @@ end local.get $0 i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 16 i32.mul i32.add local.set $4 @@ -9401,7 +9003,7 @@ block $break|0 i64.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 i64.const 100 i64.lt_u @@ -9439,8 +9041,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -9460,7 +9061,7 @@ block $break|1 i64.const 50 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 i64.const 100 i64.lt_u @@ -9497,8 +9098,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -9518,7 +9118,7 @@ block $break|2 i64.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 i64.const 50 i64.lt_u @@ -9557,8 +9157,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -9578,7 +9177,7 @@ block $break|3 i64.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 i64.const 50 i64.lt_u @@ -9633,8 +9232,7 @@ i64.const 1 i64.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -9674,16 +9272,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -9692,16 +9288,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -9714,36 +9308,34 @@ i32.store offset=20 ) (func $~lib/set/Set#constructor (; 105 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 11 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 11 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/set/Set#clear local.get $0 ) @@ -9763,34 +9355,35 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + f32.load + local.get $1 + f32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f32.load - local.get $1 - f32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=4 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=4 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -9841,9 +9434,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 8 - end + i32.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -9853,9 +9444,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 8 - end + i32.const 8 i32.mul i32.add local.set $7 @@ -9866,103 +9455,96 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + f32.load + f32.store + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 f32.load - f32.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - f32.load - local.set $11 - local.get $11 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=4 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 8 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 8 + local.set $11 + local.get $11 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=4 + local.get $13 + local.get $8 + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 end + local.get $6 + i32.const 8 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $12 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $12 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -10029,19 +9611,15 @@ end local.get $0 i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 8 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 8 i32.mul i32.add local.set $4 @@ -10160,7 +9738,7 @@ block $break|0 f32.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 f32.const 100 f32.lt @@ -10198,8 +9776,7 @@ f32.const 1 f32.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -10219,7 +9796,7 @@ block $break|1 f32.const 50 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 f32.const 100 f32.lt @@ -10256,8 +9833,7 @@ f32.const 1 f32.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -10277,7 +9853,7 @@ block $break|2 f32.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 f32.const 50 f32.lt @@ -10316,8 +9892,7 @@ f32.const 1 f32.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -10337,7 +9912,7 @@ block $break|3 f32.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 f32.const 50 f32.lt @@ -10392,8 +9967,7 @@ f32.const 1 f32.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -10433,16 +10007,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/pure/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -10451,16 +10023,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - end + i32.const 0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/pure/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -10473,36 +10043,34 @@ i32.store offset=20 ) (func $~lib/set/Set#constructor (; 114 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 12 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 12 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/set/Set#clear local.get $0 ) @@ -10522,34 +10090,35 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + f64.load + local.get $1 + f64.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f64.load - local.get $1 - f64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -10600,9 +10169,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/set/ENTRY_SIZE|inlined.1 (result i32) - i32.const 16 - end + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -10612,9 +10179,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/set/ENTRY_SIZE|inlined.2 (result i32) - i32.const 16 - end + i32.const 16 i32.mul i32.add local.set $7 @@ -10625,103 +10190,96 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + f64.load + f64.store + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $9 f64.load - f64.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 - f64.load - local.set $11 - local.get $11 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $12 - local.get $3 - local.get $12 - i32.const 4 - i32.mul - i32.add - local.set $13 - local.get $10 - local.get $13 - i32.load - i32.store offset=8 - local.get $13 - local.get $8 - i32.store - local.get $8 - block $~lib/set/ENTRY_SIZE|inlined.3 (result i32) - i32.const 16 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/set/ENTRY_SIZE|inlined.4 (result i32) - i32.const 16 + local.set $11 + local.get $11 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end + local.get $1 + i32.and + local.set $12 + local.get $3 + local.get $12 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $13 + local.get $10 + local.get $13 + i32.load + i32.store offset=8 + local.get $13 + local.get $8 + i32.store + local.get $8 + i32.const 16 + i32.add + local.set $8 end + local.get $6 + i32.const 16 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/pure/__retain - drop - local.get $9 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/pure/__retain + drop + local.get $9 + call $~lib/rt/pure/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $12 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - drop - local.get $10 - call $~lib/rt/pure/__release - end + local.get $5 + local.tee $12 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $12 + call $~lib/rt/pure/__retain + drop + local.get $10 + call $~lib/rt/pure/__release end + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -10788,19 +10346,15 @@ end local.get $0 i32.load offset=8 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - end - block $~lib/set/ENTRY_SIZE|inlined.5 (result i32) - i32.const 16 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $5 + i32.const 16 i32.mul i32.add local.set $4 @@ -10919,7 +10473,7 @@ block $break|0 f64.const 0 local.set $1 - loop $repeat|0 + loop $loop|0 local.get $1 f64.const 100 f64.lt @@ -10957,8 +10511,7 @@ f64.const 1 f64.add local.set $1 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -10978,7 +10531,7 @@ block $break|1 f64.const 50 local.set $1 - loop $repeat|1 + loop $loop|1 local.get $1 f64.const 100 f64.lt @@ -11015,8 +10568,7 @@ f64.const 1 f64.add local.set $1 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -11036,7 +10588,7 @@ block $break|2 f64.const 0 local.set $1 - loop $repeat|2 + loop $loop|2 local.get $1 f64.const 50 f64.lt @@ -11075,8 +10627,7 @@ f64.const 1 f64.add local.set $1 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -11096,7 +10647,7 @@ block $break|3 f64.const 0 local.set $1 - loop $repeat|3 + loop $loop|3 local.get $1 f64.const 50 f64.lt @@ -11151,8 +10702,7 @@ f64.const 1 f64.add local.set $1 - br $repeat|3 - unreachable + br $loop|3 end unreachable end @@ -11365,103 +10915,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -11607,240 +11137,88 @@ ) (func $~lib/rt/__visit_members (; 139 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$14 - block $switch$1$case$13 - block $switch$1$case$12 - block $switch$1$case$11 - block $switch$1$case$10 - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block + block $switch$1$default + block $switch$1$case$14 + block $switch$1$case$13 + block $switch$1$case$12 + block $switch$1$case$11 + block $switch$1$case$10 + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl - return - unreachable + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$case$10 $switch$1$case$11 $switch$1$case$12 $switch$1$case$13 $switch$1$case$14 $switch$1$default end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl return - unreachable end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block local.get $0 - local.get $1 - call $~lib/set/Set#__visit_impl + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end return - unreachable end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return - unreachable end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return - unreachable end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return - unreachable end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return - unreachable end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return - unreachable end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block local.get $0 local.get $1 - call $~lib/set/Set#__visit_impl + call $~lib/set/Set#__visit_impl return - unreachable end - unreachable - unreachable + local.get $0 + local.get $1 + call $~lib/set/Set#__visit_impl + return end - unreachable - unreachable + local.get $0 + local.get $1 + call $~lib/set/Set#__visit_impl + return end - unreachable + local.get $0 + local.get $1 + call $~lib/set/Set#__visit_impl + return end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable + local.get $0 + local.get $1 + call $~lib/set/Set#__visit_impl + return end + unreachable ) (func $null (; 140 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 0fc9400f..d6ee5eb7 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -178,7 +178,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -260,7 +261,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 @@ -397,14 +399,12 @@ i32.and local.tee $1 i32.sub - local.set $2 local.get $0 local.get $1 i32.add local.tee $0 i32.const 0 i32.store - local.get $2 i32.const -4 i32.and local.tee $1 diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index afc869cb..4544b9dd 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -174,32 +174,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -212,50 +209,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -320,22 +318,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -367,338 +361,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -706,15 +440,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -722,15 +456,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -738,10 +472,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -757,306 +491,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1064,148 +961,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1213,76 +1078,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1290,40 +1139,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1331,22 +1172,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1407,94 +1244,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -1512,54 +1344,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -1571,9 +1362,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -1841,36 +1676,37 @@ local.get $3 i32.const 32 i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 end + unreachable end end ) diff --git a/tests/compiler/std/string-utf8.optimized.wat b/tests/compiler/std/string-utf8.optimized.wat index 0499aa5e..852ee187 100644 --- a/tests/compiler/std/string-utf8.optimized.wat +++ b/tests/compiler/std/string-utf8.optimized.wat @@ -43,7 +43,8 @@ loop $continue|0 local.get $2 local.get $3 - i32.lt_u + i32.ge_u + i32.eqz if local.get $2 i32.const 1 @@ -451,7 +452,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -533,7 +535,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 diff --git a/tests/compiler/std/string-utf8.untouched.wat b/tests/compiler/std/string-utf8.untouched.wat index 1fa46698..97e5333c 100644 --- a/tests/compiler/std/string-utf8.untouched.wat +++ b/tests/compiler/std/string-utf8.untouched.wat @@ -52,20 +52,34 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $4 + local.get $4 + i32.const 128 + i32.lt_u if - local.get $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 local.get $2 i32.const 1 - i32.shl i32.add - i32.load16_u - local.set $4 + local.set $2 + else local.get $4 - i32.const 128 + i32.const 2048 i32.lt_u if local.get $1 - i32.const 1 + i32.const 2 i32.add local.set $1 local.get $2 @@ -74,72 +88,59 @@ local.set $2 else local.get $4 - i32.const 2048 - i32.lt_u + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $2 + i32.const 1 + i32.add + local.get $3 + i32.lt_u + else + i32.const 0 + end + if (result i32) + local.get $0 + local.get $2 + i32.const 1 + i32.add + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + else + i32.const 0 + end if local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $2 i32.const 2 i32.add + local.set $2 + else + local.get $1 + i32.const 3 + i32.add local.set $1 local.get $2 i32.const 1 i32.add local.set $2 - else - local.get $4 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - if (result i32) - local.get $2 - i32.const 1 - i32.add - local.get $3 - i32.lt_u - else - i32.const 0 - end - if (result i32) - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - else - i32.const 0 - end - if - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $2 - i32.const 2 - i32.add - local.set $2 - else - local.get $1 - i32.const 3 - i32.add - local.set $1 - local.get $2 - i32.const 1 - i32.add - local.set $2 - end end end - br $continue|0 end + br $continue|0 end + unreachable end local.get $1 ) @@ -260,25 +261,57 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $5 + local.get $5 + i32.const 128 + i32.lt_u if - local.get $0 + local.get $1 + local.get $4 + i32.add + local.get $5 + i32.store8 + local.get $4 + i32.const 1 + i32.add + local.set $4 local.get $2 i32.const 1 - i32.shl i32.add - i32.load16_u - local.set $5 + local.set $2 + else local.get $5 - i32.const 128 + i32.const 2048 i32.lt_u if local.get $1 local.get $4 i32.add + local.set $6 + local.get $6 local.get $5 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or i32.store8 + local.get $6 + local.get $5 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 local.get $4 - i32.const 1 + i32.const 2 i32.add local.set $4 local.get $2 @@ -286,162 +319,131 @@ i32.add local.set $2 else + local.get $1 + local.get $4 + i32.add + local.set $6 local.get $5 - i32.const 2048 - i32.lt_u - if - local.get $1 - local.get $4 - i32.add - local.set $6 - local.get $6 - local.get $5 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or - i32.store8 - local.get $6 - local.get $5 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=1 - local.get $4 - i32.const 2 - i32.add - local.set $4 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) local.get $2 i32.const 1 i32.add - local.set $2 + local.get $3 + i32.lt_u else - local.get $1 - local.get $4 + i32.const 0 + end + if + local.get $0 + local.get $2 + i32.const 1 i32.add - local.set $6 - local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $7 + local.get $7 i32.const 64512 i32.and - i32.const 55296 + i32.const 56320 i32.eq - if (result i32) - local.get $2 - i32.const 1 - i32.add - local.get $3 - i32.lt_u - else - i32.const 0 - end if - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.const 1 + i32.const 65536 + local.get $5 + i32.const 1023 + i32.and + i32.const 10 i32.shl i32.add - i32.load16_u - local.set $7 local.get $7 - i32.const 64512 + i32.const 1023 i32.and - i32.const 56320 - i32.eq - if - i32.const 65536 - local.get $5 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.add - local.get $7 - i32.const 1023 - i32.and - i32.add - local.set $5 - local.get $6 - local.get $5 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.store8 - local.get $6 - local.get $5 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=1 - local.get $6 - local.get $5 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $6 - local.get $5 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=3 - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $continue|0 - end + i32.add + local.set $5 + local.get $6 + local.get $5 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.store8 + local.get $6 + local.get $5 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $6 + local.get $5 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $6 + local.get $5 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=3 + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $continue|0 end - local.get $6 - local.get $5 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - i32.store8 - local.get $6 - local.get $5 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=1 - local.get $6 - local.get $5 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $4 - i32.const 3 - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.add - local.set $2 end + local.get $6 + local.get $5 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + i32.store8 + local.get $6 + local.get $5 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $6 + local.get $5 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $4 + i32.const 3 + i32.add + local.set $4 + local.get $2 + i32.const 1 + i32.add + local.set $2 end - br $continue|0 end + br $continue|0 end + unreachable end local.get $1 local.get $4 @@ -467,32 +469,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -505,50 +504,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -613,22 +613,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -660,338 +656,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -999,15 +735,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -1015,15 +751,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -1031,10 +767,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -1050,306 +786,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1357,148 +1256,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1506,76 +1373,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1583,40 +1434,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1624,22 +1467,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1700,94 +1539,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -1805,54 +1639,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -1864,9 +1657,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -1904,27 +1741,77 @@ local.get $2 local.get $1 i32.lt_u + i32.eqz + br_if $break|0 + local.get $0 + local.get $2 + local.tee $5 + i32.const 1 + i32.add + local.set $2 + local.get $5 + i32.add + i32.load8_u + local.set $5 + local.get $5 + i32.const 128 + i32.lt_u if - local.get $0 - block (result i32) + local.get $3 + local.get $4 + i32.add + local.get $5 + i32.store16 + local.get $4 + i32.const 2 + i32.add + local.set $4 + else + local.get $5 + i32.const 191 + i32.gt_u + if (result i32) + local.get $5 + i32.const 224 + i32.lt_u + else + i32.const 0 + end + if local.get $2 - local.tee $5 i32.const 1 i32.add - local.set $2 - local.get $5 - end - i32.add - i32.load8_u - local.set $5 - local.get $5 - i32.const 128 - i32.lt_u - if + local.get $1 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 450 + i32.const 8 + call $~lib/builtins/abort + unreachable + end local.get $3 local.get $4 i32.add local.get $5 + i32.const 31 + i32.and + i32.const 6 + i32.shl + local.get $0 + local.get $2 + local.tee $6 + i32.const 1 + i32.add + local.set $2 + local.get $6 + i32.add + i32.load8_u + i32.const 63 + i32.and + i32.or i32.store16 local.get $4 i32.const 2 @@ -1932,18 +1819,18 @@ local.set $4 else local.get $5 - i32.const 191 + i32.const 239 i32.gt_u if (result i32) local.get $5 - i32.const 224 + i32.const 365 i32.lt_u else i32.const 0 end if local.get $2 - i32.const 1 + i32.const 3 i32.add local.get $1 i32.le_u @@ -1951,7 +1838,96 @@ if i32.const 0 i32.const 128 - i32.const 450 + i32.const 454 + i32.const 8 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $0 + local.get $2 + local.tee $6 + i32.const 1 + i32.add + local.set $2 + local.get $6 + i32.add + i32.load8_u + i32.const 63 + i32.and + i32.const 12 + i32.shl + i32.or + local.get $0 + local.get $2 + local.tee $6 + i32.const 1 + i32.add + local.set $2 + local.get $6 + i32.add + i32.load8_u + i32.const 63 + i32.and + i32.const 6 + i32.shl + i32.or + local.get $0 + local.get $2 + local.tee $6 + i32.const 1 + i32.add + local.set $2 + local.get $6 + i32.add + i32.load8_u + i32.const 63 + i32.and + i32.or + i32.const 65536 + i32.sub + local.set $5 + local.get $3 + local.get $4 + i32.add + i32.const 55296 + local.get $5 + i32.const 10 + i32.shr_u + i32.add + i32.store16 + local.get $4 + i32.const 2 + i32.add + local.set $4 + local.get $3 + local.get $4 + i32.add + i32.const 56320 + local.get $5 + i32.const 1023 + i32.and + i32.add + i32.store16 + local.get $4 + i32.const 2 + i32.add + local.set $4 + else + local.get $2 + i32.const 2 + i32.add + local.get $1 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 466 i32.const 8 call $~lib/builtins/abort unreachable @@ -1960,19 +1936,31 @@ local.get $4 i32.add local.get $5 - i32.const 31 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $0 + local.get $2 + local.tee $6 + i32.const 1 + i32.add + local.set $2 + local.get $6 + i32.add + i32.load8_u + i32.const 63 i32.and i32.const 6 i32.shl + i32.or local.get $0 - block (result i32) - local.get $2 - local.tee $6 - i32.const 1 - i32.add - local.set $2 - local.get $6 - end + local.get $2 + local.tee $6 + i32.const 1 + i32.add + local.set $2 + local.get $6 i32.add i32.load8_u i32.const 63 @@ -1983,176 +1971,12 @@ i32.const 2 i32.add local.set $4 - else - local.get $5 - i32.const 239 - i32.gt_u - if (result i32) - local.get $5 - i32.const 365 - i32.lt_u - else - i32.const 0 - end - if - local.get $2 - i32.const 3 - i32.add - local.get $1 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 454 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 7 - i32.and - i32.const 18 - i32.shl - local.get $0 - block (result i32) - local.get $2 - local.tee $6 - i32.const 1 - i32.add - local.set $2 - local.get $6 - end - i32.add - i32.load8_u - i32.const 63 - i32.and - i32.const 12 - i32.shl - i32.or - local.get $0 - block (result i32) - local.get $2 - local.tee $6 - i32.const 1 - i32.add - local.set $2 - local.get $6 - end - i32.add - i32.load8_u - i32.const 63 - i32.and - i32.const 6 - i32.shl - i32.or - local.get $0 - block (result i32) - local.get $2 - local.tee $6 - i32.const 1 - i32.add - local.set $2 - local.get $6 - end - i32.add - i32.load8_u - i32.const 63 - i32.and - i32.or - i32.const 65536 - i32.sub - local.set $5 - local.get $3 - local.get $4 - i32.add - i32.const 55296 - local.get $5 - i32.const 10 - i32.shr_u - i32.add - i32.store16 - local.get $4 - i32.const 2 - i32.add - local.set $4 - local.get $3 - local.get $4 - i32.add - i32.const 56320 - local.get $5 - i32.const 1023 - i32.and - i32.add - i32.store16 - local.get $4 - i32.const 2 - i32.add - local.set $4 - else - local.get $2 - i32.const 2 - i32.add - local.get $1 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 466 - i32.const 8 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $4 - i32.add - local.get $5 - i32.const 15 - i32.and - i32.const 12 - i32.shl - local.get $0 - block (result i32) - local.get $2 - local.tee $6 - i32.const 1 - i32.add - local.set $2 - local.get $6 - end - i32.add - i32.load8_u - i32.const 63 - i32.and - i32.const 6 - i32.shl - i32.or - local.get $0 - block (result i32) - local.get $2 - local.tee $6 - i32.const 1 - i32.add - local.set $2 - local.get $6 - end - i32.add - i32.load8_u - i32.const 63 - i32.and - i32.or - i32.store16 - local.get $4 - i32.const 2 - i32.add - local.set $4 - end end end - br $continue|0 end + br $continue|0 end + unreachable end local.get $2 local.get $1 @@ -2221,22 +2045,23 @@ else i32.const 0 end - if - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $continue|0 end + unreachable end local.get $5 local.set $8 diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 37c164b0..958507bf 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -897,7 +897,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -912,7 +912,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -933,14 +933,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 6720 @@ -1352,7 +1352,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1434,7 +1435,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 @@ -1686,10 +1688,8 @@ else i32.const 1 end - local.set $1 local.get $0 call $~lib/rt/pure/__release - local.get $1 ) (func $~lib/string/String.fromCharCode (; 27 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -1831,12 +1831,10 @@ local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 return end local.get $0 @@ -1945,10 +1943,8 @@ local.get $3 call $~lib/util/string/compareImpl i32.eqz - local.set $0 i32.const 528 call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/string/String#endsWith (; 33 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -1993,10 +1989,8 @@ local.get $1 call $~lib/util/string/compareImpl i32.eqz - local.set $0 i32.const 576 call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/string/String#indexOf (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -2041,7 +2035,7 @@ local.get $4 i32.sub local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $2 local.get $3 @@ -2057,7 +2051,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 else local.get $1 call $~lib/rt/pure/__release @@ -2080,7 +2074,8 @@ loop $continue|0 local.get $4 local.get $3 - i32.lt_u + i32.ge_u + i32.eqz if local.get $0 local.get $4 @@ -2140,10 +2135,8 @@ if local.get $0 call $~lib/rt/pure/__retain - local.set $0 local.get $2 call $~lib/rt/pure/__release - local.get $0 return end local.get $3 @@ -2193,10 +2186,8 @@ call $~lib/memory/memory.copy local.get $1 call $~lib/rt/pure/__retain - local.set $0 local.get $2 call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/string/String#padEnd (; 37 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -2241,10 +2232,8 @@ if local.get $0 call $~lib/rt/pure/__retain - local.set $0 local.get $2 call $~lib/rt/pure/__release - local.get $0 return end local.get $5 @@ -2296,10 +2285,8 @@ end local.get $1 call $~lib/rt/pure/__retain - local.set $0 local.get $2 call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/string/String#lastIndexOf (; 38 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -2314,10 +2301,8 @@ if local.get $0 call $~lib/string/String#get:length - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 return end local.get $0 @@ -2346,7 +2331,7 @@ i32.lt_s select local.set $2 - loop $repeat|0 + loop $loop|0 local.get $2 i32.const 0 i32.ge_s @@ -2361,7 +2346,7 @@ i32.const 1 i32.sub local.set $2 - br $repeat|0 + br $loop|0 else local.get $1 call $~lib/rt/pure/__release @@ -2504,7 +2489,6 @@ end f64.const 1 end - local.set $6 local.get $3 i32.const 2 i32.gt_s @@ -2596,75 +2580,74 @@ i32.sub local.set $3 local.get $1 - if - local.get $2 - i32.load16_u - local.tee $1 + i32.eqz + br_if $break|2 + local.get $2 + i32.load16_u + local.tee $1 + i32.const 48 + i32.ge_s + if (result i32) + local.get $1 + i32.const 57 + i32.le_s + else + i32.const 0 + end + if (result i32) + local.get $1 i32.const 48 + i32.sub + else + local.get $1 + i32.const 90 + i32.le_s + i32.const 0 + local.get $1 + i32.const 65 i32.ge_s + select if (result i32) local.get $1 - i32.const 57 - i32.le_s - else - i32.const 0 - end - if (result i32) - local.get $1 - i32.const 48 + i32.const 55 i32.sub else local.get $1 - i32.const 90 + i32.const 122 i32.le_s i32.const 0 local.get $1 - i32.const 65 + i32.const 97 i32.ge_s select - if (result i32) - local.get $1 - i32.const 55 - i32.sub - else - local.get $1 - i32.const 122 - i32.le_s - i32.const 0 - local.get $1 - i32.const 97 - i32.ge_s - select - i32.eqz - br_if $break|2 - local.get $1 - i32.const 87 - i32.sub - end + i32.eqz + br_if $break|2 + local.get $1 + i32.const 87 + i32.sub end - local.tee $1 - local.get $4 - i32.ge_s - br_if $break|2 - local.get $5 - local.get $4 - f64.convert_i32_s - f64.mul - local.get $1 - f64.convert_i32_s - f64.add - local.set $5 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $continue|2 end + local.tee $1 + local.get $4 + i32.ge_s + br_if $break|2 + local.get $5 + local.get $4 + f64.convert_i32_s + f64.mul + local.get $1 + f64.convert_i32_s + f64.add + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $continue|2 end end local.get $0 call $~lib/rt/pure/__release - local.get $6 local.get $5 f64.mul return @@ -2680,10 +2663,8 @@ drop local.get $0 call $~lib/util/string/strtol - local.set $1 local.get $0 call $~lib/rt/pure/__release - local.get $1 ) (func $~lib/util/string/strtod (; 42 ;) (type $FUNCSIG$di) (param $0 i32) (result f64) (local $1 i32) @@ -2765,7 +2746,6 @@ end f64.const 1 end - local.set $6 loop $continue|1 block $break|1 local.get $3 @@ -2774,101 +2754,100 @@ i32.sub local.set $3 local.get $1 + i32.eqz + br_if $break|1 + local.get $2 + i32.load16_u + local.tee $1 + i32.const 46 + i32.eq if - local.get $2 - i32.load16_u - local.tee $1 - i32.const 46 - i32.eq - if - local.get $2 - i32.const 2 - i32.add - local.set $2 - f64.const 0.1 - local.set $5 - loop $continue|2 - block $break|2 - local.get $3 - local.tee $1 - i32.const 1 - i32.sub - local.set $3 - local.get $1 - if - local.get $2 - i32.load16_u - local.tee $1 - i32.const 69 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 101 - i32.eq - end - if - i32.const 0 - i32.const 1320 - i32.const 180 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 48 - i32.sub - local.tee $1 - i32.const 9 - i32.gt_u - br_if $break|2 - local.get $4 - local.get $1 - f64.convert_i32_s - local.get $5 - f64.mul - f64.add - local.set $4 - local.get $5 - f64.const 0.1 - f64.mul - local.set $5 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $continue|2 - end - end - end - br $break|1 - end - local.get $1 - i32.const 48 - i32.sub - local.tee $1 - i32.const 10 - i32.ge_u - br_if $break|1 - local.get $4 - f64.const 10 - f64.mul - local.get $1 - f64.convert_i32_s - f64.add - local.set $4 local.get $2 i32.const 2 i32.add local.set $2 - br $continue|1 + f64.const 0.1 + local.set $5 + loop $continue|2 + block $break|2 + local.get $3 + local.tee $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + i32.eqz + br_if $break|2 + local.get $2 + i32.load16_u + local.tee $1 + i32.const 69 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 101 + i32.eq + end + if + i32.const 0 + i32.const 1320 + i32.const 180 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 48 + i32.sub + local.tee $1 + i32.const 9 + i32.gt_u + br_if $break|2 + local.get $4 + local.get $1 + f64.convert_i32_s + local.get $5 + f64.mul + f64.add + local.set $4 + local.get $5 + f64.const 0.1 + f64.mul + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $continue|2 + end + end + br $break|1 end + local.get $1 + i32.const 48 + i32.sub + local.tee $1 + i32.const 10 + i32.ge_u + br_if $break|1 + local.get $4 + f64.const 10 + f64.mul + local.get $1 + f64.convert_i32_s + f64.add + local.set $4 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $continue|1 end end local.get $0 call $~lib/rt/pure/__release - local.get $6 local.get $4 f64.mul return @@ -2884,10 +2863,8 @@ drop local.get $0 call $~lib/util/string/strtod - local.set $1 local.get $0 call $~lib/rt/pure/__release - local.get $1 ) (func $~lib/string/String#concat (; 44 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2928,10 +2905,8 @@ if i32.const 120 call $~lib/rt/pure/__retain - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 return end local.get $2 @@ -2966,12 +2941,10 @@ select local.get $1 call $~lib/string/String#concat - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 ) (func $~lib/string/String.__ne (; 46 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2985,12 +2958,10 @@ local.get $1 call $~lib/string/String.__eq i32.eqz - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 ) (func $~lib/string/String.__gt (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3049,12 +3020,10 @@ call $~lib/util/string/compareImpl i32.const 0 i32.gt_s - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 return end local.get $0 @@ -3119,12 +3088,10 @@ call $~lib/util/string/compareImpl i32.const 0 i32.lt_s - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 return end local.get $0 @@ -3145,12 +3112,10 @@ local.get $1 call $~lib/string/String.__lt i32.eqz - local.set $2 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $2 ) (func $~lib/string/String.__lte (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -3164,12 +3129,10 @@ local.get $0 call $~lib/string/String.__gt i32.eqz - local.set $1 i32.const 120 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $1 ) (func $~lib/string/String#repeat (; 51 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3566,14 +3529,12 @@ i32.and local.tee $1 i32.sub - local.set $2 local.get $0 local.get $1 i32.add local.tee $0 i32.const 0 i32.store - local.get $2 i32.const -4 i32.and local.tee $1 @@ -3864,7 +3825,7 @@ local.tee $5 i32.load offset=4 local.set $6 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $3 i32.lt_s @@ -3894,7 +3855,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end end local.get $5 @@ -3951,12 +3912,14 @@ i32.eq if br $folding-inner2 + else + local.get $5 + local.get $6 + i32.add + local.set $4 + br $continue|1 end - local.get $5 - local.get $6 - i32.add - local.set $4 - br $continue|1 + unreachable end end local.get $4 @@ -4002,10 +3965,8 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain end - local.set $0 local.get $1 call $~lib/rt/pure/__release - local.get $0 return end local.get $1 @@ -4101,8 +4062,12 @@ loop $continue|0 local.get $1 i32.const 10 - i32.div_u + i32.rem_u local.set $3 + local.get $1 + i32.const 10 + i32.div_u + local.set $1 local.get $2 i32.const 1 i32.sub @@ -4111,14 +4076,11 @@ i32.shl local.get $0 i32.add - local.get $1 - i32.const 10 - i32.rem_u + local.get $3 i32.const 48 i32.add i32.store16 - local.get $3 - local.tee $1 + local.get $1 br_if $continue|0 end ) @@ -4238,12 +4200,17 @@ select ) (func $~lib/util/number/utoa_simple (; 66 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i64) + (local $3 i32) loop $continue|0 local.get $1 i64.const 10 - i64.div_u + i64.rem_u + i32.wrap_i64 local.set $3 + local.get $1 + i64.const 10 + i64.div_u + local.set $1 local.get $2 i32.const 1 i32.sub @@ -4252,15 +4219,11 @@ i32.shl local.get $0 i32.add - local.get $1 - i64.const 10 - i64.rem_u - i32.wrap_i64 + local.get $3 i32.const 48 i32.add i32.store16 - local.get $3 - local.tee $1 + local.get $1 i64.const 0 i64.ne br_if $continue|0 @@ -4322,21 +4285,19 @@ call $~lib/rt/pure/__retain return end - block (result i32) - local.get $0 + local.get $0 + i64.const 0 + i64.lt_s + local.tee $1 + if i64.const 0 - i64.lt_s - local.tee $1 - if - i64.const 0 - local.get $0 - i64.sub - local.set $0 - end local.get $0 - i64.const 4294967295 - i64.le_u + i64.sub + local.set $0 end + local.get $0 + i64.const 4294967295 + i64.le_u if local.get $0 i32.wrap_i64 @@ -4580,80 +4541,78 @@ i64.add local.tee $1 local.get $5 - i64.le_u - if - global.get $~lib/util/number/_K - local.get $4 - i32.add - global.set $~lib/util/number/_K - local.get $4 - i32.const 2 - i32.shl - local.get $13 - i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl - local.set $3 - local.get $6 + i64.gt_u + br_if $continue|0 + global.get $~lib/util/number/_K + local.get $4 + i32.add + global.set $~lib/util/number/_K + local.get $4 + i32.const 2 + i32.shl + local.get $13 + i32.add + i64.load32_u + local.get $10 + i64.extend_i32_s + i64.shl + local.set $3 + local.get $6 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + local.get $0 + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $continue|2 i32.const 1 - i32.sub - i32.const 1 - i32.shl - local.get $0 - i32.add - local.tee $2 - i32.load16_u - local.set $4 - loop $continue|2 + local.get $9 + local.get $1 + i64.sub + local.get $1 + local.get $3 + i64.add + local.get $9 + i64.sub + i64.gt_u + local.get $1 + local.get $3 + i64.add + local.get $9 + i64.lt_u + select + i32.const 0 + local.get $5 + local.get $1 + i64.sub + local.get $3 + i64.ge_u + i32.const 0 + local.get $1 + local.get $9 + i64.lt_u + select + select + if + local.get $4 i32.const 1 - local.get $9 - local.get $1 - i64.sub + i32.sub + local.set $4 local.get $1 local.get $3 i64.add - local.get $9 - i64.sub - i64.gt_u - local.get $1 - local.get $3 - i64.add - local.get $9 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $3 - i64.ge_u - i32.const 0 - local.get $1 - local.get $9 - i64.lt_u - select - select - if - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $1 - local.get $3 - i64.add - local.set $1 - br $continue|2 - end + local.set $1 + br $continue|2 end - local.get $2 - local.get $4 - i32.store16 - local.get $6 - return end - br $continue|0 + local.get $2 + local.get $4 + i32.store16 + local.get $6 + return end end loop $continue|3 (result i32) @@ -4809,7 +4768,7 @@ i32.const 0 end if (result i32) - loop $repeat|0 + loop $loop|0 block $break|0 local.get $1 local.get $3 @@ -4826,7 +4785,7 @@ i32.const 1 i32.add local.set $1 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -4898,7 +4857,7 @@ i32.store i32.const 2 local.set $2 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $2 local.get $3 @@ -4915,7 +4874,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|1 + br $loop|1 end end local.get $1 @@ -4933,23 +4892,21 @@ i32.const 4 i32.add local.tee $0 - block (result i32) - local.get $3 - i32.const 1 - i32.sub - local.tee $2 + local.get $3 + i32.const 1 + i32.sub + local.tee $2 + i32.const 0 + i32.lt_s + local.tee $1 + if i32.const 0 - i32.lt_s - local.tee $1 - if - i32.const 0 - local.get $2 - i32.sub - local.set $2 - end local.get $2 + i32.sub + local.set $2 end local.get $2 + local.get $2 call $~lib/util/number/decimalCount32 i32.const 1 i32.add @@ -4991,23 +4948,21 @@ i32.const 4 i32.add local.tee $2 - block (result i32) - local.get $3 - i32.const 1 - i32.sub - local.tee $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $3 + if i32.const 0 - i32.lt_s - local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end local.get $0 + i32.sub + local.set $0 end local.get $0 + local.get $0 call $~lib/util/number/decimalCount32 i32.const 1 i32.add @@ -5455,10 +5410,8 @@ local.get $1 local.get $2 call $~lib/string/String#substring - local.set $2 local.get $1 call $~lib/rt/tlsf/__free - local.get $2 ) (func $start:std/string (; 74 ;) (type $FUNCSIG$v) (local $0 i32) @@ -5783,20 +5736,16 @@ unreachable end global.get $std/string/str - local.set $0 i32.const 608 call $~lib/rt/pure/__retain drop - local.get $0 i32.const 608 i32.const 0 call $~lib/string/String#indexOf i32.const -1 i32.ne - local.set $0 i32.const 608 call $~lib/rt/pure/__release - local.get $0 i32.eqz if i32.const 0 @@ -7335,10 +7284,8 @@ i32.const 2464 i32.const 920 call $~lib/string/String#split - local.set $1 local.get $0 call $~lib/rt/pure/__release - local.get $1 local.tee $0 i32.load offset=12 i32.const 3 diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index c32a4a18..c6ef81de 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -422,85 +422,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -556,20 +548,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -607,20 +597,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -631,14 +619,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -791,24 +777,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -822,27 +806,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -851,36 +833,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/freeBlock (; 11 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) @@ -972,12 +950,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -1074,15 +1050,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -1142,75 +1116,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -1218,8 +1185,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1349,18 +1315,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1393,18 +1357,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1416,29 +1378,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1456,7 +1395,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1577,34 +1535,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1715,32 +1669,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1753,50 +1704,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1861,22 +1813,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1908,338 +1856,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2247,15 +1935,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2263,15 +1951,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2279,10 +1967,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2298,306 +1986,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2605,148 +2456,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2754,76 +2573,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2831,40 +2634,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2872,22 +2667,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2948,94 +2739,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -3053,54 +2839,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -3112,9 +2857,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3454,22 +3243,23 @@ else i32.const 0 end - if - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $continue|0 end + unreachable end local.get $5 local.set $8 @@ -3640,21 +3430,19 @@ i32.const 0 i32.eq if - block (result i32) - i32.const 552 - local.tee $3 - local.get $1 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - drop - local.get $4 - call $~lib/rt/pure/__release - end + i32.const 552 + local.tee $3 + local.get $1 + local.tee $4 + i32.ne + if local.get $3 + call $~lib/rt/pure/__retain + drop + local.get $4 + call $~lib/rt/pure/__release end + local.get $3 local.set $1 end local.get $0 @@ -3838,7 +3626,7 @@ local.get $3 i32.sub local.set $5 - loop $repeat|0 + loop $loop|0 local.get $7 local.get $5 i32.le_s @@ -3863,8 +3651,7 @@ i32.const 1 i32.add local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -3904,20 +3691,21 @@ local.get $4 local.get $5 i32.lt_u - if - local.get $0 - local.get $4 - i32.add - local.get $1 - local.get $2 - call $~lib/memory/memory.copy - local.get $4 - local.get $2 - i32.add - local.set $4 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.get $4 + i32.add + local.get $1 + local.get $2 + call $~lib/memory/memory.copy + local.get $4 + local.get $2 + i32.add + local.set $4 + br $continue|0 end + unreachable end ) (func $~lib/string/String#padStart (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -4203,7 +3991,7 @@ select local.set $7 block $break|0 - loop $repeat|0 + loop $loop|0 local.get $7 i32.const 0 i32.ge_s @@ -4228,8 +4016,7 @@ i32.const 1 i32.sub local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -4241,62 +4028,60 @@ ) (func $~lib/util/string/isWhiteSpaceOrLineTerminator (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - block $break|0 - block $case10|0 - block $case9|0 - block $case8|0 - block $case7|0 - block $case6|0 - block $case5|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $0 - local.set $1 - local.get $1 - i32.const 9 - i32.eq - br_if $case0|0 - local.get $1 - i32.const 10 - i32.eq - br_if $case1|0 - local.get $1 - i32.const 13 - i32.eq - br_if $case2|0 - local.get $1 - i32.const 11 - i32.eq - br_if $case3|0 - local.get $1 - i32.const 12 - i32.eq - br_if $case4|0 - local.get $1 - i32.const 32 - i32.eq - br_if $case5|0 - local.get $1 - i32.const 160 - i32.eq - br_if $case6|0 - local.get $1 - i32.const 8232 - i32.eq - br_if $case7|0 - local.get $1 - i32.const 8233 - i32.eq - br_if $case8|0 - local.get $1 - i32.const 65279 - i32.eq - br_if $case9|0 - br $case10|0 - end + block $case10|0 + block $case9|0 + block $case8|0 + block $case7|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + local.set $1 + local.get $1 + i32.const 9 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 10 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 13 + i32.eq + br_if $case2|0 + local.get $1 + i32.const 11 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 12 + i32.eq + br_if $case4|0 + local.get $1 + i32.const 32 + i32.eq + br_if $case5|0 + local.get $1 + i32.const 160 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 8232 + i32.eq + br_if $case7|0 + local.get $1 + i32.const 8233 + i32.eq + br_if $case8|0 + local.get $1 + i32.const 65279 + i32.eq + br_if $case9|0 + br $case10|0 end end end @@ -4306,15 +4091,12 @@ end end end - i32.const 1 - return end - i32.const 0 + i32.const 1 return - unreachable end - unreachable - unreachable + i32.const 0 + return ) (func $~lib/util/string/strtol (; 43 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) (local $2 i32) @@ -4349,20 +4131,21 @@ loop $continue|0 local.get $5 call $~lib/util/string/isWhiteSpaceOrLineTerminator - if - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $4 + i32.const 2 + i32.add + local.tee $4 + i32.load16_u + local.set $5 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $5 i32.const 45 @@ -4474,55 +4257,43 @@ br $case6|1 end end - block - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 2 - local.set $1 - br $break|1 - unreachable - end - unreachable + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 2 + local.set $1 + br $break|1 end end - block - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8 - local.set $1 - br $break|1 - unreachable - end - unreachable + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8 + local.set $1 + br $break|1 end end - block - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 16 - local.set $1 - br $break|1 - unreachable - end - unreachable + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 16 + local.set $1 + br $break|1 end i32.const 10 local.set $1 @@ -4555,95 +4326,94 @@ local.set $8 block $break|2 loop $continue|2 - block (result i32) - local.get $2 - local.tee $7 - i32.const 1 - i32.sub - local.set $2 - local.get $7 + local.get $2 + local.tee $7 + i32.const 1 + i32.sub + local.set $2 + local.get $7 + i32.eqz + br_if $break|2 + local.get $4 + i32.load16_u + local.set $5 + local.get $5 + i32.const 48 + i32.ge_s + if (result i32) + local.get $5 + i32.const 57 + i32.le_s + else + i32.const 0 end if - local.get $4 - i32.load16_u - local.set $5 local.get $5 i32.const 48 + i32.sub + local.set $5 + else + local.get $5 + i32.const 65 i32.ge_s if (result i32) local.get $5 - i32.const 57 + i32.const 90 i32.le_s else i32.const 0 end if local.get $5 - i32.const 48 + i32.const 65 + i32.const 10 + i32.sub i32.sub local.set $5 else local.get $5 - i32.const 65 + i32.const 97 i32.ge_s if (result i32) local.get $5 - i32.const 90 + i32.const 122 i32.le_s else i32.const 0 end if local.get $5 - i32.const 65 + i32.const 97 i32.const 10 i32.sub i32.sub local.set $5 else - local.get $5 - i32.const 97 - i32.ge_s - if (result i32) - local.get $5 - i32.const 122 - i32.le_s - else - i32.const 0 - end - if - local.get $5 - i32.const 97 - i32.const 10 - i32.sub - i32.sub - local.set $5 - else - br $break|2 - end + br $break|2 end end - local.get $5 - local.get $1 - i32.ge_s - if - br $break|2 - end - local.get $8 - local.get $1 - f64.convert_i32_s - f64.mul - local.get $5 - f64.convert_i32_s - f64.add - local.set $8 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $continue|2 end + local.get $5 + local.get $1 + i32.ge_s + if + br $break|2 + end + local.get $8 + local.get $1 + f64.convert_i32_s + f64.mul + local.get $5 + f64.convert_i32_s + f64.add + local.set $8 + local.get $4 + i32.const 2 + i32.add + local.set $4 + br $continue|2 end + unreachable end local.get $6 local.get $8 @@ -4699,20 +4469,21 @@ loop $continue|0 local.get $4 call $~lib/util/string/isWhiteSpaceOrLineTerminator - if - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $4 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $3 + i32.const 2 + i32.add + local.tee $3 + i32.load16_u + local.set $4 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $continue|0 end + unreachable end local.get $4 i32.const 45 @@ -4774,119 +4545,117 @@ local.set $6 block $break|1 loop $continue|1 - block (result i32) - local.get $1 - local.tee $7 - i32.const 1 - i32.sub - local.set $1 - local.get $7 - end + local.get $1 + local.tee $7 + i32.const 1 + i32.sub + local.set $1 + local.get $7 + i32.eqz + br_if $break|1 + local.get $3 + i32.load16_u + local.set $4 + local.get $4 + i32.const 46 + i32.eq if - local.get $3 - i32.load16_u - local.set $4 - local.get $4 - i32.const 46 - i32.eq - if - local.get $3 - i32.const 2 - i32.add - local.set $3 - f64.const 0.1 - local.set $2 - block $break|2 - loop $continue|2 - block (result i32) - local.get $1 - local.tee $7 - i32.const 1 - i32.sub - local.set $1 - local.get $7 - end - if - local.get $3 - i32.load16_u - local.set $4 - local.get $4 - i32.const 69 - i32.eq - if (result i32) - i32.const 1 - else - local.get $4 - i32.const 101 - i32.eq - end - if - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 1320 - i32.const 180 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - end - local.get $4 - i32.const 48 - i32.sub - local.set $4 - local.get $4 - i32.const 9 - i32.gt_u - if - br $break|2 - end - local.get $6 - local.get $4 - f64.convert_i32_s - local.get $2 - f64.mul - f64.add - local.set $6 - local.get $2 - f64.const 0.1 - f64.mul - local.set $2 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $continue|2 - end - end - end - br $break|1 - end - local.get $4 - i32.const 48 - i32.sub - local.set $4 - local.get $4 - i32.const 10 - i32.ge_u - if - br $break|1 - end - local.get $6 - f64.const 10 - f64.mul - local.get $4 - f64.convert_i32_s - f64.add - local.set $6 local.get $3 i32.const 2 i32.add local.set $3 - br $continue|1 + f64.const 0.1 + local.set $2 + block $break|2 + loop $continue|2 + local.get $1 + local.tee $7 + i32.const 1 + i32.sub + local.set $1 + local.get $7 + i32.eqz + br_if $break|2 + local.get $3 + i32.load16_u + local.set $4 + local.get $4 + i32.const 69 + i32.eq + if (result i32) + i32.const 1 + else + local.get $4 + i32.const 101 + i32.eq + end + if + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 1320 + i32.const 180 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + end + local.get $4 + i32.const 48 + i32.sub + local.set $4 + local.get $4 + i32.const 9 + i32.gt_u + if + br $break|2 + end + local.get $6 + local.get $4 + f64.convert_i32_s + local.get $2 + f64.mul + f64.add + local.set $6 + local.get $2 + f64.const 0.1 + f64.mul + local.set $2 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $continue|2 + end + unreachable + end + br $break|1 end + local.get $4 + i32.const 48 + i32.sub + local.set $4 + local.get $4 + i32.const 10 + i32.ge_u + if + br $break|1 + end + local.get $6 + f64.const 10 + f64.mul + local.get $4 + f64.convert_i32_s + f64.add + local.set $6 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $continue|1 end + unreachable end local.get $5 local.get $6 @@ -4922,21 +4691,19 @@ i32.const 0 i32.eq if - block (result i32) - i32.const 552 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - drop - local.get $3 - call $~lib/rt/pure/__release - end + i32.const 552 + local.tee $2 + local.get $1 + local.tee $3 + i32.ne + if local.get $2 + call $~lib/rt/pure/__retain + drop + local.get $3 + call $~lib/rt/pure/__release end + local.get $2 local.set $1 end local.get $0 @@ -5495,20 +5262,18 @@ local.get $1 return end - block $~lib/rt/tlsf/GETRIGHT|inlined.4 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $6 local.get $6 i32.load @@ -5856,36 +5621,37 @@ local.get $3 i32.const 32 i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 end + unreachable end end ) @@ -6034,22 +5800,20 @@ i32.const 0 i32.eq if - block (result i32) - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__allocArray - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - end + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__allocArray + local.set $3 + local.get $3 + i32.load offset=4 + local.set $4 + local.get $4 + local.get $0 + call $~lib/rt/pure/__retain + i32.store + local.get $3 call $~lib/rt/pure/__retain local.set $4 local.get $1 @@ -6109,7 +5873,7 @@ block $break|0 i32.const 0 local.set $7 - loop $repeat|0 + loop $loop|0 local.get $7 local.get $5 i32.lt_s @@ -6141,8 +5905,7 @@ i32.const 1 i32.add local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6198,62 +5961,63 @@ local.tee $10 i32.const -1 i32.ne + i32.eqz + br_if $break|1 + local.get $10 + local.get $11 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.gt_s if - local.get $10 - local.get $11 - i32.sub - local.set $3 local.get $3 - i32.const 0 - i32.gt_s - if - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - local.get $0 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - else - local.get $9 - i32.const 120 - call $~lib/array/Array<~lib/string/String>#push - drop - end - local.get $12 i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/tlsf/__alloc + local.set $4 + local.get $4 + local.get $0 + local.get $11 + i32.const 1 + i32.shl i32.add - local.tee $12 - local.get $2 - i32.eq - if - local.get $9 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $10 - local.get $6 - i32.add - local.set $11 - br $continue|1 + local.get $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $9 + local.get $4 + call $~lib/array/Array<~lib/string/String>#push + drop + else + local.get $9 + i32.const 120 + call $~lib/array/Array<~lib/string/String>#push + drop end + local.get $12 + i32.const 1 + i32.add + local.tee $12 + local.get $2 + i32.eq + if + local.get $9 + local.set $4 + local.get $1 + call $~lib/rt/pure/__release + local.get $4 + return + end + local.get $10 + local.get $6 + i32.add + local.set $11 + br $continue|1 end + unreachable end local.get $11 i32.eqz @@ -6388,7 +6152,6 @@ return end unreachable - unreachable else local.get $0 i32.const 10000000 @@ -6418,10 +6181,8 @@ return end unreachable - unreachable end unreachable - unreachable ) (func $~lib/util/number/utoa32_lut (; 67 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -6439,57 +6200,58 @@ local.get $1 i32.const 10000 i32.ge_u - if - local.get $1 - i32.const 10000 - i32.div_u - local.set $4 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 100 - i32.div_u - local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - local.get $3 - local.get $7 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $1 + i32.const 10000 + i32.div_u + local.set $4 + local.get $1 + i32.const 10000 + i32.rem_u + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 100 + i32.div_u + local.set $6 + local.get $5 + i32.const 100 + i32.rem_u + local.set $7 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $8 + local.get $3 + local.get $7 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $9 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $9 + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 end + unreachable end local.get $1 i32.const 100 @@ -6600,18 +6362,16 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.set $3 - block $~lib/util/number/utoa32_core|inlined.0 - local.get $3 - local.set $6 - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end + local.get $3 + local.set $6 + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut local.get $1 if local.get $3 @@ -6643,18 +6403,16 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.set $2 - block $~lib/util/number/utoa32_core|inlined.1 - local.get $2 - local.set $5 - local.get $0 - local.set $4 - local.get $1 - local.set $3 - local.get $5 - local.get $4 - local.get $3 - call $~lib/util/number/utoa32_lut - end + local.get $2 + local.set $5 + local.get $0 + local.set $4 + local.get $1 + local.set $3 + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/number/utoa32_lut local.get $2 call $~lib/rt/pure/__retain ) @@ -6692,7 +6450,6 @@ return end unreachable - unreachable else local.get $0 i64.const 100000000000000000 @@ -6722,10 +6479,8 @@ return end unreachable - unreachable end unreachable - unreachable ) (func $~lib/util/number/utoa64_lut (; 71 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) @@ -6747,105 +6502,106 @@ local.get $1 i64.const 100000000 i64.ge_u - if - local.get $1 - i64.const 100000000 - i64.div_u - local.set $4 - local.get $1 - local.get $4 - i64.const 100000000 - i64.mul - i64.sub - i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u - local.set $6 - local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 - local.get $6 - i32.const 100 - i32.div_u - local.set $8 - local.get $6 - i32.const 100 - i32.rem_u - local.set $9 - local.get $7 - i32.const 100 - i32.div_u - local.set $10 - local.get $7 - i32.const 100 - i32.rem_u - local.set $11 - local.get $3 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - local.get $3 - local.get $11 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - local.get $3 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - local.get $3 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $13 - local.get $2 - i32.const 4 - i32.sub - local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $1 + i64.const 100000000 + i64.div_u + local.set $4 + local.get $1 + local.get $4 + i64.const 100000000 + i64.mul + i64.sub + i32.wrap_i64 + local.set $5 + local.get $4 + local.set $1 + local.get $5 + i32.const 10000 + i32.div_u + local.set $6 + local.get $5 + i32.const 10000 + i32.rem_u + local.set $7 + local.get $6 + i32.const 100 + i32.div_u + local.set $8 + local.get $6 + i32.const 100 + i32.rem_u + local.set $9 + local.get $7 + i32.const 100 + i32.div_u + local.set $10 + local.get $7 + i32.const 100 + i32.rem_u + local.set $11 + local.get $3 + local.get $10 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + local.get $3 + local.get $11 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i64.const 32 + i64.shl + i64.or + i64.store + local.get $3 + local.get $8 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + local.get $3 + local.get $9 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $13 + i64.const 32 + i64.shl + i64.or + i64.store + br $continue|0 end + unreachable end local.get $0 local.get $1 @@ -6884,18 +6640,16 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.set $1 - block $~lib/util/number/utoa32_core|inlined.2 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_lut - end + local.get $1 + local.set $6 + local.get $2 + local.set $5 + local.get $3 + local.set $4 + local.get $6 + local.get $5 + local.get $4 + call $~lib/util/number/utoa32_lut else local.get $0 call $~lib/util/number/decimalCount64 @@ -6906,18 +6660,16 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.set $1 - block $~lib/util/number/utoa64_core|inlined.0 - local.get $1 - local.set $5 - local.get $0 - local.set $7 - local.get $3 - local.set $4 - local.get $5 - local.get $7 - local.get $4 - call $~lib/util/number/utoa64_lut - end + local.get $1 + local.set $5 + local.get $0 + local.set $7 + local.get $3 + local.set $4 + local.get $5 + local.get $7 + local.get $4 + call $~lib/util/number/utoa64_lut end local.get $1 call $~lib/rt/pure/__retain @@ -6967,18 +6719,16 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.set $2 - block $~lib/util/number/utoa32_core|inlined.3 - local.get $2 - local.set $7 - local.get $3 - local.set $6 - local.get $4 - local.set $5 - local.get $7 - local.get $6 - local.get $5 - call $~lib/util/number/utoa32_lut - end + local.get $2 + local.set $7 + local.get $3 + local.set $6 + local.get $4 + local.set $5 + local.get $7 + local.get $6 + local.get $5 + call $~lib/util/number/utoa32_lut else local.get $0 call $~lib/util/number/decimalCount64 @@ -6991,18 +6741,16 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.set $2 - block $~lib/util/number/utoa64_core|inlined.1 - local.get $2 - local.set $6 - local.get $0 - local.set $8 - local.get $4 - local.set $5 - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_lut - end + local.get $2 + local.set $6 + local.get $0 + local.set $8 + local.get $4 + local.set $5 + local.get $6 + local.get $8 + local.get $5 + call $~lib/util/number/utoa64_lut end local.get $1 if @@ -7106,498 +6854,444 @@ local.get $14 i32.const 0 i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $14 - local.set $18 - local.get $18 - i32.const 10 - i32.eq - br_if $case0|1 - local.get $18 - i32.const 9 - i32.eq - br_if $case1|1 - local.get $18 - i32.const 8 - i32.eq - br_if $case2|1 - local.get $18 - i32.const 7 - i32.eq - br_if $case3|1 - local.get $18 - i32.const 6 - i32.eq - br_if $case4|1 - local.get $18 - i32.const 5 - i32.eq - br_if $case5|1 - local.get $18 - i32.const 4 - i32.eq - br_if $case6|1 - local.get $18 - i32.const 3 - i32.eq - br_if $case7|1 - local.get $18 - i32.const 2 - i32.eq - br_if $case8|1 - local.get $18 - i32.const 1 - i32.eq - br_if $case9|1 - br $case10|1 - end - block - local.get $12 - i32.const 1000000000 - i32.div_u - local.set $17 - local.get $12 - i32.const 1000000000 - i32.rem_u - local.set $12 - br $break|1 - unreachable - end - unreachable + i32.eqz + br_if $break|0 + block $break|1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $14 + local.set $18 + local.get $18 + i32.const 10 + i32.eq + br_if $case0|1 + local.get $18 + i32.const 9 + i32.eq + br_if $case1|1 + local.get $18 + i32.const 8 + i32.eq + br_if $case2|1 + local.get $18 + i32.const 7 + i32.eq + br_if $case3|1 + local.get $18 + i32.const 6 + i32.eq + br_if $case4|1 + local.get $18 + i32.const 5 + i32.eq + br_if $case5|1 + local.get $18 + i32.const 4 + i32.eq + br_if $case6|1 + local.get $18 + i32.const 3 + i32.eq + br_if $case7|1 + local.get $18 + i32.const 2 + i32.eq + br_if $case8|1 + local.get $18 + i32.const 1 + i32.eq + br_if $case9|1 + br $case10|1 end - block - local.get $12 - i32.const 100000000 - i32.div_u - local.set $17 - local.get $12 - i32.const 100000000 - i32.rem_u - local.set $12 - br $break|1 - unreachable - end - unreachable - end - block local.get $12 - i32.const 10000000 + i32.const 1000000000 i32.div_u local.set $17 local.get $12 - i32.const 10000000 + i32.const 1000000000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 1000000 + i32.const 100000000 i32.div_u local.set $17 local.get $12 - i32.const 1000000 + i32.const 100000000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 100000 + i32.const 10000000 i32.div_u local.set $17 local.get $12 - i32.const 100000 + i32.const 10000000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 10000 + i32.const 1000000 i32.div_u local.set $17 local.get $12 - i32.const 10000 + i32.const 1000000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 1000 + i32.const 100000 i32.div_u local.set $17 local.get $12 - i32.const 1000 + i32.const 100000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 100 + i32.const 10000 i32.div_u local.set $17 local.get $12 - i32.const 100 + i32.const 10000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 - i32.const 10 + i32.const 1000 i32.div_u local.set $17 local.get $12 - i32.const 10 + i32.const 1000 i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block local.get $12 + i32.const 100 + i32.div_u local.set $17 - i32.const 0 + local.get $12 + i32.const 100 + i32.rem_u local.set $12 br $break|1 - unreachable end - unreachable - end - block - i32.const 0 + local.get $12 + i32.const 10 + i32.div_u local.set $17 + local.get $12 + i32.const 10 + i32.rem_u + local.set $12 br $break|1 - unreachable end - unreachable + local.get $12 + local.set $17 + i32.const 0 + local.set $12 + br $break|1 end - local.get $17 + i32.const 0 + local.set $17 + br $break|1 + end + local.get $17 + local.get $15 + i32.or + if + local.get $0 local.get $15 - i32.or - if - local.get $0 - block (result i32) - local.get $15 - local.tee $18 - i32.const 1 - i32.add - local.set $15 - local.get $18 - end - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $17 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $14 + local.tee $18 i32.const 1 - i32.sub - local.set $14 - local.get $12 - i64.extend_i32_u + i32.add + local.set $15 + local.get $18 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $17 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $14 + i32.const 1 + i32.sub + local.set $14 + local.get $12 + i64.extend_i32_u + local.get $7 + i64.extend_i32_s + i64.shl + local.get $13 + i64.add + local.set $19 + local.get $19 + local.get $5 + i64.le_u + if + global.get $~lib/util/number/_K + local.get $14 + i32.add + global.set $~lib/util/number/_K + local.get $0 + local.set $24 + local.get $15 + local.set $18 + local.get $5 + local.set $23 + local.get $19 + local.set $22 + local.get $16 + local.get $14 + i32.const 2 + i32.shl + i32.add + i64.load32_u local.get $7 i64.extend_i32_s i64.shl - local.get $13 - i64.add - local.set $19 - local.get $19 - local.get $5 - i64.le_u - if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - block $~lib/util/number/grisuRound|inlined.0 - local.get $0 - local.set $24 - local.get $15 - local.set $18 - local.get $5 - local.set $23 - local.get $19 - local.set $22 - local.get $16 - local.get $14 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $7 - i64.extend_i32_s - i64.shl - local.set $21 - local.get $10 - local.set $20 - local.get $24 - local.get $18 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.set $25 - local.get $25 - i32.load16_u - local.set $26 - block $break|2 - loop $continue|2 - local.get $22 - local.get $20 - i64.lt_u - if (result i32) - local.get $23 - local.get $22 - i64.sub - local.get $21 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $20 - local.get $22 - i64.sub - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $22 - local.get $21 - i64.add - local.set $22 - br $continue|2 - end - end - end - local.get $25 - local.get $26 - i32.store16 - end - local.get $15 - return - end - br $continue|0 - end - end - end - block $break|3 - loop $continue|3 - i32.const 1 - if - local.get $13 - i64.const 10 - i64.mul - local.set $13 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $13 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $19 - local.get $19 - local.get $15 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - block (result i32) - local.get $15 - local.tee $17 - i32.const 1 - i32.add - local.set $15 - local.get $17 - end - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $19 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - local.get $9 - i64.and - local.set $13 - local.get $14 + local.set $21 + local.get $10 + local.set $20 + local.get $24 + local.get $18 i32.const 1 i32.sub - local.set $14 - local.get $13 - local.get $5 - i64.lt_u - if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - local.get $10 - local.get $16 - i32.const 0 - local.get $14 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u - i64.mul - local.set $10 - block $~lib/util/number/grisuRound|inlined.1 - local.get $0 - local.set $24 - local.get $15 - local.set $18 - local.get $5 - local.set $23 - local.get $13 - local.set $22 - local.get $8 - local.set $21 - local.get $10 - local.set $20 - local.get $24 - local.get $18 + i32.const 1 + i32.shl + i32.add + local.set $25 + local.get $25 + i32.load16_u + local.set $26 + block $break|2 + loop $continue|2 + local.get $22 + local.get $20 + i64.lt_u + if (result i32) + local.get $23 + local.get $22 + i64.sub + local.get $21 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $22 + local.get $21 + i64.add + local.get $20 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $20 + local.get $22 + i64.sub + local.get $22 + local.get $21 + i64.add + local.get $20 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + i32.eqz + br_if $break|2 + local.get $26 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.set $17 - local.get $17 - i32.load16_u local.set $26 - block $break|4 - loop $continue|4 - local.get $22 - local.get $20 - i64.lt_u - if (result i32) - local.get $23 - local.get $22 - i64.sub - local.get $21 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $20 - local.get $22 - i64.sub - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.sub - i64.gt_u - end - else - i32.const 0 - end - if - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $22 - local.get $21 - i64.add - local.set $22 - br $continue|4 - end - end - end - local.get $17 - local.get $26 - i32.store16 + local.get $22 + local.get $21 + i64.add + local.set $22 + br $continue|2 end - local.get $15 - return + unreachable end - br $continue|3 + local.get $25 + local.get $26 + i32.store16 + local.get $15 + return end + br $continue|0 end + unreachable end - local.get $15 + loop $continue|3 + local.get $13 + i64.const 10 + i64.mul + local.set $13 + local.get $5 + i64.const 10 + i64.mul + local.set $5 + local.get $13 + local.get $7 + i64.extend_i32_s + i64.shr_u + local.set $19 + local.get $19 + local.get $15 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $15 + local.tee $17 + i32.const 1 + i32.add + local.set $15 + local.get $17 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $19 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $13 + local.get $9 + i64.and + local.set $13 + local.get $14 + i32.const 1 + i32.sub + local.set $14 + local.get $13 + local.get $5 + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $14 + i32.add + global.set $~lib/util/number/_K + local.get $10 + local.get $16 + i32.const 0 + local.get $14 + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $10 + local.get $0 + local.set $24 + local.get $15 + local.set $18 + local.get $5 + local.set $23 + local.get $13 + local.set $22 + local.get $8 + local.set $21 + local.get $10 + local.set $20 + local.get $24 + local.get $18 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $17 + local.get $17 + i32.load16_u + local.set $26 + block $break|4 + loop $continue|4 + local.get $22 + local.get $20 + i64.lt_u + if (result i32) + local.get $23 + local.get $22 + i64.sub + local.get $21 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $22 + local.get $21 + i64.add + local.get $20 + i64.lt_u + if (result i32) + i32.const 1 + else + local.get $20 + local.get $22 + i64.sub + local.get $22 + local.get $21 + i64.add + local.get $20 + i64.sub + i64.gt_u + end + else + i32.const 0 + end + i32.eqz + br_if $break|4 + local.get $26 + i32.const 1 + i32.sub + local.set $26 + local.get $22 + local.get $21 + i64.add + local.set $22 + br $continue|4 + end + unreachable + end + local.get $17 + local.get $26 + i32.store16 + local.get $15 + return + end + br $continue|3 + end + unreachable ) (func $~lib/util/number/prettify (; 79 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -7646,7 +7340,7 @@ block $break|0 local.get $1 local.set $4 - loop $repeat|0 + loop $loop|0 local.get $4 local.get $3 i32.lt_s @@ -7663,8 +7357,7 @@ i32.const 1 i32.add local.set $4 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7758,7 +7451,7 @@ block $break|1 i32.const 2 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 local.get $4 i32.lt_s @@ -7775,8 +7468,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -7792,51 +7484,47 @@ local.get $0 i32.const 101 i32.store16 offset=2 - block $~lib/util/number/genExponent|inlined.0 (result i32) - local.get $0 - i32.const 4 - i32.add - local.set $4 - local.get $3 - i32.const 1 + local.get $0 + i32.const 4 + i32.add + local.set $4 + local.get $3 + i32.const 1 + i32.sub + local.set $5 + local.get $5 + i32.const 0 + i32.lt_s + local.set $6 + local.get $6 + if + i32.const 0 + local.get $5 i32.sub local.set $5 - local.get $5 - i32.const 0 - i32.lt_s - local.set $6 - local.get $6 - if - i32.const 0 - local.get $5 - i32.sub - local.set $5 - end - local.get $5 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $7 - block $~lib/util/number/utoa32_core|inlined.4 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/number/utoa32_lut - end - local.get $4 - i32.const 45 - i32.const 43 - local.get $6 - select - i32.store16 - local.get $7 end + local.get $5 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $7 + local.get $4 + local.set $10 + local.get $5 + local.set $9 + local.get $7 + local.set $8 + local.get $10 + local.get $9 + local.get $8 + call $~lib/util/number/utoa32_lut + local.get $4 + i32.const 45 + i32.const 43 + local.get $6 + select + i32.store16 + local.get $7 local.set $1 local.get $1 i32.const 2 @@ -7866,53 +7554,49 @@ i32.const 101 i32.store16 offset=2 local.get $1 - block $~lib/util/number/genExponent|inlined.1 (result i32) - local.get $0 - local.get $7 - i32.add - i32.const 4 - i32.add - local.set $9 - local.get $3 - i32.const 1 + local.get $0 + local.get $7 + i32.add + i32.const 4 + i32.add + local.set $9 + local.get $3 + i32.const 1 + i32.sub + local.set $8 + local.get $8 + i32.const 0 + i32.lt_s + local.set $6 + local.get $6 + if + i32.const 0 + local.get $8 i32.sub local.set $8 - local.get $8 - i32.const 0 - i32.lt_s - local.set $6 - local.get $6 - if - i32.const 0 - local.get $8 - i32.sub - local.set $8 - end - local.get $8 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.set $4 - block $~lib/util/number/utoa32_core|inlined.5 - local.get $9 - local.set $11 - local.get $8 - local.set $5 - local.get $4 - local.set $10 - local.get $11 - local.get $5 - local.get $10 - call $~lib/util/number/utoa32_lut - end - local.get $9 - i32.const 45 - i32.const 43 - local.get $6 - select - i32.store16 - local.get $4 end + local.get $8 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.set $4 + local.get $9 + local.set $11 + local.get $8 + local.set $5 + local.get $4 + local.set $10 + local.get $11 + local.get $5 + local.get $10 + call $~lib/util/number/utoa32_lut + local.get $9 + i32.const 45 + i32.const 43 + local.get $6 + select + i32.store16 + local.get $4 i32.add local.set $1 local.get $1 @@ -7927,7 +7611,6 @@ unreachable end unreachable - unreachable ) (func $~lib/util/number/dtoa_core (; 80 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) @@ -7970,387 +7653,371 @@ i32.const 45 i32.store16 end - block $~lib/util/number/grisu2|inlined.0 (result i32) - local.get $1 - local.set $5 - local.get $0 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i64.reinterpret_f64 - local.set $6 - local.get $6 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $7 - local.get $6 - i64.const 4503599627370495 - i64.and - local.set $8 - local.get $7 - i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $8 - i64.add - local.set $9 - local.get $7 - i32.const 1 - local.get $7 - i32.const 0 - i32.ne - select - i32.const 1023 - i32.const 52 - i32.add - i32.sub - local.set $7 - block $~lib/util/number/normalizedBoundaries|inlined.0 - local.get $9 - local.set $11 - local.get $7 - local.set $10 - local.get $11 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.set $12 - local.get $10 - i32.const 1 - i32.sub - local.set $13 - local.get $12 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $12 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $12 - local.get $13 - local.get $14 - i32.sub - local.set $13 - i32.const 1 - local.get $11 - i64.const 4503599627370496 - i64.eq - i32.add - local.set $15 - local.get $12 - global.set $~lib/util/number/_frc_plus - local.get $11 - local.get $15 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $10 - local.get $15 - i32.sub - local.get $13 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $13 - global.set $~lib/util/number/_exp - end - block $~lib/util/number/getCachedPower|inlined.0 - global.get $~lib/util/number/_exp - local.set $10 - i32.const -61 - local.get $10 - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.set $16 - local.get $16 - i32.trunc_f64_s - local.set $15 - local.get $15 - local.get $15 - f64.convert_i32_s - local.get $16 - f64.ne - i32.add - local.set $15 - local.get $15 - i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.set $14 - i32.const 348 - local.get $14 - i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 5016 - local.get $14 - call $~lib/array/Array#__unchecked_get - global.set $~lib/util/number/_frc_pow - i32.const 5240 - local.get $14 - call $~lib/array/Array#__unchecked_get - global.set $~lib/util/number/_exp_pow - end - local.get $9 - i64.clz - i32.wrap_i64 - local.set $14 - local.get $9 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $9 - local.get $7 - local.get $14 - i32.sub - local.set $7 - global.get $~lib/util/number/_frc_pow - local.set $12 - global.get $~lib/util/number/_exp_pow - local.set $15 - block $~lib/util/number/umul64f|inlined.0 (result i64) - local.get $9 - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $11 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $11 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $24 - local.get $24 - i64.const 2147483647 - i64.add - local.set $24 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $24 - i64.const 32 - i64.shr_u - local.set $24 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $24 - i64.add - end - local.set $24 - block $~lib/util/number/umul64e|inlined.0 (result i32) - local.get $7 - local.set $10 - local.get $15 - local.set $13 - local.get $10 - local.get $13 - i32.add - i32.const 64 - i32.add - end - local.set $10 - block $~lib/util/number/umul64f|inlined.1 (result i64) - global.get $~lib/util/number/_frc_plus - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $23 - local.get $11 - i64.const 4294967295 - i64.and - local.set $22 - local.get $17 - i64.const 32 - i64.shr_u - local.set $21 - local.get $11 - i64.const 32 - i64.shr_u - local.set $20 - local.get $23 - local.get $22 - i64.mul - local.set $19 - local.get $21 - local.get $22 - i64.mul - local.get $19 - i64.const 32 - i64.shr_u - i64.add - local.set $18 - local.get $23 - local.get $20 - i64.mul - local.get $18 - i64.const 4294967295 - i64.and - i64.add - local.set $25 - local.get $25 - i64.const 2147483647 - i64.add - local.set $25 - local.get $18 - i64.const 32 - i64.shr_u - local.set $18 - local.get $25 - i64.const 32 - i64.shr_u - local.set $25 - local.get $21 - local.get $20 - i64.mul - local.get $18 - i64.add - local.get $25 - i64.add - end - i64.const 1 - i64.sub - local.set $25 - block $~lib/util/number/umul64e|inlined.1 (result i32) - global.get $~lib/util/number/_exp - local.set $26 - local.get $15 - local.set $13 - local.get $26 - local.get $13 - i32.add - i32.const 64 - i32.add - end - local.set $26 - block $~lib/util/number/umul64f|inlined.2 (result i64) - global.get $~lib/util/number/_frc_minus - local.set $17 - local.get $12 - local.set $11 - local.get $17 - i64.const 4294967295 - i64.and - local.set $18 - local.get $11 - i64.const 4294967295 - i64.and - local.set $19 - local.get $17 - i64.const 32 - i64.shr_u - local.set $20 - local.get $11 - i64.const 32 - i64.shr_u - local.set $21 - local.get $18 - local.get $19 - i64.mul - local.set $22 - local.get $20 - local.get $19 - i64.mul - local.get $22 - i64.const 32 - i64.shr_u - i64.add - local.set $23 - local.get $18 - local.get $21 - i64.mul - local.get $23 - i64.const 4294967295 - i64.and - i64.add - local.set $27 - local.get $27 - i64.const 2147483647 - i64.add - local.set $27 - local.get $23 - i64.const 32 - i64.shr_u - local.set $23 - local.get $27 - i64.const 32 - i64.shr_u - local.set $27 - local.get $20 - local.get $21 - i64.mul - local.get $23 - i64.add - local.get $27 - i64.add - end - i64.const 1 - i64.add - local.set $27 - local.get $25 - local.get $27 - i64.sub - local.set $23 - local.get $4 - local.get $24 - local.get $10 - local.get $25 - local.get $26 - local.get $23 - local.get $3 - call $~lib/util/number/genDigits - end + local.get $1 + local.set $5 + local.get $0 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + i64.reinterpret_f64 + local.set $6 + local.get $6 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.set $7 + local.get $6 + i64.const 4503599627370495 + i64.and + local.set $8 + local.get $7 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $8 + i64.add + local.set $9 + local.get $7 + i32.const 1 + local.get $7 + i32.const 0 + i32.ne + select + i32.const 1023 + i32.const 52 + i32.add + i32.sub + local.set $7 + local.get $9 + local.set $11 + local.get $7 + local.set $10 + local.get $11 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.set $12 + local.get $10 + i32.const 1 + i32.sub + local.set $13 + local.get $12 + i64.clz + i32.wrap_i64 + local.set $14 + local.get $12 + local.get $14 + i64.extend_i32_s + i64.shl + local.set $12 + local.get $13 + local.get $14 + i32.sub + local.set $13 + i32.const 1 + local.get $11 + i64.const 4503599627370496 + i64.eq + i32.add + local.set $15 + local.get $12 + global.set $~lib/util/number/_frc_plus + local.get $11 + local.get $15 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $10 + local.get $15 + i32.sub + local.get $13 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $13 + global.set $~lib/util/number/_exp + global.get $~lib/util/number/_exp + local.set $10 + i32.const -61 + local.get $10 + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.set $16 + local.get $16 + i32.trunc_f64_s + local.set $15 + local.get $15 + local.get $15 + f64.convert_i32_s + local.get $16 + f64.ne + i32.add + local.set $15 + local.get $15 + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.set $14 + i32.const 348 + local.get $14 + i32.const 3 + i32.shl + i32.sub + global.set $~lib/util/number/_K + i32.const 5016 + local.get $14 + call $~lib/array/Array#__unchecked_get + global.set $~lib/util/number/_frc_pow + i32.const 5240 + local.get $14 + call $~lib/array/Array#__unchecked_get + global.set $~lib/util/number/_exp_pow + local.get $9 + i64.clz + i32.wrap_i64 + local.set $14 + local.get $9 + local.get $14 + i64.extend_i32_s + i64.shl + local.set $9 + local.get $7 + local.get $14 + i32.sub + local.set $7 + global.get $~lib/util/number/_frc_pow + local.set $12 + global.get $~lib/util/number/_exp_pow + local.set $15 + local.get $9 + local.set $17 + local.get $12 + local.set $11 + local.get $17 + i64.const 4294967295 + i64.and + local.set $18 + local.get $11 + i64.const 4294967295 + i64.and + local.set $19 + local.get $17 + i64.const 32 + i64.shr_u + local.set $20 + local.get $11 + i64.const 32 + i64.shr_u + local.set $21 + local.get $18 + local.get $19 + i64.mul + local.set $22 + local.get $20 + local.get $19 + i64.mul + local.get $22 + i64.const 32 + i64.shr_u + i64.add + local.set $23 + local.get $18 + local.get $21 + i64.mul + local.get $23 + i64.const 4294967295 + i64.and + i64.add + local.set $24 + local.get $24 + i64.const 2147483647 + i64.add + local.set $24 + local.get $23 + i64.const 32 + i64.shr_u + local.set $23 + local.get $24 + i64.const 32 + i64.shr_u + local.set $24 + local.get $20 + local.get $21 + i64.mul + local.get $23 + i64.add + local.get $24 + i64.add + local.set $24 + local.get $7 + local.set $10 + local.get $15 + local.set $13 + local.get $10 + local.get $13 + i32.add + i32.const 64 + i32.add + local.set $10 + global.get $~lib/util/number/_frc_plus + local.set $17 + local.get $12 + local.set $11 + local.get $17 + i64.const 4294967295 + i64.and + local.set $23 + local.get $11 + i64.const 4294967295 + i64.and + local.set $22 + local.get $17 + i64.const 32 + i64.shr_u + local.set $21 + local.get $11 + i64.const 32 + i64.shr_u + local.set $20 + local.get $23 + local.get $22 + i64.mul + local.set $19 + local.get $21 + local.get $22 + i64.mul + local.get $19 + i64.const 32 + i64.shr_u + i64.add + local.set $18 + local.get $23 + local.get $20 + i64.mul + local.get $18 + i64.const 4294967295 + i64.and + i64.add + local.set $25 + local.get $25 + i64.const 2147483647 + i64.add + local.set $25 + local.get $18 + i64.const 32 + i64.shr_u + local.set $18 + local.get $25 + i64.const 32 + i64.shr_u + local.set $25 + local.get $21 + local.get $20 + i64.mul + local.get $18 + i64.add + local.get $25 + i64.add + i64.const 1 + i64.sub + local.set $25 + global.get $~lib/util/number/_exp + local.set $26 + local.get $15 + local.set $13 + local.get $26 + local.get $13 + i32.add + i32.const 64 + i32.add + local.set $26 + global.get $~lib/util/number/_frc_minus + local.set $17 + local.get $12 + local.set $11 + local.get $17 + i64.const 4294967295 + i64.and + local.set $18 + local.get $11 + i64.const 4294967295 + i64.and + local.set $19 + local.get $17 + i64.const 32 + i64.shr_u + local.set $20 + local.get $11 + i64.const 32 + i64.shr_u + local.set $21 + local.get $18 + local.get $19 + i64.mul + local.set $22 + local.get $20 + local.get $19 + i64.mul + local.get $22 + i64.const 32 + i64.shr_u + i64.add + local.set $23 + local.get $18 + local.get $21 + i64.mul + local.get $23 + i64.const 4294967295 + i64.and + i64.add + local.set $27 + local.get $27 + i64.const 2147483647 + i64.add + local.set $27 + local.get $23 + i64.const 32 + i64.shr_u + local.set $23 + local.get $27 + i64.const 32 + i64.shr_u + local.set $27 + local.get $20 + local.get $21 + i64.mul + local.get $23 + i64.add + local.get $27 + i64.add + i64.const 1 + i64.add + local.set $27 + local.get $25 + local.get $27 + i64.sub + local.set $23 + local.get $4 + local.get $24 + local.get $10 + local.get $25 + local.get $26 + local.get $23 + local.get $3 + call $~lib/util/number/genDigits local.set $28 local.get $0 local.get $2 @@ -8756,14 +8423,12 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 1 - global.set $~lib/argc - i32.const 0 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $0 - end + i32.const 1 + global.set $~lib/argc + i32.const 0 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $0 i32.const 384 call $~lib/string/String.__eq i32.eqz @@ -8775,14 +8440,12 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 1 - global.set $~lib/argc - i32.const 54 - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $1 - end + i32.const 1 + global.set $~lib/argc + i32.const 54 + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $1 i32.const 432 call $~lib/string/String.__eq i32.eqz @@ -8794,16 +8457,14 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 1 - global.set $~lib/argc - i32.const 65536 - i32.const 54 - i32.add - i32.const 0 - call $~lib/string/String.fromCharCode|trampoline - local.tee $2 - end + i32.const 1 + global.set $~lib/argc + i32.const 65536 + i32.const 54 + i32.add + i32.const 0 + call $~lib/string/String.fromCharCode|trampoline + local.tee $2 i32.const 432 call $~lib/string/String.__eq i32.eqz @@ -9684,42 +9345,40 @@ call $~lib/builtins/abort unreachable end - block - i32.const 408 - i32.const 1488 - call $~lib/string/String.__concat - local.tee $22 - call $~lib/rt/pure/__retain - local.set $23 - local.get $23 - i32.const 1512 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 92 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $23 - i32.const 408 - call $~lib/string/String.__ne - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 93 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release + i32.const 408 + i32.const 1488 + call $~lib/string/String.__concat + local.tee $22 + call $~lib/rt/pure/__retain + local.set $23 + local.get $23 + i32.const 1512 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 92 + i32.const 2 + call $~lib/builtins/abort + unreachable end + local.get $23 + i32.const 408 + call $~lib/string/String.__ne + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 93 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $22 + call $~lib/rt/pure/__release + local.get $23 + call $~lib/rt/pure/__release i32.const 120 i32.const 120 call $~lib/string/String.__eq @@ -10075,43 +9734,41 @@ call $~lib/builtins/abort unreachable end - block - i32.const 65377 - call $~lib/string/String.fromCodePoint - local.set $23 - i32.const 55296 - call $~lib/string/String.fromCodePoint - local.tee $22 - i32.const 56322 - call $~lib/string/String.fromCodePoint - local.tee $24 - call $~lib/string/String.__concat - local.tee $25 - call $~lib/rt/pure/__retain - local.set $26 - local.get $23 - local.get $26 - call $~lib/string/String.__gt - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 131 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $23 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release + i32.const 65377 + call $~lib/string/String.fromCodePoint + local.set $23 + i32.const 55296 + call $~lib/string/String.fromCodePoint + local.tee $22 + i32.const 56322 + call $~lib/string/String.fromCodePoint + local.tee $24 + call $~lib/string/String.__concat + local.tee $25 + call $~lib/rt/pure/__retain + local.set $26 + local.get $23 + local.get $26 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 131 + i32.const 2 + call $~lib/builtins/abort + unreachable end + local.get $23 + call $~lib/rt/pure/__release + local.get $22 + call $~lib/rt/pure/__release + local.get $24 + call $~lib/rt/pure/__release + local.get $25 + call $~lib/rt/pure/__release + local.get $26 + call $~lib/rt/pure/__release i32.const 736 call $~lib/string/String#get:length i32.const 3 @@ -10260,21 +9917,19 @@ call $~lib/builtins/abort unreachable end - block (result i32) - i32.const 2088 - local.tee $31 - global.get $std/string/str - local.tee $32 - i32.ne - if - local.get $31 - call $~lib/rt/pure/__retain - drop - local.get $32 - call $~lib/rt/pure/__release - end + i32.const 2088 + local.tee $31 + global.get $std/string/str + local.tee $32 + i32.ne + if local.get $31 + call $~lib/rt/pure/__retain + drop + local.get $32 + call $~lib/rt/pure/__release end + local.get $31 global.set $std/string/str global.get $std/string/str i32.const 0 @@ -10388,229 +10043,217 @@ call $~lib/builtins/abort unreachable end - block - i32.const 0 - local.set $38 - block (result i32) - i32.const 120 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $39 - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - end - local.set $38 + i32.const 0 + local.set $38 + i32.const 120 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.set $39 + local.get $38 + call $~lib/rt/pure/__release + local.get $39 + local.set $38 + local.get $38 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + if (result i32) local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $38 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 120 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - else - i32.const 0 - end i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 160 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 120 - i32.const 120 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $40 - local.get $38 - call $~lib/rt/pure/__release - local.get $40 - end - local.set $38 - local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 162 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 120 - i32.const 920 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $39 - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - end - local.set $38 - local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $38 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 120 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 164 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 2464 - i32.const 2496 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $40 - local.get $38 - call $~lib/rt/pure/__release - local.get $40 - end - local.set $38 - local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $38 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $40 - i32.const 2464 - call $~lib/string/String.__eq - local.set $39 - local.get $40 - call $~lib/rt/pure/__release - local.get $39 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 166 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - i32.const 2464 - i32.const 920 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $39 - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - end - local.set $38 - local.get $38 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $38 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 408 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $38 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 1488 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $38 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $39 - i32.const 2520 - call $~lib/string/String.__eq - local.set $40 - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - else - i32.const 0 - end - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 72 - i32.const 168 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $38 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $39 + i32.const 120 + call $~lib/string/String.__eq + local.set $40 + local.get $39 call $~lib/rt/pure/__release + local.get $40 + else + i32.const 0 end i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 160 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 120 + i32.const 120 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.set $40 + local.get $38 + call $~lib/rt/pure/__release + local.get $40 + local.set $38 + local.get $38 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 162 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 120 + i32.const 920 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.set $39 + local.get $38 + call $~lib/rt/pure/__release + local.get $39 + local.set $38 + local.get $38 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + if (result i32) + local.get $38 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $39 + i32.const 120 + call $~lib/string/String.__eq + local.set $40 + local.get $39 + call $~lib/rt/pure/__release + local.get $40 + else + i32.const 0 + end + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 164 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 2464 + i32.const 2496 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.set $40 + local.get $38 + call $~lib/rt/pure/__release + local.get $40 + local.set $38 + local.get $38 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + if (result i32) + local.get $38 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $40 + i32.const 2464 + call $~lib/string/String.__eq + local.set $39 + local.get $40 + call $~lib/rt/pure/__release + local.get $39 + else + i32.const 0 + end + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 166 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 2464 + i32.const 920 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.set $39 + local.get $38 + call $~lib/rt/pure/__release + local.get $39 + local.set $38 + local.get $38 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 3 + i32.eq + if (result i32) + local.get $38 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $39 + i32.const 408 + call $~lib/string/String.__eq + local.set $40 + local.get $39 + call $~lib/rt/pure/__release + local.get $40 + else + i32.const 0 + end + i32.const 0 + i32.ne + if (result i32) + local.get $38 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $39 + i32.const 1488 + call $~lib/string/String.__eq + local.set $40 + local.get $39 + call $~lib/rt/pure/__release + local.get $40 + else + i32.const 0 + end + i32.const 0 + i32.ne + if (result i32) + local.get $38 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $39 + i32.const 2520 + call $~lib/string/String.__eq + local.set $40 + local.get $39 + call $~lib/rt/pure/__release + local.get $40 + else + i32.const 0 + end + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 72 + i32.const 168 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $38 + call $~lib/rt/pure/__release + i32.const 0 call $~lib/util/number/itoa32 local.tee $38 i32.const 1040 @@ -12327,103 +11970,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 136 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 136 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 136 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 136 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -12456,23 +12079,24 @@ local.get $2 local.get $3 i32.lt_u + i32.eqz + br_if $break|0 + local.get $2 + i32.load + local.set $4 + local.get $4 if - local.get $2 - i32.load - local.set $4 local.get $4 - if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + local.get $1 + call $~lib/rt/pure/__visit end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $continue|0 end + unreachable end ) (func $~lib/array/Array#__visit_impl (; 92 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) @@ -12490,152 +12114,60 @@ (func $~lib/rt/__visit_members (; 96 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $block$4$break - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$9 - block $switch$1$case$8 - block $switch$1$case$7 - block $switch$1$case$6 - block $switch$1$case$5 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - br $block$4$break - unreachable - end - unreachable - end - block - block + block $switch$1$default + block $switch$1$case$9 + block $switch$1$case$8 + block $switch$1$case$7 + block $switch$1$case$6 + block $switch$1$case$5 + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$5 $switch$1$case$6 $switch$1$case$7 $switch$1$case$8 $switch$1$case$9 $switch$1$default end - unreachable - unreachable + return end - unreachable + br $block$4$break end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array<~lib/string/String>#__visit_impl + br $block$4$break end - unreachable - unreachable - end - unreachable - end - block - block local.get $0 local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - unreachable + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break end - unreachable - end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - end - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + br $block$4$break end - return - unreachable + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break end unreachable - unreachable end - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return ) (func $null (; 97 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 2ec361f7..4f375618 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -208,14 +208,12 @@ i32.and local.tee $1 i32.sub - local.set $2 local.get $0 local.get $1 i32.add local.tee $0 i32.const 0 i32.store - local.get $2 i32.const -4 i32.and local.tee $1 @@ -478,7 +476,7 @@ i32.const 1 i32.shl local.set $3 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $3 i32.ge_u @@ -496,8 +494,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -599,13 +596,15 @@ if local.get $0 return + else + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 + unreachable end end i32.const 0 @@ -867,13 +866,15 @@ if local.get $0 return + else + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $continue|0 end - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 + unreachable end end i32.const 0 @@ -1221,7 +1222,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1303,7 +1305,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 3e851935..d5956daa 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -68,14 +68,12 @@ local.get $0 call $~lib/rt/stub/__retain drop - block (result i32) - global.get $~lib/symbol/nextId - local.tee $1 - i32.const 1 - i32.add - global.set $~lib/symbol/nextId - local.get $1 - end + global.get $~lib/symbol/nextId + local.tee $1 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId + local.get $1 local.set $2 local.get $2 i32.eqz @@ -410,36 +408,37 @@ local.get $3 i32.const 32 i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 end + unreachable end end ) @@ -472,16 +471,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -490,16 +487,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/stub/__release - local.get $1 - end + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/stub/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -512,36 +507,34 @@ i32.store offset=20 ) (func $~lib/map/Map<~lib/string/String,usize>#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 3 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 3 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/map/Map<~lib/string/String,usize>#clear local.get $0 ) @@ -550,16 +543,14 @@ (local $2 i32) local.get $0 local.tee $1 - block (result i32) - i32.const 0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - end + i32.const 0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $2 + local.get $1 + i32.load + call $~lib/rt/stub/__release + local.get $2 i32.store local.get $0 i32.const 4 @@ -568,16 +559,14 @@ i32.store offset=4 local.get $0 local.tee $2 - block (result i32) - i32.const 0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/stub/__release - local.get $1 - end + i32.const 0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + local.get $2 + i32.load offset=8 + call $~lib/rt/stub/__release + local.get $1 i32.store offset=8 local.get $0 i32.const 4 @@ -590,36 +579,34 @@ i32.store offset=20 ) (func $~lib/map/Map#constructor (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - block (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 4 - call $~lib/rt/stub/__alloc - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 24 + i32.const 4 + call $~lib/rt/stub/__alloc + call $~lib/rt/stub/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 call $~lib/map/Map#clear local.get $0 ) @@ -645,16 +632,14 @@ i32.ne if block $break|0 - block - i32.const 0 - local.set $2 - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $3 - end - loop $repeat|0 + i32.const 0 + local.set $2 + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $3 + loop $loop|0 local.get $2 local.get $3 i32.lt_u @@ -673,8 +658,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -724,22 +708,23 @@ else i32.const 0 end - if - local.get $4 - i32.const 1 - i32.sub - local.set $4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - local.get $7 - i32.const 2 - i32.add - local.set $7 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $continue|0 end + unreachable end local.get $5 local.set $8 @@ -842,38 +827,39 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + call $~lib/string/String.__eq + else + i32.const 0 + end if local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - call $~lib/string/String.__eq - else - i32.const 0 - end - if - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + local.set $4 + local.get $1 + call $~lib/rt/stub/__release + local.get $4 + return end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 local.set $4 @@ -974,9 +960,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.1 (result i32) - i32.const 12 - end + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -986,9 +970,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add local.set $7 @@ -999,111 +981,104 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load + i32.store + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) local.get $9 i32.load - i32.store - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) - local.get $9 - i32.load - call $~lib/rt/stub/__retain - local.set $11 - local.get $11 - call $~lib/util/hash/hashStr - local.set $12 - local.get $11 - call $~lib/rt/stub/__release - local.get $12 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 - end - local.get $1 - i32.and + call $~lib/rt/stub/__retain local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add + call $~lib/util/hash/hashStr local.set $12 - local.get $10 + local.get $11 + call $~lib/rt/stub/__release local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.4 (result i32) - i32.const 12 + br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/stub/__retain - drop - local.get $9 - call $~lib/rt/stub/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/stub/__retain + drop + local.get $9 + call $~lib/rt/stub/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $11 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/stub/__retain - drop - local.get $10 - call $~lib/rt/stub/__release - end + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $11 + call $~lib/rt/stub/__retain + drop + local.get $10 + call $~lib/rt/stub/__release end + local.get $11 i32.store offset=8 local.get $0 local.get $4 @@ -1183,19 +1158,15 @@ call $~lib/rt/stub/__retain local.set $3 local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - end - block $~lib/map/ENTRY_SIZE<~lib/string/String,usize>|inlined.5 (result i32) - i32.const 12 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 12 i32.mul i32.add local.set $6 @@ -1293,34 +1264,35 @@ block $break|0 loop $continue|0 local.get $3 + i32.eqz + br_if $break|0 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else + i32.const 0 + end if local.get $3 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $3 - i32.load offset=8 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $continue|0 + return end + local.get $3 + i32.load offset=8 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $continue|0 end + unreachable end i32.const 0 ) @@ -1354,9 +1326,7 @@ local.set $4 i32.const 0 local.get $4 - block $~lib/map/ENTRY_SIZE|inlined.1 (result i32) - i32.const 12 - end + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 @@ -1366,9 +1336,7 @@ local.get $6 local.get $0 i32.load offset=16 - block $~lib/map/ENTRY_SIZE|inlined.2 (result i32) - i32.const 12 - end + i32.const 12 i32.mul i32.add local.set $7 @@ -1379,106 +1347,99 @@ local.get $6 local.get $7 i32.ne + i32.eqz + br_if $break|0 + local.get $6 + local.set $9 + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz if - local.get $6 - local.set $9 + local.get $8 + local.set $10 + local.get $10 local.get $9 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $10 - local.get $10 + i32.load + i32.store + local.get $10 + local.get $9 + i32.load offset=4 + i32.store offset=4 + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $9 i32.load - i32.store - local.get $10 - local.get $9 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $9 - i32.load - local.set $11 - local.get $11 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.get $1 - i32.and local.set $11 - local.get $3 local.get $11 - i32.const 4 - i32.mul - i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load - i32.store offset=8 - local.get $12 - local.get $8 - i32.store - local.get $8 - block $~lib/map/ENTRY_SIZE|inlined.3 (result i32) - i32.const 12 - end - i32.add - local.set $8 - end - local.get $6 - block $~lib/map/ENTRY_SIZE|inlined.4 (result i32) - i32.const 12 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 end + local.get $1 + i32.and + local.set $11 + local.get $3 + local.get $11 + i32.const 4 + i32.mul i32.add - local.set $6 - br $continue|0 + local.set $12 + local.get $10 + local.get $12 + i32.load + i32.store offset=8 + local.get $12 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 end + local.get $6 + i32.const 12 + i32.add + local.set $6 + br $continue|0 end + unreachable end local.get $0 local.tee $9 - block (result i32) - local.get $3 - local.tee $10 - local.get $9 - i32.load - local.tee $9 - i32.ne - if - local.get $10 - call $~lib/rt/stub/__retain - drop - local.get $9 - call $~lib/rt/stub/__release - end + local.get $3 + local.tee $10 + local.get $9 + i32.load + local.tee $9 + i32.ne + if local.get $10 + call $~lib/rt/stub/__retain + drop + local.get $9 + call $~lib/rt/stub/__release end + local.get $10 i32.store local.get $0 local.get $1 i32.store offset=4 local.get $0 local.tee $10 - block (result i32) - local.get $5 - local.tee $11 - local.get $10 - i32.load offset=8 - local.tee $10 - i32.ne - if - local.get $11 - call $~lib/rt/stub/__retain - drop - local.get $10 - call $~lib/rt/stub/__release - end + local.get $5 + local.tee $11 + local.get $10 + i32.load offset=8 + local.tee $10 + i32.ne + if local.get $11 + call $~lib/rt/stub/__retain + drop + local.get $10 + call $~lib/rt/stub/__release end + local.get $11 i32.store offset=8 local.get $0 local.get $4 @@ -1564,19 +1525,15 @@ call $~lib/rt/stub/__retain local.set $3 local.get $3 - block (result i32) - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - end - block $~lib/map/ENTRY_SIZE|inlined.5 (result i32) - i32.const 12 - end + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + i32.store offset=16 + local.get $6 + i32.const 12 i32.mul i32.add local.set $5 @@ -1625,23 +1582,19 @@ global.get $~lib/symbol/stringToId i32.eqz if - block (result i32) - i32.const 0 - call $~lib/map/Map<~lib/string/String,usize>#constructor - local.set $1 - global.get $~lib/symbol/stringToId - call $~lib/rt/stub/__release - local.get $1 - end + i32.const 0 + call $~lib/map/Map<~lib/string/String,usize>#constructor + local.set $1 + global.get $~lib/symbol/stringToId + call $~lib/rt/stub/__release + local.get $1 global.set $~lib/symbol/stringToId - block (result i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $1 - global.get $~lib/symbol/idToString - call $~lib/rt/stub/__release - local.get $1 - end + i32.const 0 + call $~lib/map/Map#constructor + local.set $1 + global.get $~lib/symbol/idToString + call $~lib/rt/stub/__release + local.get $1 global.set $~lib/symbol/idToString else global.get $~lib/symbol/stringToId @@ -1658,14 +1611,12 @@ return end end - block (result i32) - global.get $~lib/symbol/nextId - local.tee $1 - i32.const 1 - i32.add - global.set $~lib/symbol/nextId - local.get $1 - end + global.get $~lib/symbol/nextId + local.tee $1 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId + local.get $1 local.set $2 local.get $2 i32.eqz @@ -1724,10 +1675,6 @@ local.tee $2 else unreachable - call $~lib/rt/stub/__retain - unreachable - local.tee $4 - unreachable end call $~lib/rt/stub/__retain ) @@ -1765,32 +1712,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1803,50 +1747,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1911,22 +1856,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1958,338 +1899,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2297,15 +1978,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2313,15 +1994,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2329,10 +2010,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2348,306 +2029,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2655,148 +2499,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2804,76 +2616,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2881,40 +2677,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2922,22 +2710,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2998,94 +2782,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -3103,54 +2882,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -3162,9 +2900,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3183,21 +2965,19 @@ i32.const 0 i32.eq if - block (result i32) - i32.const 656 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne - if - local.get $2 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end + i32.const 656 + local.tee $2 + local.get $1 + local.tee $3 + i32.ne + if local.get $2 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release end + local.get $2 local.set $1 end local.get $0 @@ -3342,53 +3122,7 @@ br_if $case10|0 br $case11|0 end - block - block (result i32) - i32.const 216 - local.tee $3 - local.get $2 - local.tee $4 - i32.ne - if - local.get $3 - call $~lib/rt/stub/__retain - drop - local.get $4 - call $~lib/rt/stub/__release - end - local.get $3 - end - local.set $2 - br $break|0 - unreachable - end - unreachable - end - block - block (result i32) - i32.const 256 - local.tee $4 - local.get $2 - local.tee $3 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - drop - local.get $3 - call $~lib/rt/stub/__release - end - local.get $4 - end - local.set $2 - br $break|0 - unreachable - end - unreachable - end - block - block (result i32) - i32.const 312 + i32.const 216 local.tee $3 local.get $2 local.tee $4 @@ -3401,16 +3135,10 @@ call $~lib/rt/stub/__release end local.get $3 + local.set $2 + br $break|0 end - local.set $2 - br $break|0 - unreachable - end - unreachable - end - block - block (result i32) - i32.const 344 + i32.const 256 local.tee $4 local.get $2 local.tee $3 @@ -3423,16 +3151,10 @@ call $~lib/rt/stub/__release end local.get $4 + local.set $2 + br $break|0 end - local.set $2 - br $break|0 - unreachable - end - unreachable - end - block - block (result i32) - i32.const 376 + i32.const 312 local.tee $3 local.get $2 local.tee $4 @@ -3445,16 +3167,10 @@ call $~lib/rt/stub/__release end local.get $3 + local.set $2 + br $break|0 end - local.set $2 - br $break|0 - unreachable - end - unreachable - end - block - block (result i32) - i32.const 408 + i32.const 344 local.tee $4 local.get $2 local.tee $3 @@ -3467,16 +3183,10 @@ call $~lib/rt/stub/__release end local.get $4 + local.set $2 + br $break|0 end - local.set $2 - br $break|0 - unreachable - end - unreachable - end - block - block (result i32) - i32.const 440 + i32.const 376 local.tee $3 local.get $2 local.tee $4 @@ -3489,16 +3199,10 @@ call $~lib/rt/stub/__release end local.get $3 + local.set $2 + br $break|0 end - local.set $2 - br $break|0 - unreachable - end - unreachable - end - block - block (result i32) - i32.const 472 + i32.const 408 local.tee $4 local.get $2 local.tee $3 @@ -3511,16 +3215,10 @@ call $~lib/rt/stub/__release end local.get $4 + local.set $2 + br $break|0 end - local.set $2 - br $break|0 - unreachable - end - unreachable - end - block - block (result i32) - i32.const 504 + i32.const 440 local.tee $3 local.get $2 local.tee $4 @@ -3533,16 +3231,10 @@ call $~lib/rt/stub/__release end local.get $3 + local.set $2 + br $break|0 end - local.set $2 - br $break|0 - unreachable - end - unreachable - end - block - block (result i32) - i32.const 544 + i32.const 472 local.tee $4 local.get $2 local.tee $3 @@ -3555,16 +3247,10 @@ call $~lib/rt/stub/__release end local.get $4 + local.set $2 + br $break|0 end - local.set $2 - br $break|0 - unreachable - end - unreachable - end - block - block (result i32) - i32.const 584 + i32.const 504 local.tee $3 local.get $2 local.tee $4 @@ -3577,40 +3263,62 @@ call $~lib/rt/stub/__release end local.get $3 + local.set $2 + br $break|0 end + i32.const 544 + local.tee $4 + local.get $2 + local.tee $3 + i32.ne + if + local.get $4 + call $~lib/rt/stub/__retain + drop + local.get $3 + call $~lib/rt/stub/__release + end + local.get $4 local.set $2 br $break|0 - unreachable end - unreachable - end - block - global.get $~lib/symbol/idToString - i32.const 0 + i32.const 584 + local.tee $3 + local.get $2 + local.tee $4 i32.ne - if (result i32) - global.get $~lib/symbol/idToString - local.get $1 - call $~lib/map/Map#has - else - i32.const 0 - end if - block (result i32) - global.get $~lib/symbol/idToString - local.get $1 - call $~lib/map/Map#get - local.set $4 - local.get $2 - call $~lib/rt/stub/__release - local.get $4 - end - local.set $2 + local.get $3 + call $~lib/rt/stub/__retain + drop + local.get $4 + call $~lib/rt/stub/__release end + local.get $3 + local.set $2 br $break|0 - unreachable end - unreachable + global.get $~lib/symbol/idToString + i32.const 0 + i32.ne + if (result i32) + global.get $~lib/symbol/idToString + local.get $1 + call $~lib/map/Map#has + else + i32.const 0 + end + if + global.get $~lib/symbol/idToString + local.get $1 + call $~lib/map/Map#get + local.set $4 + local.get $2 + call $~lib/rt/stub/__release + local.get $4 + local.set $2 + end + br $break|0 end i32.const 624 local.get $2 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 8e47af5d..913493a6 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -682,7 +682,7 @@ i32.store i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 23 @@ -697,7 +697,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $1 i32.const 16 @@ -718,14 +718,14 @@ i32.const 1 i32.add local.set $1 - br $repeat|1 + br $loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end i32.const 1824 @@ -1236,7 +1236,8 @@ loop $continue|1 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $1 @@ -1318,7 +1319,8 @@ loop $continue|4 local.get $3 i32.const 8 - i32.ge_u + i32.lt_u + i32.eqz if local.get $0 local.get $3 @@ -2303,7 +2305,6 @@ call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $1 - local.set $5 local.get $4 i32.load local.tee $2 @@ -2318,7 +2319,6 @@ local.get $6 call $~lib/rt/pure/__release end - local.get $5 local.get $2 i32.store local.get $1 @@ -2429,7 +2429,6 @@ call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $1 - local.set $5 local.get $4 i32.load local.tee $2 @@ -2444,7 +2443,6 @@ local.get $6 call $~lib/rt/pure/__release end - local.get $5 local.get $2 i32.store local.get $1 @@ -2473,7 +2471,7 @@ (local $6 f64) (local $7 i32) block $break|0 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $1 i32.ge_s @@ -2490,43 +2488,42 @@ i32.sub local.set $4 loop $continue|1 - local.get $4 - i32.const 0 - i32.ge_s - if - block $break|1 - local.get $4 - i32.const 3 - i32.shl - local.get $0 - i32.add - f64.load - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $5 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$idd) - i32.const 0 - i32.ge_s - br_if $break|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.const 1 - i32.add - i32.const 3 - i32.shl - local.get $0 - i32.add - local.get $6 - f64.store - br $continue|1 - end + block $break|1 + local.get $4 + i32.const 0 + i32.lt_s + br_if $break|1 + local.get $4 + i32.const 3 + i32.shl + local.get $0 + i32.add + f64.load + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$idd) + i32.const 0 + i32.ge_s + br_if $break|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + i32.const 1 + i32.add + i32.const 3 + i32.shl + local.get $0 + i32.add + local.get $6 + f64.store + br $continue|1 end end local.get $4 @@ -2542,8 +2539,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -2620,7 +2616,6 @@ i32.and local.tee $2 i32.sub - local.set $3 local.get $0 local.get $2 i32.add @@ -2632,7 +2627,6 @@ i32.mul local.tee $0 i32.store - local.get $3 i32.const -4 i32.and local.tee $3 @@ -2740,7 +2734,8 @@ loop $continue|0 local.get $2 i32.const 32 - i32.ge_u + i32.lt_u + i32.eqz if local.get $1 local.get $4 @@ -2798,7 +2793,7 @@ i32.const 1 i32.sub local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $4 i32.const 0 @@ -2826,7 +2821,8 @@ i32.shr_u i32.const 1 i32.and - i32.eq + i32.ne + i32.eqz if local.get $3 i32.const 1 @@ -2897,14 +2893,14 @@ i32.const 1 i32.sub local.set $4 - br $repeat|0 + br $loop|0 end end local.get $1 i32.const 1 i32.sub local.set $4 - loop $repeat|2 + loop $loop|2 block $break|2 local.get $4 i32.const 2 @@ -2948,7 +2944,8 @@ i32.add local.tee $1 local.get $4 - i32.lt_s + i32.ge_s + i32.eqz if local.get $1 local.set $3 @@ -3018,7 +3015,7 @@ i32.const 1 i32.sub local.set $4 - br $repeat|2 + br $loop|2 end end local.get $6 @@ -3384,7 +3381,7 @@ local.get $0 i32.load offset=8 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $3 i32.lt_s @@ -3401,7 +3398,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end end local.get $0 @@ -3482,7 +3479,6 @@ call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $1 - local.set $5 local.get $1 i32.load local.tee $6 @@ -3497,7 +3493,6 @@ local.get $6 call $~lib/rt/pure/__release end - local.get $5 local.get $2 i32.store local.get $1 @@ -3573,7 +3568,7 @@ select end local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $1 i32.ge_s @@ -3590,7 +3585,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $4 @@ -3637,7 +3632,7 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length local.set $3 - loop $repeat|0 + loop $loop|0 local.get $2 local.get $3 i32.lt_s @@ -3654,7 +3649,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 + br $loop|0 end end local.get $0 @@ -3695,7 +3690,7 @@ local.get $1 i32.load offset=8 local.set $4 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $4 i32.lt_s @@ -3715,7 +3710,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -3795,7 +3790,7 @@ local.get $2 i32.load offset=8 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $5 i32.lt_s @@ -3816,7 +3811,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -3940,7 +3935,7 @@ local.get $2 call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $4 i32.lt_s @@ -3962,7 +3957,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -4046,7 +4041,7 @@ local.get $2 call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $4 i32.lt_s @@ -4068,7 +4063,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -4128,7 +4123,7 @@ local.get $3 call $~lib/typedarray/Int32Array#get:length local.set $5 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $5 i32.lt_s @@ -4151,7 +4146,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -4305,7 +4300,7 @@ local.get $3 call $~lib/typedarray/Int64Array#get:length local.set $5 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $5 i32.lt_s @@ -4328,7 +4323,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -4482,7 +4477,7 @@ local.get $2 call $~lib/typedarray/Int32Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $4 i32.lt_s @@ -4504,7 +4499,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -4572,7 +4567,7 @@ local.get $2 call $~lib/typedarray/Int64Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $4 i32.lt_s @@ -4594,7 +4589,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -4651,7 +4646,7 @@ i32.const 1 i32.sub local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 0 i32.ge_s @@ -4671,7 +4666,7 @@ i32.const 1 i32.sub local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -4730,7 +4725,7 @@ i32.const 1 i32.sub local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 0 i32.ge_s @@ -4751,7 +4746,7 @@ i32.const 1 i32.sub local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -4850,7 +4845,7 @@ i32.const 1 i32.sub local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 0 i32.ge_s @@ -4872,7 +4867,7 @@ i32.const 1 i32.sub local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -4931,7 +4926,7 @@ i32.const 1 i32.sub local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 0 i32.ge_s @@ -4953,7 +4948,7 @@ i32.const 1 i32.sub local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -5012,7 +5007,7 @@ i32.const 1 i32.sub local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 0 i32.ge_s @@ -5035,7 +5030,7 @@ i32.const 1 i32.sub local.set $0 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -5130,7 +5125,7 @@ i32.const 1 i32.sub local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 0 i32.ge_s @@ -5153,7 +5148,7 @@ i32.const 1 i32.sub local.set $0 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -5248,7 +5243,7 @@ i32.const 1 i32.sub local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 0 i32.ge_s @@ -5270,7 +5265,7 @@ i32.const 1 i32.sub local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -5327,7 +5322,7 @@ i32.const 1 i32.sub local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 i32.const 0 i32.ge_s @@ -5349,7 +5344,7 @@ i32.const 1 i32.sub local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -5426,7 +5421,7 @@ local.set $6 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $2 i32.lt_s @@ -5448,7 +5443,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -5549,7 +5544,7 @@ local.set $6 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $2 i32.lt_s @@ -5571,7 +5566,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -5691,7 +5686,7 @@ local.set $6 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $2 i32.lt_s @@ -5713,7 +5708,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -5816,7 +5811,7 @@ local.set $6 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $2 i32.lt_s @@ -5843,7 +5838,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -5969,7 +5964,7 @@ local.set $6 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $2 i32.lt_s @@ -5996,7 +5991,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -6122,7 +6117,7 @@ local.set $6 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $2 i32.lt_s @@ -6149,7 +6144,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -6252,7 +6247,7 @@ local.set $6 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $2 i32.lt_s @@ -6279,7 +6274,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -6415,7 +6410,7 @@ local.set $6 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $2 i32.lt_s @@ -6442,7 +6437,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -6568,7 +6563,7 @@ local.set $6 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $2 i32.lt_s @@ -6595,7 +6590,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -6731,7 +6726,7 @@ local.set $6 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $2 i32.lt_s @@ -6758,7 +6753,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -6894,7 +6889,7 @@ local.set $6 i32.const 0 local.set $0 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $2 i32.lt_s @@ -6921,7 +6916,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -7025,7 +7020,7 @@ local.get $2 i32.load offset=8 local.set $4 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $4 i32.lt_s @@ -7050,7 +7045,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -7133,7 +7128,7 @@ local.get $2 i32.load offset=8 local.set $4 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $4 i32.lt_s @@ -7158,7 +7153,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -7289,7 +7284,7 @@ local.get $2 call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -7317,7 +7312,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -7400,7 +7395,7 @@ local.get $2 call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -7428,7 +7423,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -7510,7 +7505,7 @@ local.get $2 call $~lib/typedarray/Int32Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -7538,7 +7533,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -7676,7 +7671,7 @@ local.get $2 call $~lib/typedarray/Int64Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -7704,7 +7699,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -7843,7 +7838,7 @@ local.get $2 call $~lib/typedarray/Int32Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -7871,7 +7866,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -7963,7 +7958,7 @@ local.get $2 call $~lib/typedarray/Int64Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -7991,7 +7986,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -8073,7 +8068,7 @@ i32.load offset=8 local.set $4 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $4 i32.lt_s @@ -8097,7 +8092,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -8186,7 +8181,7 @@ i32.load offset=8 local.set $4 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $4 i32.lt_s @@ -8210,7 +8205,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -8337,7 +8332,7 @@ call $~lib/typedarray/Int16Array#get:length local.set $4 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -8364,7 +8359,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -8453,7 +8448,7 @@ call $~lib/typedarray/Int16Array#get:length local.set $4 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -8480,7 +8475,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -8557,7 +8552,7 @@ call $~lib/typedarray/Int32Array#get:length local.set $4 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -8584,7 +8579,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -8721,7 +8716,7 @@ call $~lib/typedarray/Int64Array#get:length local.set $4 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -8748,7 +8743,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -8885,7 +8880,7 @@ call $~lib/typedarray/Int32Array#get:length local.set $4 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -8912,7 +8907,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -8999,7 +8994,7 @@ call $~lib/typedarray/Int64Array#get:length local.set $4 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -9026,7 +9021,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end unreachable end @@ -9110,10 +9105,8 @@ i32.const 2 i32.rem_s i32.eqz - local.set $0 local.get $2 call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/typedarray/Int8Array#every (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -9130,7 +9123,7 @@ local.get $2 i32.load offset=8 local.set $4 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $4 i32.lt_s @@ -9150,7 +9143,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 else local.get $2 call $~lib/rt/pure/__release @@ -9238,7 +9231,7 @@ local.get $2 i32.load offset=8 local.set $4 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $4 i32.lt_s @@ -9258,7 +9251,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 else local.get $2 call $~lib/rt/pure/__release @@ -9379,10 +9372,8 @@ i32.const 2 i32.rem_s i32.eqz - local.set $0 local.get $2 call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/typedarray/Int16Array#every (; 211 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -9399,7 +9390,7 @@ local.get $2 call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -9428,7 +9419,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -9498,7 +9489,7 @@ local.get $2 call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -9527,7 +9518,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -9590,10 +9581,8 @@ i32.const 2 i32.rem_s i32.eqz - local.set $0 local.get $2 call $~lib/rt/pure/__release - local.get $0 ) (func $~lib/typedarray/Int32Array#every (; 216 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -9610,7 +9599,7 @@ local.get $2 call $~lib/typedarray/Int32Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -9639,7 +9628,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -9750,10 +9739,8 @@ i64.rem_s i64.const 0 i64.eq - local.set $1 local.get $2 call $~lib/rt/pure/__release - local.get $1 ) (func $~lib/typedarray/Int64Array#every (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -9770,7 +9757,7 @@ local.get $2 call $~lib/typedarray/Int64Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -9799,7 +9786,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -9863,10 +9850,8 @@ i64.rem_u i64.const 0 i64.eq - local.set $1 local.get $2 call $~lib/rt/pure/__release - local.get $1 ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> (; 223 ;) (type $FUNCSIG$v) (local $0 i32) @@ -10072,10 +10057,8 @@ call $~lib/math/NativeMathf.mod f32.const 0 f32.eq - local.set $1 local.get $2 call $~lib/rt/pure/__release - local.get $1 ) (func $~lib/typedarray/Float32Array#every (; 226 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -10092,7 +10075,7 @@ local.get $2 call $~lib/typedarray/Int32Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -10121,7 +10104,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -10340,10 +10323,8 @@ call $~lib/math/NativeMath.mod f64.const 0 f64.eq - local.set $1 local.get $2 call $~lib/rt/pure/__release - local.get $1 ) (func $~lib/typedarray/Float64Array#every (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -10360,7 +10341,7 @@ local.get $2 call $~lib/typedarray/Int64Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -10389,7 +10370,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -10508,7 +10489,7 @@ local.get $1 i32.load offset=8 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $3 i32.lt_s @@ -10526,7 +10507,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -10605,7 +10586,7 @@ local.get $2 i32.load offset=8 local.set $4 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $4 i32.lt_s @@ -10624,7 +10605,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -10802,7 +10783,7 @@ local.get $1 call $~lib/typedarray/Int16Array#get:length local.set $3 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $3 i32.lt_s @@ -10822,7 +10803,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -10901,7 +10882,7 @@ local.get $1 call $~lib/typedarray/Int16Array#get:length local.set $3 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $3 i32.lt_s @@ -10921,7 +10902,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -11040,7 +11021,7 @@ local.get $2 call $~lib/typedarray/Int32Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -11062,7 +11043,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -11225,7 +11206,7 @@ local.get $2 call $~lib/typedarray/Int64Array#get:length local.set $4 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $4 @@ -11247,7 +11228,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -11416,7 +11397,7 @@ local.get $1 call $~lib/typedarray/Int32Array#get:length local.set $3 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $3 i32.lt_s @@ -11436,7 +11417,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -11553,7 +11534,7 @@ local.get $1 call $~lib/typedarray/Int64Array#get:length local.set $3 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $3 i32.lt_s @@ -11573,7 +11554,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $1 @@ -11647,7 +11628,7 @@ i32.const 1 i32.sub local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $1 i32.lt_s @@ -11676,7 +11657,7 @@ i32.const 1 i32.sub local.set $1 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -11702,7 +11683,7 @@ local.tee $5 call $~lib/rt/pure/__retain local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 9 @@ -11732,7 +11713,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -11740,7 +11721,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 i32.const 9 @@ -11771,7 +11752,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -11867,7 +11848,7 @@ i32.const 1 i32.sub local.set $1 - loop $repeat|0 + loop $loop|0 local.get $0 local.get $1 i32.lt_s @@ -11896,7 +11877,7 @@ i32.const 1 i32.sub local.set $1 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -11936,7 +11917,6 @@ call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 - local.set $5 local.get $2 i32.load local.tee $1 @@ -11951,7 +11931,6 @@ local.get $6 call $~lib/rt/pure/__release end - local.get $5 local.get $1 i32.store local.get $0 @@ -11990,7 +11969,7 @@ local.tee $5 call $~lib/rt/pure/__retain local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 9 @@ -12016,7 +11995,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -12024,7 +12003,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 i32.const 9 @@ -12053,7 +12032,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -12164,7 +12143,6 @@ call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $0 - local.set $5 local.get $2 i32.load local.tee $1 @@ -12179,7 +12157,6 @@ local.get $6 call $~lib/rt/pure/__release end - local.get $5 local.get $1 i32.store local.get $0 @@ -12218,7 +12195,7 @@ local.tee $5 call $~lib/rt/pure/__retain local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 9 @@ -12244,7 +12221,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -12252,7 +12229,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 i32.const 9 @@ -12281,7 +12258,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -12375,7 +12352,7 @@ i32.const 1 i32.sub local.set $1 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $1 @@ -12409,7 +12386,7 @@ i32.const 1 i32.sub local.set $1 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -12450,7 +12427,6 @@ call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $1 - local.set $5 local.get $1 i32.load local.tee $6 @@ -12465,7 +12441,6 @@ local.get $6 call $~lib/rt/pure/__release end - local.get $5 local.get $3 i32.store local.get $1 @@ -12508,7 +12483,7 @@ local.tee $5 call $~lib/rt/pure/__retain local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 9 @@ -12538,7 +12513,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -12546,7 +12521,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 i32.const 9 @@ -12577,7 +12552,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -12671,7 +12646,7 @@ i32.const 1 i32.sub local.set $1 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $1 @@ -12705,7 +12680,7 @@ i32.const 1 i32.sub local.set $1 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -12746,7 +12721,6 @@ call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $1 - local.set $5 local.get $1 i32.load local.tee $6 @@ -12761,7 +12735,6 @@ local.get $6 call $~lib/rt/pure/__release end - local.get $5 local.get $3 i32.store local.get $1 @@ -12804,7 +12777,7 @@ local.tee $5 call $~lib/rt/pure/__retain local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 9 @@ -12830,7 +12803,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -12838,7 +12811,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 i32.const 9 @@ -12867,7 +12840,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -12961,7 +12934,7 @@ i32.const 1 i32.sub local.set $1 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $1 @@ -12995,7 +12968,7 @@ i32.const 1 i32.sub local.set $1 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -13021,7 +12994,7 @@ local.tee $5 call $~lib/rt/pure/__retain local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 9 @@ -13043,7 +13016,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -13051,7 +13024,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 i32.const 9 @@ -13078,7 +13051,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -13192,7 +13165,6 @@ call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $1 - local.set $5 local.get $1 i32.load local.tee $6 @@ -13207,7 +13179,6 @@ local.get $6 call $~lib/rt/pure/__release end - local.get $5 local.get $3 i32.store local.get $1 @@ -13250,7 +13221,7 @@ local.tee $5 call $~lib/rt/pure/__retain local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 9 @@ -13272,7 +13243,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -13280,7 +13251,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 i32.const 9 @@ -13307,7 +13278,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -13401,7 +13372,7 @@ i32.const 1 i32.sub local.set $1 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $1 @@ -13435,7 +13406,7 @@ i32.const 1 i32.sub local.set $1 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -13476,7 +13447,6 @@ call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $1 - local.set $5 local.get $1 i32.load local.tee $6 @@ -13491,7 +13461,6 @@ local.get $6 call $~lib/rt/pure/__release end - local.get $5 local.get $3 i32.store local.get $1 @@ -13534,7 +13503,7 @@ local.tee $5 call $~lib/rt/pure/__retain local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 9 @@ -13558,7 +13527,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -13566,7 +13535,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 i32.const 9 @@ -13594,7 +13563,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -13706,7 +13675,6 @@ call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $1 - local.set $5 local.get $1 i32.load local.tee $6 @@ -13721,7 +13689,6 @@ local.get $6 call $~lib/rt/pure/__release end - local.get $5 local.get $3 i32.store local.get $1 @@ -13764,7 +13731,7 @@ local.tee $5 call $~lib/rt/pure/__retain local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 9 @@ -13788,7 +13755,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -13796,7 +13763,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 i32.const 9 @@ -13824,7 +13791,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -13918,7 +13885,7 @@ i32.const 1 i32.sub local.set $1 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $1 @@ -13952,7 +13919,7 @@ i32.const 1 i32.sub local.set $1 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -13993,7 +13960,6 @@ call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain local.tee $1 - local.set $5 local.get $1 i32.load local.tee $6 @@ -14008,7 +13974,6 @@ local.get $6 call $~lib/rt/pure/__release end - local.get $5 local.get $3 i32.store local.get $1 @@ -14051,7 +14016,7 @@ local.tee $5 call $~lib/rt/pure/__retain local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 9 @@ -14075,7 +14040,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -14083,7 +14048,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 i32.const 9 @@ -14111,7 +14076,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end @@ -14205,7 +14170,7 @@ i32.const 1 i32.sub local.set $1 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 local.get $1 @@ -14239,7 +14204,7 @@ i32.const 1 i32.sub local.set $1 - br $repeat|0 + br $loop|0 end end local.get $3 @@ -14265,7 +14230,7 @@ local.tee $5 call $~lib/rt/pure/__retain local.set $3 - loop $repeat|0 + loop $loop|0 block $break|0 local.get $0 i32.const 9 @@ -14289,7 +14254,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|0 + br $loop|0 end end local.get $2 @@ -14297,7 +14262,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $repeat|1 + loop $loop|1 block $break|1 local.get $0 i32.const 9 @@ -14325,7 +14290,7 @@ i32.const 1 i32.add local.set $0 - br $repeat|1 + br $loop|1 end unreachable end diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 63a7cce1..911996f6 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -228,85 +228,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 - local.set $9 - local.get $7 - local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl - local.get $9 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=96 - end + local.get $8 + i32.store offset=96 local.get $7 i32.eqz if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -362,20 +354,18 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -413,20 +403,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -437,14 +425,12 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load @@ -597,24 +583,22 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -628,27 +612,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -657,36 +639,32 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) (func $~lib/rt/tlsf/addMemory (; 7 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -724,12 +702,10 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 @@ -826,15 +802,13 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock @@ -894,75 +868,68 @@ local.get $3 i32.const 0 i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end + local.get $3 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 23 i32.lt_u i32.eqz br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end + local.get $3 + local.set $7 + local.get $5 + local.set $6 + i32.const 0 + local.set $4 + local.get $7 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=4 block $break|1 i32.const 0 local.set $7 - loop $repeat|1 + loop $loop|1 local.get $7 i32.const 16 i32.lt_u i32.eqz br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end + local.get $3 + local.set $9 + local.get $5 + local.set $8 + local.get $7 + local.set $6 + i32.const 0 + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -970,8 +937,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -1101,18 +1067,16 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1145,18 +1109,16 @@ local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 local.get $6 i32.eqz @@ -1168,29 +1130,6 @@ call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1208,7 +1147,26 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 @@ -1329,34 +1287,30 @@ i32.xor i32.and i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add i32.load i32.const 2 i32.const -1 @@ -1582,32 +1536,29 @@ else i32.const 0 end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $continue|0 end + unreachable end local.get $0 i32.const 3 @@ -1620,50 +1571,51 @@ local.get $2 i32.const 16 i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|1 end + unreachable end local.get $2 i32.const 8 @@ -1728,22 +1680,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1775,338 +1723,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - if + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + i32.eqz + br_if $break|3 local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2114,15 +1802,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2130,15 +1818,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2146,10 +1834,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2165,306 +1853,469 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $continue|3 end + unreachable end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|4 + end + unreachable end br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + i32.eqz + br_if $break|5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $continue|5 + end unreachable end - unreachable + br $break|2 end end local.get $2 i32.const 16 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2472,148 +2323,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2621,76 +2440,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2698,40 +2501,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2739,22 +2534,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2815,94 +2606,89 @@ local.get $5 i32.const 7 i32.and + i32.eqz + br_if $break|0 + local.get $3 + i32.eqz if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + br $continue|0 end + unreachable end block $break|1 loop $continue|1 local.get $3 i32.const 8 i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $continue|1 end + unreachable end end block $break|2 loop $continue|2 local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end + i32.eqz + br_if $break|2 + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + local.get $4 + local.tee $6 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $continue|2 end + unreachable end else local.get $4 @@ -2920,54 +2706,13 @@ i32.add i32.const 7 i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + i32.eqz + br_if $break|3 local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -2979,9 +2724,53 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $continue|3 end + unreachable end + block $break|4 + loop $continue|4 + local.get $3 + i32.const 8 + i32.ge_u + i32.eqz + br_if $break|4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $continue|4 + end + unreachable + end + end + block $break|5 + loop $continue|5 + local.get $3 + i32.eqz + br_if $break|5 + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + unreachable end end end @@ -3240,44 +3029,40 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 - block (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/tlsf/__alloc - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 + local.get $0 + i32.eqz + if + i32.const 12 + i32.const 2 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 end + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 local.tee $4 - block (result i32) - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $4 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - drop - local.get $4 - call $~lib/rt/pure/__release - end + local.get $3 + local.tee $5 + local.get $4 + i32.load + local.tee $4 + i32.ne + if local.get $5 + call $~lib/rt/pure/__retain + drop + local.get $4 + call $~lib/rt/pure/__release end + local.get $5 i32.store local.get $0 local.get $3 @@ -4195,23 +3980,21 @@ local.set $7 local.get $7 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $5 + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $9 i32.store local.get $7 local.get $5 @@ -4342,23 +4125,21 @@ local.set $7 local.get $7 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $5 + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $9 i32.store local.get $7 local.get $5 @@ -4390,7 +4171,7 @@ block $break|0 i32.const 0 local.set $3 - loop $repeat|0 + loop $loop|0 local.get $3 local.get $1 i32.lt_s @@ -4412,47 +4193,44 @@ local.get $5 i32.const 0 i32.ge_s + i32.eqz + br_if $break|1 + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $6 + local.get $2 + call_indirect (type $FUNCSIG$idd) + i32.const 0 + i32.lt_s if local.get $0 local.get $5 + local.tee $7 + i32.const 1 + i32.sub + local.set $5 + local.get $7 + i32.const 1 + i32.add i32.const 3 i32.shl i32.add - f64.load - local.set $6 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end - i32.const 0 - i32.lt_s - if - local.get $0 - block (result i32) - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - end - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - else - br $break|1 - end - br $continue|1 + local.get $6 + f64.store + else + br $break|1 end + br $continue|1 end + unreachable end local.get $0 local.get $5 @@ -4467,8 +4245,7 @@ i32.const 1 i32.add local.set $3 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -4703,36 +4480,37 @@ local.get $3 i32.const 32 i32.ge_u - if - local.get $5 - local.get $8 - i64.store - local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store - local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store - local.get $3 - i32.const 32 - i32.sub - local.set $3 - local.get $5 - i32.const 32 - i32.add - local.set $5 - br $continue|0 - end + i32.eqz + br_if $break|0 + local.get $5 + local.get $8 + i64.store + local.get $5 + i32.const 8 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 16 + i32.add + local.get $8 + i64.store + local.get $5 + i32.const 24 + i32.add + local.get $8 + i64.store + local.get $3 + i32.const 32 + i32.sub + local.set $3 + local.get $5 + i32.const 32 + i32.add + local.set $5 + br $continue|0 end + unreachable end end ) @@ -4766,7 +4544,7 @@ i32.const 1 i32.sub local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 0 i32.gt_s @@ -4796,14 +4574,15 @@ i32.const 1 i32.and i32.eq - if - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|1 - end + i32.eqz + br_if $break|1 + local.get $6 + i32.const 1 + i32.shr_s + local.set $6 + br $continue|1 end + unreachable end local.get $6 i32.const 1 @@ -4823,14 +4602,12 @@ i32.add f64.load local.set $9 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $8 - local.get $9 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end + i32.const 2 + global.set $~lib/argc + local.get $8 + local.get $9 + local.get $2 + call_indirect (type $FUNCSIG$idd) i32.const 0 i32.lt_s if @@ -4875,8 +4652,7 @@ i32.const 1 i32.sub local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -4885,7 +4661,7 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|2 + loop $loop|2 local.get $7 i32.const 2 i32.ge_s @@ -4934,87 +4710,86 @@ local.tee $5 local.get $7 i32.lt_s - if - local.get $5 - local.set $6 - br $continue|3 - end + i32.eqz + br_if $break|3 + local.get $5 + local.set $6 + br $continue|3 end + unreachable end block $break|4 loop $continue|4 local.get $6 i32.const 0 i32.gt_s + i32.eqz + br_if $break|4 + local.get $0 + f64.load + local.set $9 + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + i32.const 2 + global.set $~lib/argc + local.get $9 + local.get $8 + local.get $2 + call_indirect (type $FUNCSIG$idd) + i32.const 0 + i32.lt_s if - local.get $0 - f64.load - local.set $9 + local.get $4 + local.get $6 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $6 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $6 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store local.get $0 local.get $6 i32.const 3 i32.shl i32.add - f64.load - local.set $8 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $9 - local.get $8 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $6 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $6 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - local.get $9 - f64.store - local.get $0 - local.get $8 - f64.store - end - local.get $6 - i32.const 1 - i32.shr_s - local.set $6 - br $continue|4 + local.get $9 + f64.store + local.get $0 + local.get $8 + f64.store end + local.get $6 + i32.const 1 + i32.shr_s + local.set $6 + br $continue|4 end + unreachable end local.get $7 i32.const 1 i32.sub local.set $7 - br $repeat|2 - unreachable + br $loop|2 end unreachable end @@ -5074,14 +4849,12 @@ local.get $5 f64.load local.set $7 - block (result i32) - i32.const 2 - global.set $~lib/argc - local.get $6 - local.get $7 - local.get $2 - call_indirect (type $FUNCSIG$idd) - end + i32.const 2 + global.set $~lib/argc + local.get $6 + local.get $7 + local.get $2 + call_indirect (type $FUNCSIG$idd) i32.const 0 i32.lt_s if @@ -5099,27 +4872,25 @@ local.get $8 br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 end - block $~lib/util/sort/SORT|inlined.0 - local.get $5 - local.set $10 - local.get $4 - local.set $9 - local.get $2 - local.set $8 + local.get $5 + local.set $10 + local.get $4 + local.set $9 + local.get $2 + local.set $8 + local.get $9 + i32.const 256 + i32.lt_s + if + local.get $10 local.get $9 - i32.const 256 - i32.lt_s - if - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/sort/insertionSort - else - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/sort/weakHeapSort - end + local.get $8 + call $~lib/util/sort/insertionSort + else + local.get $10 + local.get $9 + local.get $8 + call $~lib/util/sort/weakHeapSort end local.get $3 end @@ -5474,14 +5245,12 @@ return end block $break|0 - block - i32.const 0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - end - loop $repeat|0 + i32.const 0 + local.set $2 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + loop $loop|0 local.get $2 local.get $3 i32.lt_s @@ -5508,8 +5277,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -5605,23 +5373,21 @@ local.set $7 local.get $7 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $5 + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $9 i32.store local.get $7 local.get $5 @@ -5719,7 +5485,7 @@ end local.set $4 block $break|0 - loop $repeat|0 + loop $loop|0 local.get $5 local.get $4 i32.lt_s @@ -5736,8 +5502,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -5801,14 +5566,12 @@ return end block $break|0 - block - i32.const 0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - end - loop $repeat|0 + i32.const 0 + local.set $2 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + loop $loop|0 local.get $2 local.get $3 i32.lt_s @@ -5835,8 +5598,7 @@ i32.const 1 i32.add local.set $2 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -5879,41 +5641,36 @@ i32.load offset=4 local.set $6 block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - local.set $8 - end - loop $repeat|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Int8Array#get:length + local.set $8 + loop $loop|0 local.get $7 local.get $8 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6022,41 +5779,36 @@ i32.load offset=4 local.set $6 block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 - end - loop $repeat|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Uint8Array#get:length + local.set $8 + loop $loop|0 local.get $7 local.get $8 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6143,41 +5895,36 @@ i32.load offset=4 local.set $6 block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $8 - end - loop $repeat|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $8 + loop $loop|0 local.get $7 local.get $8 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6288,41 +6035,36 @@ i32.load offset=4 local.set $6 block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - end - loop $repeat|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Int16Array#get:length + local.set $8 + loop $loop|0 local.get $7 local.get $8 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6435,41 +6177,36 @@ i32.load offset=4 local.set $6 block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.set $8 - end - loop $repeat|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Uint16Array#get:length + local.set $8 + loop $loop|0 local.get $7 local.get $8 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6556,41 +6293,36 @@ i32.load offset=4 local.set $6 block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - local.set $8 - end - loop $repeat|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Int32Array#get:length + local.set $8 + loop $loop|0 local.get $7 local.get $8 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6699,41 +6431,36 @@ i32.load offset=4 local.set $6 block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - local.set $8 - end - loop $repeat|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Uint32Array#get:length + local.set $8 + loop $loop|0 local.get $7 local.get $8 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6843,41 +6570,36 @@ i32.load offset=4 local.set $6 block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - end - loop $repeat|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Int64Array#get:length + local.set $8 + loop $loop|0 local.get $7 local.get $8 i32.lt_s i32.eqz br_if $break|0 - block (result i64) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$jjjii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$jjjii) local.set $3 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -6987,41 +6709,36 @@ i32.load offset=4 local.set $6 block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - local.set $8 - end - loop $repeat|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Uint64Array#get:length + local.set $8 + loop $loop|0 local.get $7 local.get $8 i32.lt_s i32.eqz br_if $break|0 - block (result i64) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$jjjii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$jjjii) local.set $3 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7131,41 +6848,36 @@ i32.load offset=4 local.set $6 block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - local.set $8 - end - loop $repeat|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Float32Array#get:length + local.set $8 + loop $loop|0 local.get $7 local.get $8 i32.lt_s i32.eqz br_if $break|0 - block (result f32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$fffii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$fffii) local.set $3 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7251,41 +6963,36 @@ i32.load offset=4 local.set $6 block $break|0 - block - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Float64Array#get:length - local.set $8 - end - loop $repeat|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Float64Array#get:length + local.set $8 + loop $loop|0 local.get $7 local.get $8 i32.lt_s i32.eqz br_if $break|0 - block (result f64) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$dddii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$dddii) local.set $3 local.get $7 i32.const 1 i32.add local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7374,34 +7081,31 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|0 + loop $loop|0 local.get $7 i32.const 0 i32.ge_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $7 i32.const 1 i32.sub local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7494,34 +7198,31 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|0 + loop $loop|0 local.get $7 i32.const 0 i32.ge_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $7 i32.const 1 i32.sub local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7612,34 +7313,31 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|0 + loop $loop|0 local.get $7 i32.const 0 i32.ge_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $7 i32.const 1 i32.sub local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7730,34 +7428,31 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|0 + loop $loop|0 local.get $7 i32.const 0 i32.ge_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $7 i32.const 1 i32.sub local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7850,34 +7545,31 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|0 + loop $loop|0 local.get $7 i32.const 0 i32.ge_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $7 i32.const 1 i32.sub local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -7968,34 +7660,31 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|0 + loop $loop|0 local.get $7 i32.const 0 i32.ge_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $7 i32.const 1 i32.sub local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -8084,34 +7773,31 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|0 + loop $loop|0 local.get $7 i32.const 0 i32.ge_s i32.eqz br_if $break|0 - block (result i32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$iiiii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$iiiii) local.set $3 local.get $7 i32.const 1 i32.sub local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -8201,34 +7887,31 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|0 + loop $loop|0 local.get $7 i32.const 0 i32.ge_s i32.eqz br_if $break|0 - block (result i64) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$jjjii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$jjjii) local.set $3 local.get $7 i32.const 1 i32.sub local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -8318,34 +8001,31 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|0 + loop $loop|0 local.get $7 i32.const 0 i32.ge_s i32.eqz br_if $break|0 - block (result i64) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$jjjii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$jjjii) local.set $3 local.get $7 i32.const 1 i32.sub local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -8435,34 +8115,31 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|0 + loop $loop|0 local.get $7 i32.const 0 i32.ge_s i32.eqz br_if $break|0 - block (result f32) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$fffii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$fffii) local.set $3 local.get $7 i32.const 1 i32.sub local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -8552,34 +8229,31 @@ i32.const 1 i32.sub local.set $7 - loop $repeat|0 + loop $loop|0 local.get $7 i32.const 0 i32.ge_s i32.eqz br_if $break|0 - block (result f64) - i32.const 4 - global.set $~lib/argc - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $7 - local.get $5 - local.get $4 - call_indirect (type $FUNCSIG$dddii) - end + i32.const 4 + global.set $~lib/argc + local.get $3 + local.get $6 + local.get $7 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $7 + local.get $5 + local.get $4 + call_indirect (type $FUNCSIG$dddii) local.set $3 local.get $7 i32.const 1 i32.sub local.set $7 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -8678,7 +8352,7 @@ block $break|0 i32.const 0 local.set $9 - loop $repeat|0 + loop $loop|0 local.get $9 local.get $4 i32.lt_s @@ -8689,27 +8363,24 @@ i32.const 0 i32.shl i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) i32.store8 local.get $9 i32.const 1 i32.add local.set $9 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -8841,7 +8512,7 @@ block $break|0 i32.const 0 local.set $9 - loop $repeat|0 + loop $loop|0 local.get $9 local.get $4 i32.lt_s @@ -8852,27 +8523,24 @@ i32.const 0 i32.shl i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) i32.store8 local.get $9 i32.const 1 i32.add local.set $9 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -9023,7 +8691,7 @@ block $break|0 i32.const 0 local.set $9 - loop $repeat|0 + loop $loop|0 local.get $9 local.get $4 i32.lt_s @@ -9034,27 +8702,24 @@ i32.const 0 i32.shl i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) i32.store8 local.get $9 i32.const 1 i32.add local.set $9 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -9186,7 +8851,7 @@ block $break|0 i32.const 0 local.set $9 - loop $repeat|0 + loop $loop|0 local.get $9 local.get $4 i32.lt_s @@ -9197,27 +8862,24 @@ i32.const 1 i32.shl i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) i32.store16 local.get $9 i32.const 1 i32.add local.set $9 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -9372,7 +9034,7 @@ block $break|0 i32.const 0 local.set $9 - loop $repeat|0 + loop $loop|0 local.get $9 local.get $4 i32.lt_s @@ -9383,27 +9045,24 @@ i32.const 1 i32.shl i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) i32.store16 local.get $9 i32.const 1 i32.add local.set $9 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -9558,7 +9217,7 @@ block $break|0 i32.const 0 local.set $9 - loop $repeat|0 + loop $loop|0 local.get $9 local.get $4 i32.lt_s @@ -9569,27 +9228,24 @@ i32.const 2 i32.shl i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) i32.store local.get $9 i32.const 1 i32.add local.set $9 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -9721,7 +9377,7 @@ block $break|0 i32.const 0 local.set $9 - loop $repeat|0 + loop $loop|0 local.get $9 local.get $4 i32.lt_s @@ -9732,27 +9388,24 @@ i32.const 2 i32.shl i32.add - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) i32.store local.get $9 i32.const 1 i32.add local.set $9 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -9907,7 +9560,7 @@ block $break|0 i32.const 0 local.set $9 - loop $repeat|0 + loop $loop|0 local.get $9 local.get $4 i32.lt_s @@ -9918,27 +9571,24 @@ i32.const 3 i32.shl i32.add - block (result i64) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$jjii) - end + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$jjii) i64.store local.get $9 i32.const 1 i32.add local.set $9 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -10093,7 +9743,7 @@ block $break|0 i32.const 0 local.set $9 - loop $repeat|0 + loop $loop|0 local.get $9 local.get $4 i32.lt_s @@ -10104,27 +9754,24 @@ i32.const 3 i32.shl i32.add - block (result i64) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$jjii) - end + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$jjii) i64.store local.get $9 i32.const 1 i32.add local.set $9 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -10279,7 +9926,7 @@ block $break|0 i32.const 0 local.set $9 - loop $repeat|0 + loop $loop|0 local.get $9 local.get $4 i32.lt_s @@ -10290,27 +9937,24 @@ i32.const 2 i32.shl i32.add - block (result f32) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ffii) - end + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ffii) f32.store local.get $9 i32.const 1 i32.add local.set $9 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -10465,7 +10109,7 @@ block $break|0 i32.const 0 local.set $9 - loop $repeat|0 + loop $loop|0 local.get $9 local.get $4 i32.lt_s @@ -10476,27 +10120,24 @@ i32.const 3 i32.shl i32.add - block (result f64) - i32.const 3 - global.set $~lib/argc - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $9 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ddii) - end + i32.const 3 + global.set $~lib/argc + local.get $5 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $9 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ddii) f64.store local.get $9 i32.const 1 i32.add local.set $9 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -10617,33 +10258,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if i32.const 1 local.set $7 @@ -10656,8 +10293,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -10778,33 +10414,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if i32.const 1 local.set $7 @@ -10817,8 +10449,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -10937,33 +10568,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if i32.const 1 local.set $7 @@ -10976,8 +10603,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -11098,33 +10724,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if i32.const 1 local.set $7 @@ -11137,8 +10759,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -11259,33 +10880,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if i32.const 1 local.set $7 @@ -11298,8 +10915,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -11416,33 +11032,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if i32.const 1 local.set $7 @@ -11455,8 +11067,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -11571,33 +11182,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if i32.const 1 local.set $7 @@ -11610,8 +11217,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -11726,33 +11332,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ijii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) if i32.const 1 local.set $7 @@ -11765,8 +11367,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -11881,33 +11482,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ijii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) if i32.const 1 local.set $7 @@ -11920,8 +11517,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -12036,33 +11632,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ifii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ifii) if i32.const 1 local.set $7 @@ -12075,8 +11667,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -12191,33 +11782,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$idii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$idii) if i32.const 1 local.set $7 @@ -12230,8 +11817,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -12350,33 +11936,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if local.get $5 local.set $7 @@ -12389,8 +11971,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -12510,33 +12091,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if local.get $5 local.set $7 @@ -12549,8 +12126,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -12668,33 +12244,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if local.get $5 local.set $7 @@ -12707,8 +12279,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -12828,33 +12399,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if local.get $5 local.set $7 @@ -12867,8 +12434,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -12988,33 +12554,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if local.get $5 local.set $7 @@ -13027,8 +12589,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -13144,33 +12705,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if local.get $5 local.set $7 @@ -13183,8 +12740,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -13298,33 +12854,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if local.get $5 local.set $7 @@ -13337,8 +12889,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -13452,33 +13003,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ijii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) if local.get $5 local.set $7 @@ -13491,8 +13038,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -13606,33 +13152,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ijii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) if local.get $5 local.set $7 @@ -13645,8 +13187,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -13760,33 +13301,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ifii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ifii) if local.get $5 local.set $7 @@ -13799,8 +13336,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -13914,33 +13450,29 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s i32.eqz br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$idii) - end + i32.const 3 + global.set $~lib/argc + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$idii) if local.get $5 local.set $7 @@ -13953,8 +13485,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -14074,34 +13605,30 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + loop $loop|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 block $continue|0 + i32.const 3 + global.set $~lib/argc + local.get $4 local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if br $continue|0 end @@ -14116,8 +13643,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -14240,34 +13766,30 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + loop $loop|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 block $continue|0 + i32.const 3 + global.set $~lib/argc + local.get $4 local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if br $continue|0 end @@ -14282,8 +13804,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -14404,34 +13925,30 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + loop $loop|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 block $continue|0 + i32.const 3 + global.set $~lib/argc + local.get $4 local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if br $continue|0 end @@ -14446,8 +13963,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -14570,34 +14086,30 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + loop $loop|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 block $continue|0 + i32.const 3 + global.set $~lib/argc + local.get $4 local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if br $continue|0 end @@ -14612,8 +14124,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -14736,34 +14247,30 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + loop $loop|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 block $continue|0 + i32.const 3 + global.set $~lib/argc + local.get $4 local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if br $continue|0 end @@ -14778,8 +14285,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -14898,34 +14404,30 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + loop $loop|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 block $continue|0 + i32.const 3 + global.set $~lib/argc + local.get $4 local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if br $continue|0 end @@ -14940,8 +14442,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -15058,34 +14559,30 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + loop $loop|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 block $continue|0 + i32.const 3 + global.set $~lib/argc + local.get $4 local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$iiii) - end + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$iiii) if br $continue|0 end @@ -15100,8 +14597,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -15218,34 +14714,30 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + loop $loop|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 block $continue|0 + i32.const 3 + global.set $~lib/argc + local.get $4 local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ijii) - end + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) if br $continue|0 end @@ -15260,8 +14752,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -15378,34 +14869,30 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + loop $loop|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 block $continue|0 + i32.const 3 + global.set $~lib/argc + local.get $4 local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ijii) - end + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ijii) if br $continue|0 end @@ -15420,8 +14907,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -15662,36 +15148,37 @@ local.get $4 local.get $5 i32.gt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i32.ge_u if local.get $2 local.get $3 - i32.ge_u + i32.eq if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - local.set $2 + f32.const 0 + local.get $0 + f32.mul + return end local.get $2 - i32.const 1 - i32.shl - local.set $2 - local.get $4 - i32.const 1 + local.get $3 i32.sub - local.set $4 - br $continue|0 + local.set $2 end + local.get $2 + i32.const 1 + i32.shl + local.set $2 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $continue|0 end + unreachable end local.get $2 local.get $3 @@ -15789,34 +15276,30 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + loop $loop|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 block $continue|0 + i32.const 3 + global.set $~lib/argc + local.get $4 local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$ifii) - end + i32.const 2 + i32.shl + i32.add + f32.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$ifii) if br $continue|0 end @@ -15831,8 +15314,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -16073,36 +15555,37 @@ local.get $4 local.get $5 i64.gt_s + i32.eqz + br_if $break|0 + local.get $2 + local.get $3 + i64.ge_u if local.get $2 local.get $3 - i64.ge_u + i64.eq if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 - i64.sub - local.set $2 + f64.const 0 + local.get $0 + f64.mul + return end local.get $2 - i64.const 1 - i64.shl - local.set $2 - local.get $4 - i64.const 1 + local.get $3 i64.sub - local.set $4 - br $continue|0 + local.set $2 end + local.get $2 + i64.const 1 + i64.shl + local.set $2 + local.get $4 + i64.const 1 + i64.sub + local.set $4 + br $continue|0 end + unreachable end local.get $2 local.get $3 @@ -16202,34 +15685,30 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + loop $loop|0 + local.get $5 + local.get $6 + i32.lt_s + i32.eqz + br_if $break|0 block $continue|0 + i32.const 3 + global.set $~lib/argc + local.get $4 local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block (result i32) - i32.const 3 - global.set $~lib/argc - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $5 - local.get $3 - local.get $2 - call_indirect (type $FUNCSIG$idii) - end + i32.const 3 + i32.shl + i32.add + f64.load + local.get $5 + local.get $3 + local.get $2 + call_indirect (type $FUNCSIG$idii) if br $continue|0 end @@ -16244,8 +15723,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -16405,14 +15883,12 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s @@ -16434,8 +15910,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -16576,14 +16051,12 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s @@ -16605,8 +16078,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -16741,14 +16213,12 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s @@ -16770,8 +16240,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -16910,14 +16379,12 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s @@ -16939,8 +16406,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -17081,14 +16547,12 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s @@ -17110,8 +16574,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -17242,14 +16705,12 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s @@ -17271,8 +16732,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -17397,14 +16857,12 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s @@ -17426,8 +16884,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -17553,14 +17010,12 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s @@ -17582,8 +17037,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -17712,14 +17166,12 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s @@ -17741,8 +17193,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -17871,14 +17322,12 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s @@ -17900,8 +17349,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -18030,14 +17478,12 @@ i32.load offset=4 local.set $4 block $break|0 - block - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - end - loop $repeat|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + loop $loop|0 local.get $5 local.get $6 i32.lt_s @@ -18059,8 +17505,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -18136,16 +17581,14 @@ i32.load offset=4 local.set $2 block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $loop|0 local.get $3 local.get $4 i32.lt_s @@ -18173,18 +17616,15 @@ local.get $6 local.get $7 i32.store8 - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $loop|0 end unreachable end @@ -18219,7 +17659,7 @@ block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 9 i32.lt_s @@ -18249,8 +17689,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -18260,7 +17699,7 @@ block $break|1 i32.const 0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 i32.const 9 i32.lt_s @@ -18292,8 +17731,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -18390,16 +17828,14 @@ i32.load offset=4 local.set $2 block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint8Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint8Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $loop|0 local.get $3 local.get $4 i32.lt_s @@ -18427,18 +17863,15 @@ local.get $6 local.get $7 i32.store8 - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $loop|0 end unreachable end @@ -18528,23 +17961,21 @@ local.set $7 local.get $7 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $5 + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $9 i32.store local.get $7 local.get $5 @@ -18596,7 +18027,7 @@ block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 9 i32.lt_s @@ -18622,8 +18053,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -18633,7 +18063,7 @@ block $break|1 i32.const 0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 i32.const 9 i32.lt_s @@ -18663,8 +18093,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -18761,16 +18190,14 @@ i32.load offset=4 local.set $2 block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.const 1 + i32.sub + local.set $4 + loop $loop|0 local.get $3 local.get $4 i32.lt_s @@ -18798,18 +18225,15 @@ local.get $6 local.get $7 i32.store8 - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $loop|0 end unreachable end @@ -18899,23 +18323,21 @@ local.set $7 local.get $7 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $5 + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $9 i32.store local.get $7 local.get $5 @@ -18967,7 +18389,7 @@ block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 9 i32.lt_s @@ -18993,8 +18415,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -19004,7 +18425,7 @@ block $break|1 i32.const 0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 i32.const 9 i32.lt_s @@ -19034,8 +18455,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -19132,16 +18552,14 @@ i32.load offset=4 local.set $2 block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $loop|0 local.get $3 local.get $4 i32.lt_s @@ -19169,18 +18587,15 @@ local.get $6 local.get $7 i32.store16 - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $loop|0 end unreachable end @@ -19270,23 +18685,21 @@ local.set $7 local.get $7 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $5 + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $9 i32.store local.get $7 local.get $5 @@ -19338,7 +18751,7 @@ block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 9 i32.lt_s @@ -19368,8 +18781,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -19379,7 +18791,7 @@ block $break|1 i32.const 0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 i32.const 9 i32.lt_s @@ -19411,8 +18823,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -19509,16 +18920,14 @@ i32.load offset=4 local.set $2 block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint16Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint16Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $loop|0 local.get $3 local.get $4 i32.lt_s @@ -19546,18 +18955,15 @@ local.get $6 local.get $7 i32.store16 - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $loop|0 end unreachable end @@ -19647,23 +19053,21 @@ local.set $7 local.get $7 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $5 + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $9 i32.store local.get $7 local.get $5 @@ -19715,7 +19119,7 @@ block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 9 i32.lt_s @@ -19741,8 +19145,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -19752,7 +19155,7 @@ block $break|1 i32.const 0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 i32.const 9 i32.lt_s @@ -19782,8 +19185,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -19880,16 +19282,14 @@ i32.load offset=4 local.set $2 block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $loop|0 local.get $3 local.get $4 i32.lt_s @@ -19917,18 +19317,15 @@ local.get $6 local.get $7 i32.store - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $loop|0 end unreachable end @@ -19963,7 +19360,7 @@ block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 9 i32.lt_s @@ -19985,8 +19382,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -19996,7 +19392,7 @@ block $break|1 i32.const 0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 i32.const 9 i32.lt_s @@ -20024,8 +19420,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -20122,16 +19517,14 @@ i32.load offset=4 local.set $2 block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint32Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint32Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $loop|0 local.get $3 local.get $4 i32.lt_s @@ -20159,18 +19552,15 @@ local.get $6 local.get $7 i32.store - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $loop|0 end unreachable end @@ -20260,23 +19650,21 @@ local.set $7 local.get $7 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $5 + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $9 i32.store local.get $7 local.get $5 @@ -20328,7 +19716,7 @@ block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 9 i32.lt_s @@ -20350,8 +19738,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -20361,7 +19748,7 @@ block $break|1 i32.const 0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 i32.const 9 i32.lt_s @@ -20389,8 +19776,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -20487,16 +19873,14 @@ i32.load offset=4 local.set $2 block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $loop|0 local.get $3 local.get $4 i32.lt_s @@ -20524,18 +19908,15 @@ local.get $6 local.get $7 i64.store - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $loop|0 end unreachable end @@ -20625,23 +20006,21 @@ local.set $7 local.get $7 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $5 + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $9 i32.store local.get $7 local.get $5 @@ -20693,7 +20072,7 @@ block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 9 i32.lt_s @@ -20717,8 +20096,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -20728,7 +20106,7 @@ block $break|1 i32.const 0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 i32.const 9 i32.lt_s @@ -20757,8 +20135,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -20855,16 +20232,14 @@ i32.load offset=4 local.set $2 block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint64Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint64Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $loop|0 local.get $3 local.get $4 i32.lt_s @@ -20892,18 +20267,15 @@ local.get $6 local.get $7 i64.store - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $loop|0 end unreachable end @@ -20993,23 +20365,21 @@ local.set $7 local.get $7 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $5 + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $9 i32.store local.get $7 local.get $5 @@ -21061,7 +20431,7 @@ block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 9 i32.lt_s @@ -21085,8 +20455,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -21096,7 +20465,7 @@ block $break|1 i32.const 0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 i32.const 9 i32.lt_s @@ -21125,8 +20494,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -21223,16 +20591,14 @@ i32.load offset=4 local.set $2 block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Float32Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Float32Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $loop|0 local.get $3 local.get $4 i32.lt_s @@ -21260,18 +20626,15 @@ local.get $6 local.get $7 f32.store - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $loop|0 end unreachable end @@ -21361,23 +20724,21 @@ local.set $7 local.get $7 local.tee $8 - block (result i32) - local.get $5 - i32.load - local.tee $9 - local.get $8 - i32.load - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $8 - call $~lib/rt/pure/__release - end + local.get $5 + i32.load + local.tee $9 + local.get $8 + i32.load + local.tee $8 + i32.ne + if local.get $9 + call $~lib/rt/pure/__retain + drop + local.get $8 + call $~lib/rt/pure/__release end + local.get $9 i32.store local.get $7 local.get $5 @@ -21429,7 +20790,7 @@ block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 9 i32.lt_s @@ -21453,8 +20814,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -21464,7 +20824,7 @@ block $break|1 i32.const 0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 i32.const 9 i32.lt_s @@ -21493,8 +20853,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -21591,16 +20950,14 @@ i32.load offset=4 local.set $2 block $break|0 - block - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Float64Array#get:length - i32.const 1 - i32.sub - local.set $4 - end - loop $repeat|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Float64Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $loop|0 local.get $3 local.get $4 i32.lt_s @@ -21628,18 +20985,15 @@ local.get $6 local.get $7 f64.store - block - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - end - br $repeat|0 - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $loop|0 end unreachable end @@ -21674,7 +21028,7 @@ block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $loop|0 local.get $5 i32.const 9 i32.lt_s @@ -21698,8 +21052,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|0 - unreachable + br $loop|0 end unreachable end @@ -21709,7 +21062,7 @@ block $break|1 i32.const 0 local.set $5 - loop $repeat|1 + loop $loop|1 local.get $5 i32.const 9 i32.lt_s @@ -21738,8 +21091,7 @@ i32.const 1 i32.add local.set $5 - br $repeat|1 - unreachable + br $loop|1 end unreachable end @@ -21968,1096 +21320,1080 @@ call $std/typedarray/testInstantiate i32.const 5 call $std/typedarray/testInstantiate - block + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 + i32.const 24 + i32.const 95 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#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 95 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 96 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 97 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 98 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 99 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 100 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - block (result i32) - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#subarray - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - end - local.set $0 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 103 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 104 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 1 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 105 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 106 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release + call $~lib/builtins/abort + unreachable end - block + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if i32.const 0 - i32.const 8 - call $~lib/typedarray/Float64Array#constructor - local.set $0 - local.get $0 + i32.const 24 + i32.const 96 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set + i32.const 24 + i32.const 97 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 98 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 99 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 100 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#subarray + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + local.set $0 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 103 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 1 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 105 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 106 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + i32.const 8 + call $~lib/typedarray/Float64Array#constructor + local.set $0 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + f64.const 7 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 3 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 5 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 6 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 7 + f64.const 8 + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Float64Array#subarray + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 + local.set $0 + local.get $0 + call $~lib/typedarray/Float64Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 122 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 2 + i32.const 8 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 123 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 4 + i32.const 8 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 124 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $~lib/argc + local.get $0 + i32.const 0 + call $~lib/typedarray/Float64Array#sort|trampoline + call $~lib/rt/pure/__release + local.get $0 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.eq + if (result i32) local.get $0 i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 7 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 3 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 5 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 6 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 7 - f64.const 8 - call $~lib/typedarray/Float64Array#__set - block (result i32) - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Float64Array#subarray - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - end - local.set $0 - local.get $0 - call $~lib/typedarray/Float64Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 122 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 2 - i32.const 8 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 123 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 4 - i32.const 8 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 124 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $~lib/argc - local.get $0 - i32.const 0 - call $~lib/typedarray/Float64Array#sort|trampoline - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 call $~lib/typedarray/Float64Array#__get - f64.const 4 + f64.const 5 f64.eq - if (result i32) - local.get $0 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.eq - else - i32.const 0 - end - if (result i32) - local.get $0 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.eq - else - i32.const 0 - end - if (result i32) - local.get $0 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 126 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release + else + i32.const 0 end - block - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.const -32 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set + if (result i32) local.get $0 i32.const 2 - i32.const 256 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.eq + else i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 135 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 136 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 255 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 137 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release end - block - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set + if (result i32) local.get $0 i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.eq + else i32.const 0 - i32.const 14 - i32.const 488 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $2 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 149 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 14 - i32.const 560 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 152 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 14 - i32.const 584 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 155 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 14 - i32.const 608 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 158 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 0 - i32.const 14 - i32.const 632 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 161 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - local.set $1 - local.get $1 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 165 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 166 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 167 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 0 - i32.const 14 - i32.const 656 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 168 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 5 - i32.const 0 - i32.const 14 - i32.const 680 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 169 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release end - block + i32.eqz + if i32.const 0 - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.set $9 - local.get $9 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $9 - i32.const 1 + i32.const 24 + i32.const 126 i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $9 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $9 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $9 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $9 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 15 - i32.const 704 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $1 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 181 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 15 - i32.const 744 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 184 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 15 - i32.const 784 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 187 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 15 - i32.const 824 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 190 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 15 - i32.const 864 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $3 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 193 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.set $8 - local.get $8 - i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $8 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 197 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 198 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.const 4 - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 199 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - i32.const 2 - i32.const 15 - i32.const 904 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 200 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.const 5 - i32.const 2 - i32.const 15 - i32.const 936 - call $~lib/rt/__allocArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 201 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $9 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release + call $~lib/builtins/abort + unreachable end - block + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.const -32 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 2 + i32.const 256 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 0 + i32.eq + i32.eqz + if i32.const 0 - i32.const 6 - call $~lib/typedarray/Int8Array#constructor - local.set $7 - local.get $7 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 1 + i32.const 24 + i32.const 135 i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 5 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 1 - i32.const 6 - call $~lib/typedarray/Int8Array#subarray - local.set $0 - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 222 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Int8Array#get:length - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 223 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 224 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 225 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 5 - call $~lib/typedarray/Int8Array#subarray - local.set $8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 228 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $~lib/typedarray/Int8Array#get:length - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 229 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 230 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 231 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - local.set $3 - local.get $3 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 234 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 235 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 236 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteLength - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 237 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $7 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 136 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 137 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.set $0 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int8Array#fill + call $~lib/rt/pure/__release + local.get $0 + i32.const 5 + i32.const 0 + i32.const 14 + i32.const 488 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $2 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 149 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int8Array#fill + call $~lib/rt/pure/__release + local.get $0 + i32.const 5 + i32.const 0 + i32.const 14 + i32.const 560 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $3 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 152 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int8Array#fill + call $~lib/rt/pure/__release + local.get $0 + i32.const 5 + i32.const 0 + i32.const 14 + i32.const 584 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $4 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 155 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int8Array#fill + call $~lib/rt/pure/__release + local.get $0 + i32.const 5 + i32.const 0 + i32.const 14 + i32.const 608 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $5 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 158 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int8Array#fill + call $~lib/rt/pure/__release + local.get $0 + i32.const 5 + i32.const 0 + i32.const 14 + i32.const 632 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $6 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 161 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.set $1 + local.get $1 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int8Array#fill + call $~lib/rt/pure/__release + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 165 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 166 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 167 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.const 0 + i32.const 14 + i32.const 656 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $8 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 168 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 5 + i32.const 0 + i32.const 14 + i32.const 680 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $9 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 169 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.set $9 + local.get $9 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $9 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $9 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $9 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $9 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $9 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#fill + call $~lib/rt/pure/__release + local.get $9 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 704 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $1 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 181 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#fill + call $~lib/rt/pure/__release + local.get $9 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 744 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $6 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 184 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int32Array#fill + call $~lib/rt/pure/__release + local.get $9 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 784 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $5 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 187 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const 2 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#fill + call $~lib/rt/pure/__release + local.get $9 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 824 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $4 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 190 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int32Array#fill + call $~lib/rt/pure/__release + local.get $9 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 864 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $3 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 193 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.set $8 + local.get $8 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#fill + call $~lib/rt/pure/__release + local.get $8 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 197 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 198 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 199 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 3 + i32.const 2 + i32.const 15 + i32.const 904 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $0 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 200 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + i32.const 5 + i32.const 2 + i32.const 15 + i32.const 936 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $7 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 201 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $9 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release + i32.const 0 + i32.const 6 + call $~lib/typedarray/Int8Array#constructor + local.set $7 + local.get $7 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $7 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $7 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $7 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $7 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $7 + i32.const 5 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $7 + i32.const 1 + i32.const 6 + call $~lib/typedarray/Int8Array#subarray + local.set $0 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 222 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/typedarray/Int8Array#get:length + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 223 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 224 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 225 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.const 5 + call $~lib/typedarray/Int8Array#subarray + local.set $8 + local.get $8 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 228 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + call $~lib/typedarray/Int8Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 229 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 230 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 231 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $8 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.set $3 + local.get $3 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 234 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 235 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 236 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 237 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $7 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> call $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> call $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> @@ -23330,103 +22666,83 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 288 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 288 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 288 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end i32.const 0 i32.eqz @@ -23443,98 +22759,42 @@ (func $~lib/rt/__visit_members (; 401 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) block $block$4$break - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$17 - block $switch$1$case$16 - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$16 $switch$1$case$17 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - br $block$4$break - unreachable - end - unreachable - end - block - block + block $switch$1$default + block $switch$1$case$17 + block $switch$1$case$16 + block $switch$1$case$4 + block $switch$1$case$2 local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$4 $switch$1$case$16 $switch$1$case$17 $switch$1$default end - unreachable - unreachable + return end - unreachable + br $block$4$break end - block - block - local.get $0 - local.get $1 - call $~lib/array/Array#__visit_impl - block - br $block$4$break - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - end - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#__visit_impl + br $block$4$break end - return - unreachable + local.get $0 + local.get $1 + call $~lib/array/Array#__visit_impl + br $block$4$break end unreachable - unreachable end - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return ) (func $null (; 402 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/switch.untouched.wat b/tests/compiler/switch.untouched.wat index 39043235..f3e60871 100644 --- a/tests/compiler/switch.untouched.wat +++ b/tests/compiler/switch.untouched.wat @@ -11,46 +11,41 @@ (start $start) (func $switch/doSwitch (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $0 - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case0|0 - local.get $1 - i32.const 0 - i32.eq - br_if $case1|0 - local.get $1 - i32.const 2 - i32.eq - br_if $case3|0 - local.get $1 - i32.const 3 - i32.eq - br_if $case4|0 - br $case2|0 - end + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + local.set $1 + local.get $1 i32.const 1 - return + i32.eq + br_if $case0|0 + local.get $1 + i32.const 0 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 3 + i32.eq + br_if $case4|0 + br $case2|0 end + i32.const 1 + return end - i32.const 0 - return end + i32.const 0 + return end - i32.const 23 - return - unreachable end - unreachable - unreachable + i32.const 23 + return ) (func $switch/doSwitchDefaultOmitted (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) @@ -125,39 +120,35 @@ ) (func $switch/doSwitchFallThroughCase (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - block $break|0 - block $case1|0 - block $case0|0 - local.get $0 - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case1|0 - br $case0|0 - end - i32.const 2 - return + block $case1|0 + block $case0|0 + local.get $0 + local.set $1 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + br $case0|0 end + i32.const 2 + return end i32.const 1 ) (func $switch/doSwitchFallThroughDefault (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) - block $break|0 - block $case1|0 - block $case0|0 - local.get $0 - local.set $1 - local.get $1 - i32.const 1 - i32.eq - br_if $case0|0 - br $case1|0 - end + block $case1|0 + block $case0|0 + local.get $0 + local.set $1 + local.get $1 i32.const 1 - return + i32.eq + br_if $case0|0 + br $case1|0 end + i32.const 1 + return end i32.const 2 ) diff --git a/tests/compiler/unary.untouched.wat b/tests/compiler/unary.untouched.wat index 44abc69a..e4196758 100644 --- a/tests/compiler/unary.untouched.wat +++ b/tests/compiler/unary.untouched.wat @@ -86,39 +86,31 @@ i32.const -1 i32.xor global.set $unary/i - block (result i32) - global.get $unary/i - i32.const 1 - i32.add - global.set $unary/i - global.get $unary/i - end + global.get $unary/i + i32.const 1 + i32.add global.set $unary/i - block (result i32) - global.get $unary/i - i32.const 1 - i32.sub - global.set $unary/i - global.get $unary/i - end + global.get $unary/i global.set $unary/i - block (result i32) - global.get $unary/i - local.tee $0 - i32.const 1 - i32.add - global.set $unary/i - local.get $0 - end + global.get $unary/i + i32.const 1 + i32.sub global.set $unary/i - block (result i32) - global.get $unary/i - local.tee $0 - i32.const 1 - i32.sub - global.set $unary/i - local.get $0 - end + global.get $unary/i + global.set $unary/i + global.get $unary/i + local.tee $0 + i32.const 1 + i32.add + global.set $unary/i + local.get $0 + global.set $unary/i + global.get $unary/i + local.tee $0 + i32.const 1 + i32.sub + global.set $unary/i + local.get $0 global.set $unary/i global.get $unary/I drop @@ -175,39 +167,31 @@ i64.const -1 i64.xor global.set $unary/I - block (result i64) - global.get $unary/I - i64.const 1 - i64.add - global.set $unary/I - global.get $unary/I - end + global.get $unary/I + i64.const 1 + i64.add global.set $unary/I - block (result i64) - global.get $unary/I - i64.const 1 - i64.sub - global.set $unary/I - global.get $unary/I - end + global.get $unary/I global.set $unary/I - block (result i64) - global.get $unary/I - local.tee $1 - i64.const 1 - i64.add - global.set $unary/I - local.get $1 - end + global.get $unary/I + i64.const 1 + i64.sub global.set $unary/I - block (result i64) - global.get $unary/I - local.tee $1 - i64.const 1 - i64.sub - global.set $unary/I - local.get $1 - end + global.get $unary/I + global.set $unary/I + global.get $unary/I + local.tee $1 + i64.const 1 + i64.add + global.set $unary/I + local.get $1 + global.set $unary/I + global.get $unary/I + local.tee $1 + i64.const 1 + i64.sub + global.set $unary/I + local.get $1 global.set $unary/I global.get $unary/f drop @@ -251,39 +235,31 @@ f32.const 0 f32.eq global.set $unary/i - block (result f32) - global.get $unary/f - f32.const 1 - f32.add - global.set $unary/f - global.get $unary/f - end + global.get $unary/f + f32.const 1 + f32.add global.set $unary/f - block (result f32) - global.get $unary/f - f32.const 1 - f32.sub - global.set $unary/f - global.get $unary/f - end + global.get $unary/f global.set $unary/f - block (result f32) - global.get $unary/f - local.tee $2 - f32.const 1 - f32.add - global.set $unary/f - local.get $2 - end + global.get $unary/f + f32.const 1 + f32.sub global.set $unary/f - block (result f32) - global.get $unary/f - local.tee $2 - f32.const 1 - f32.sub - global.set $unary/f - local.get $2 - end + global.get $unary/f + global.set $unary/f + global.get $unary/f + local.tee $2 + f32.const 1 + f32.add + global.set $unary/f + local.get $2 + global.set $unary/f + global.get $unary/f + local.tee $2 + f32.const 1 + f32.sub + global.set $unary/f + local.get $2 global.set $unary/f global.get $unary/F drop @@ -329,39 +305,31 @@ f64.eq i64.extend_i32_u global.set $unary/I - block (result f64) - global.get $unary/F - f64.const 1 - f64.add - global.set $unary/F - global.get $unary/F - end + global.get $unary/F + f64.const 1 + f64.add global.set $unary/F - block (result f64) - global.get $unary/F - f64.const 1 - f64.sub - global.set $unary/F - global.get $unary/F - end + global.get $unary/F global.set $unary/F - block (result f64) - global.get $unary/F - local.tee $3 - f64.const 1 - f64.add - global.set $unary/F - local.get $3 - end + global.get $unary/F + f64.const 1 + f64.sub global.set $unary/F - block (result f64) - global.get $unary/F - local.tee $3 - f64.const 1 - f64.sub - global.set $unary/F - local.get $3 - end + global.get $unary/F + global.set $unary/F + global.get $unary/F + local.tee $3 + f64.const 1 + f64.add + global.set $unary/F + local.get $3 + global.set $unary/F + global.get $unary/F + local.tee $3 + f64.const 1 + f64.sub + global.set $unary/F + local.get $3 global.set $unary/F ) (func $start (; 1 ;) (type $FUNCSIG$v) diff --git a/tests/compiler/wasi.untouched.wat b/tests/compiler/wasi.untouched.wat index 1375bdce..4bf55efb 100644 --- a/tests/compiler/wasi.untouched.wat +++ b/tests/compiler/wasi.untouched.wat @@ -326,31 +326,29 @@ call $~lib/builtins/abort unreachable end - block - i32.const 4 - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 35 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 36 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 35 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 36 + i32.const 2 + call $~lib/builtins/abort + unreachable end i32.const 0 i32.const 0 @@ -508,31 +506,29 @@ call $~lib/builtins/abort unreachable end - block - i32.const 4 - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 60 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - i32.const 8 - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 61 - i32.const 2 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 60 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 61 + i32.const 2 + call $~lib/builtins/abort + unreachable end i32.const 9 global.set $wasi/sig diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index a6bdb945..a5685952 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -85,16 +85,14 @@ end global.get $while/o i32.const 9 - i32.ne - if - i32.const 0 - i32.const 24 - i32.const 22 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - br $continue|1 + i32.eq + br_if $continue|1 + i32.const 0 + i32.const 24 + i32.const 22 + i32.const 2 + call $~lib/builtins/abort + unreachable end end global.get $while/n diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index 8fc14b6f..5381fb87 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.untouched.wat @@ -16,18 +16,19 @@ block $break|0 loop $continue|0 global.get $while/n - if - global.get $while/n - i32.const 1 - i32.sub - global.set $while/n - global.get $while/m - i32.const 1 - i32.add - global.set $while/m - br $continue|0 - end + i32.eqz + br_if $break|0 + global.get $while/n + i32.const 1 + i32.sub + global.set $while/n + global.get $while/m + i32.const 1 + i32.add + global.set $while/m + br $continue|0 end + unreachable end global.get $while/n i32.const 0 @@ -60,58 +61,60 @@ block $break|1 loop $continue|1 global.get $while/n - if - global.get $while/n - i32.const 1 - i32.sub - global.set $while/n - global.get $while/m - i32.const 1 - i32.add - global.set $while/m - block $break|2 - loop $continue|2 - global.get $while/n - if - global.get $while/n - i32.const 1 - i32.sub - global.set $while/n - global.get $while/o - i32.const 1 - i32.add - global.set $while/o - br $continue|2 - end - end + i32.eqz + br_if $break|1 + global.get $while/n + i32.const 1 + i32.sub + global.set $while/n + global.get $while/m + i32.const 1 + i32.add + global.set $while/m + block $break|2 + loop $continue|2 + global.get $while/n + i32.eqz + br_if $break|2 + global.get $while/n + i32.const 1 + i32.sub + global.set $while/n + global.get $while/o + i32.const 1 + i32.add + global.set $while/o + br $continue|2 end - global.get $while/n - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 21 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $while/o - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 22 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - br $continue|1 + unreachable end + global.get $while/n + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 21 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + global.get $while/o + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 24 + i32.const 22 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + br $continue|1 end + unreachable end global.get $while/n i32.const 0 @@ -155,14 +158,12 @@ global.set $while/m block $break|3 loop $continue|3 - block (result i32) - global.get $while/n - local.tee $0 - i32.const 1 - i32.sub - global.set $while/n - local.get $0 - end + global.get $while/n + local.tee $0 + i32.const 1 + i32.sub + global.set $while/n + local.get $0 if (result i32) global.get $while/m i32.const 1 @@ -172,11 +173,12 @@ else i32.const 0 end - if - nop - br $continue|3 - end + i32.eqz + br_if $break|3 + nop + br $continue|3 end + unreachable end global.get $while/n i32.const -1