From 80c4ae57be5233cc1b8bfee4bf71b236b5387bef Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 14 Jun 2021 20:45:24 +0300 Subject: [PATCH 01/29] init --- std/assembly/util/sort.ts | 299 +- tests/compiler/std/array.optimized.wat | 11173 +++++++----- tests/compiler/std/array.ts | 4 + tests/compiler/std/array.untouched.wat | 16221 ++++++++++++------ tests/compiler/std/dataview.optimized.wat | 64 +- tests/compiler/std/map.optimized.wat | 150 +- tests/compiler/std/math.optimized.wat | 8 +- tests/compiler/std/set.optimized.wat | 120 +- tests/compiler/std/typedarray.optimized.wat | 12786 +++++++++----- tests/compiler/std/typedarray.untouched.wat | 11538 +++++++++---- 10 files changed, 36091 insertions(+), 16272 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index 0b6e040f53..ce72f3b9be 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -1,5 +1,18 @@ import { compareImpl } from "./string"; +// @ts-ignore: decorator +@lazy const EMPTY: u32 = 0xFFFFFFFF; +// @ts-ignore: decorator +@lazy const INSERTION_SORT_THRESHOLD = 128; +// @ts-ignore: decorator +@lazy const MIN_RUN_LENGTH = 32; + +// @ts-ignore: decorator +@inline +function log2u(n: u32): u32 { + return 31 - clz(n); +} + // @ts-ignore: decorator @inline export function COMPARATOR(): (a: T, b: T) => i32 { @@ -43,100 +56,242 @@ export function COMPARATOR(): (a: T, b: T) => i32 { } } -// @ts-ignore: decorator -@inline +// Power Sort implementation (stable) from paper "Nearly-Optimal Mergesorts" +// https://arxiv.org/pdf/1805.04154.pdf +// This method usually outperform TimSort. export function SORT( dataStart: usize, length: i32, comparator: (a: T, b: T) => i32 ): void { - if (isReference()) { - // TODO replace this to faster stable sort (TimSort) when it implemented - insertionSort(dataStart, length, comparator); - } else { - if (length < 256) { - insertionSort(dataStart, length, comparator); - } else { - weakHeapSort(dataStart, length, comparator); + var hi = length - 1, n = length; + if (n <= INSERTION_SORT_THRESHOLD) { + if (ASC_SHRINK_LEVEL < 1) { + switch (n) { + case 3: { + let a = load(dataStart, 1 << alignof()); + let b = load(dataStart, 2 << alignof()); + let c = comparator(a, b); + store(dataStart, select(a, b, c >>> 31), 1 << alignof()); + b = select(b, a, c >>> 31); + a = load(dataStart, 0); + c = comparator(a, b); + store(dataStart, select(a, b, c >>> 31), 0); + store(dataStart, select(b, a, c >>> 31), 2 << alignof()); + } + case 2: { + let a = load(dataStart, 0); + let b = load(dataStart, 1 << alignof()); + let c = comparator(a, b); + store(dataStart, select(a, b, c >>> 31), 0); + store(dataStart, select(b, a, c >>> 31), 1 << alignof()); + } + case 1: + case 0: return; + } } + insertionSort(dataStart, 0, hi, 0, comparator); + return; } -} -function insertionSort( - dataStart: usize, - length: i32, - comparator: (a: T, b: T) => i32 -): void { - for (let i = 0; i < length; i++) { - let a: T = load(dataStart + (i << alignof())); // a = arr[i] - let j = i - 1; - while (j >= 0) { - let b: T = load(dataStart + (j << alignof())); // b = arr[j] - if (comparator(a, b) < 0) { - store(dataStart + ((j-- + 1) << alignof()), b); // arr[j + 1] = b - } else break; - } - store(dataStart + ((j + 1) << alignof()), a); // arr[j + 1] = a + var lgPlus2 = log2u(n) + 2; + var lgPlus2Size = lgPlus2 << alignof(); + var leftRunStartBuf = __alloc(lgPlus2Size); + var leftRunEndBuf = __alloc(lgPlus2Size); + + for (let i: u32 = 0; i < lgPlus2; ++i) { + store(leftRunStartBuf + (i << alignof()), EMPTY); + // store(leftRunEndBuf + (i << alignof()), 0); // ? } -} -function weakHeapSort( - dataStart: usize, - length: i32, - comparator: (a: T, b: T) => i32 -): void { - const shift32 = alignof(); + var top: u32 = 0; + var buffer = __alloc(n << alignof()); - var bitsetSize = (length + 31) >> 5 << shift32; - var bitset = __alloc(bitsetSize); // indexed in 32-bit chunks below - memory.fill(bitset, 0, bitsetSize); + var startA = 0; + var endA = extendRunRight(dataStart, 0, hi, comparator); - // see: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.1863&rep=rep1&type=pdf + var lenA = endA + 1; + if (lenA < MIN_RUN_LENGTH) { + endA = min(hi, MIN_RUN_LENGTH - 1); + insertionSort(dataStart, startA, endA, lenA, comparator); + } - for (let i = length - 1; i > 0; i--) { - let j = i; - while ((j & 1) == (load(bitset + (j >> 6 << shift32)) >> (j >> 1 & 31) & 1)) j >>= 1; + while (endA < hi) { + let startB = endA + 1; + let endB = extendRunRight(dataStart, startB, hi, comparator); + let lenB = endB - startB + 1; - let p = j >> 1; - let a: T = load(dataStart + (p << alignof())); // a = arr[p] - let b: T = load(dataStart + (i << alignof())); // b = arr[i] - if (comparator(a, b) < 0) { - store( - bitset + (i >> 5 << shift32), - load(bitset + (i >> 5 << shift32)) ^ (1 << (i & 31)) - ); - store(dataStart + (i << alignof()), a); // arr[i] = a - store(dataStart + (p << alignof()), b); // arr[p] = b + if (lenB < MIN_RUN_LENGTH) { + endB = min(hi, startB + MIN_RUN_LENGTH - 1); + insertionSort(dataStart, startB, endB, lenB, comparator); } - } - for (let i = length - 1; i >= 2; i--) { - let a: T = load(dataStart); // a = arr[0] - store(dataStart, load(dataStart + (i << alignof()))); // arr[0] = arr[i] - store(dataStart + (i << alignof()), a); // arr[i] = a + let k = nodePower(0, hi, startA, startB, endB); - let x = 1, y: i32; - while ((y = (x << 1) + ((load(bitset + (x >> 5 << shift32)) >> (x & 31)) & 1)) < i) x = y; + for (let i = top; i > k; --i) { + let start = load(leftRunStartBuf + (i << alignof())); + if (start != EMPTY) { + mergeRuns( + dataStart, + start, + load(leftRunEndBuf + (i << alignof())) + 1, + endA, + buffer, + comparator + ); + startA = start; + store(leftRunStartBuf + (i << alignof()), EMPTY); + } + } - while (x > 0) { - a = load(dataStart); // a = arr[0] - let b: T = load(dataStart + (x << alignof())); // b = arr[x] + store(leftRunStartBuf + (k << alignof()), startA); + store(leftRunEndBuf + (k << alignof()), endA); + startA = startB; + endA = endB; + top = k; + } - if (comparator(a, b) < 0) { - store( - bitset + (x >> 5 << shift32), - load(bitset + (x >> 5 << shift32)) ^ (1 << (x & 31)) - ); - store(dataStart + (x << alignof()), a); // arr[x] = a - store(dataStart, b); // arr[0] = b + for (let i = top; i != 0; --i) { + let start = load(leftRunStartBuf + (i << alignof())); + if (start != EMPTY) { + mergeRuns( + dataStart, + start, + load(leftRunEndBuf + (i << alignof())) + 1, + hi, + buffer, + comparator + ); + } + } + // dealloc aux buffers + __free(buffer); + __free(leftRunEndBuf); + __free(leftRunStartBuf); +} + +function insertionSort( + dataStart: usize, + left: i32, + right: i32, + presorted: i32, + comparator: (a: T, b: T) => i32 +): void { + if (ASC_SHRINK_LEVEL >= 1) { + // slightly improved original insertion sort + for (let i = left + presorted; i <= right; ++i) { + let j = i - 1; + let a = load(dataStart + (i << alignof())); + while (j >= left) { + let b = load(dataStart + (j << alignof())); + if (comparator(a, b) < 0) { + store(dataStart + (j << alignof()), b, 1 << alignof()); --j; + } else break; + } + store(dataStart + (j << alignof()), a, 1 << alignof()); + } + } else { + // even-odd two-way insertion sort which allow increase minRunLen + let range = right - left + 1; + let i = left + select(range & 1, presorted - ((range - presorted) & 1), presorted == 0); + for (; i <= right; i += 2) { + let a = load(dataStart + (i << alignof()), 0); + let b = load(dataStart + (i << alignof()), 1 << alignof()); + let min = b, max = a; + if (comparator(a, b) <= 0) { + min = a, max = b; + } + let j = i - 1; + while (j >= left) { + a = load(dataStart + (j << alignof())); + if (comparator(a, max) > 0) { + store(dataStart + (j << alignof()), a, 2 << alignof()); --j; + } else break; + } + store(dataStart + (j << alignof()), max, 2 << alignof()); + while (j >= left) { + a = load(dataStart + (j << alignof())); + if (comparator(a, min) > 0) { + store(dataStart + (j << alignof()), a, 1 << alignof()); --j; + } else break; } - x >>= 1; + store(dataStart + (j << alignof()), min, 1 << alignof()); } } +} - __free(bitset); +function nodePower(left: u32, right: u32, startA: u32, startB: u32, endB: u32): u32 { + var n: u64 = right - left + 1; + var s = startB - (left << 1); + var l = startA + s; + var r = endB + s + 1; + var a = (l << 30) / n; + var b = (r << 30) / n; + return clz((a ^ b)); +} - var t: T = load(dataStart, sizeof()); // t = arr[1] - store(dataStart, load(dataStart), sizeof()); // arr[1] = arr[0] - store(dataStart, t); // arr[0] = t +function extendRunRight( + dataStart: usize, + i: i32, + right: i32, + comparator: (a: T, b: T) => i32 +): i32 { + if (i == right) return i; + var j = i; + if (comparator( + load(dataStart + ( j << alignof())), + load(dataStart + (++j << alignof())) + ) > 0) { + while ( + j < right && + bool(comparator( + load(dataStart + (j << alignof()), 1 << alignof()), + load(dataStart + (j << alignof())) + ) >>> 31) // < 0 + ) ++j; + // reverse + let k = j; + while (i < k) { + let tmp = load(dataStart + (i << alignof())); + store(dataStart + (i << alignof()), load(dataStart + (k << alignof()))); ++i; + store(dataStart + (k << alignof()), tmp); --k; + } + } else { + while ( + j < right && + comparator( + load(dataStart + (j << alignof()), 1 << alignof()), + load(dataStart + (j << alignof())) + ) >= 0 + ) ++j; + } + return j; +} + +// Merges arr[l..m - 1] and arr[m..r] +function mergeRuns( + dataStart: usize, + l: u32, + m: u32, + r: u32, + buffer: usize, + comparator: (a: T, b: T) => i32 +): void { + --m; // accounts for different convention in Sedgewick’s book + var i: u32, j: u32, k: u32, t = r + m; + for (i = m + 1; i > l; --i) { + store(buffer + ((i - 1) << alignof()), load(dataStart + ((i - 1) << alignof()))); + } + for (j = m; j < r; ++j) { + store(buffer + ((t - j) << alignof()), load(dataStart + (j << alignof()), 1 << alignof())); + } + for (k = l; k <= r; ++k) { + let a = load(buffer + (j << alignof())); + let b = load(buffer + (i << alignof())); + let c = comparator(a, b); + store(dataStart + (k << alignof()), select(a, b, c >>> 31)); // c < 0 + store(dataStart + (k << alignof()), select(b, a, c >>> 31)); // c < 0 + j -= u32(c >>> 31); // c < 0 + i += u32(c >= 0); + } } diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index e68148c362..33b0b65ede 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -1,13 +1,15 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) + (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) (type $none_=>_none (func)) (type $none_=>_f64 (func (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) @@ -50,7 +52,7 @@ (global $std/array/ArrayU32 i32 (i32.const 40)) (global $std/array/ArrayU8 i32 (i32.const 41)) (global $std/array/ArrayStr i32 (i32.const 42)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 31428)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 31492)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 1036) ",") @@ -349,240 +351,244 @@ (data (i32.const 7256) "\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") (data (i32.const 7292) "\bc") (data (i32.const 7304) "\01\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?") - (data (i32.const 7484) "<") - (data (i32.const 7500) " \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") + (data (i32.const 7484) "\1c") + (data (i32.const 7500) "\0c\00\00\00\00\00\00@\00\00\80\bf") + (data (i32.const 7516) "\1c") + (data (i32.const 7528) "\12\00\00\00\08\00\00\00,") (data (i32.const 7548) "\1c") - (data (i32.const 7560) "\12\00\00\00\08\00\00\00,") + (data (i32.const 7564) "\0c\00\00\00\00\00\80\bf\00\00\00\00\00\00\00@") (data (i32.const 7580) "<") - (data (i32.const 7596) " \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") - (data (i32.const 7644) "\\") - (data (i32.const 7660) "@") - (data (i32.const 7670) "\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?") - (data (i32.const 7710) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") - (data (i32.const 7740) "\1c") - (data (i32.const 7752) "\13\00\00\00\08\00\00\00-") - (data (i32.const 7772) "\\") - (data (i32.const 7788) "@") - (data (i32.const 7798) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") - (data (i32.const 7830) "\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") - (data (i32.const 7868) ",") - (data (i32.const 7884) "\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") - (data (i32.const 7916) "\1c") - (data (i32.const 7928) "\14\00\00\00\08\00\00\00.") - (data (i32.const 7948) ",") - (data (i32.const 7964) "\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") - (data (i32.const 7996) ",") - (data (i32.const 8012) "\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") - (data (i32.const 8044) "\1c") - (data (i32.const 8056) "\15\00\00\00\08\00\00\00/") - (data (i32.const 8076) ",") - (data (i32.const 8092) "\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 8124) "\1c") - (data (i32.const 8156) "\1c") - (data (i32.const 8172) "\04\00\00\00\01") + (data (i32.const 7596) " \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f") + (data (i32.const 7644) "<") + (data (i32.const 7660) " \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f") + (data (i32.const 7708) "\\") + (data (i32.const 7724) "@") + (data (i32.const 7734) "\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?") + (data (i32.const 7774) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") + (data (i32.const 7804) "\1c") + (data (i32.const 7816) "\13\00\00\00\08\00\00\00-") + (data (i32.const 7836) "\\") + (data (i32.const 7852) "@") + (data (i32.const 7862) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") + (data (i32.const 7894) "\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f") + (data (i32.const 7932) ",") + (data (i32.const 7948) "\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") + (data (i32.const 7980) "\1c") + (data (i32.const 7992) "\14\00\00\00\08\00\00\00.") + (data (i32.const 8012) ",") + (data (i32.const 8028) "\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") + (data (i32.const 8060) ",") + (data (i32.const 8076) "\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") + (data (i32.const 8108) "\1c") + (data (i32.const 8120) "\15\00\00\00\08\00\00\00/") + (data (i32.const 8140) ",") + (data (i32.const 8156) "\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") (data (i32.const 8188) "\1c") - (data (i32.const 8204) "\08\00\00\00\02\00\00\00\01") - (data (i32.const 8220) ",") - (data (i32.const 8236) "\10\00\00\00\03\00\00\00\02\00\00\00\01") - (data (i32.const 8268) ",") - (data (i32.const 8284) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 8316) "\1c") - (data (i32.const 8328) "\14\00\00\00\08\00\00\000") - (data (i32.const 8348) "\1c") - (data (i32.const 8364) "\04\00\00\00\01") + (data (i32.const 8220) "\1c") + (data (i32.const 8236) "\04\00\00\00\01") + (data (i32.const 8252) "\1c") + (data (i32.const 8268) "\08\00\00\00\02\00\00\00\01") + (data (i32.const 8284) ",") + (data (i32.const 8300) "\10\00\00\00\03\00\00\00\02\00\00\00\01") + (data (i32.const 8332) ",") + (data (i32.const 8348) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") (data (i32.const 8380) "\1c") - (data (i32.const 8396) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 8392) "\14\00\00\00\08\00\00\000") (data (i32.const 8412) "\1c") - (data (i32.const 8424) "\14\00\00\00\08\00\00\001") + (data (i32.const 8428) "\04\00\00\00\01") (data (i32.const 8444) "\1c") - (data (i32.const 8456) "\14\00\00\00\08\00\00\002") + (data (i32.const 8460) "\08\00\00\00\01\00\00\00\02") (data (i32.const 8476) "\1c") - (data (i32.const 8488) "\14\00\00\00\08\00\00\003") + (data (i32.const 8488) "\14\00\00\00\08\00\00\001") (data (i32.const 8508) "\1c") - (data (i32.const 8520) "\14\00\00\00\08\00\00\004") + (data (i32.const 8520) "\14\00\00\00\08\00\00\002") (data (i32.const 8540) "\1c") - (data (i32.const 8552) "\17\00\00\00\08\00\00\005") + (data (i32.const 8552) "\14\00\00\00\08\00\00\003") (data (i32.const 8572) "\1c") - (data (i32.const 8584) "\1a\00\00\00\08\00\00\006") + (data (i32.const 8584) "\14\00\00\00\08\00\00\004") (data (i32.const 8604) "\1c") - (data (i32.const 8616) "\01\00\00\00\02\00\00\00a") + (data (i32.const 8616) "\17\00\00\00\08\00\00\005") (data (i32.const 8636) "\1c") - (data (i32.const 8648) "\01\00\00\00\02\00\00\00b") + (data (i32.const 8648) "\1a\00\00\00\08\00\00\006") (data (i32.const 8668) "\1c") - (data (i32.const 8680) "\01\00\00\00\04\00\00\00a\00b") + (data (i32.const 8680) "\01\00\00\00\02\00\00\00a") (data (i32.const 8700) "\1c") - (data (i32.const 8712) "\01\00\00\00\04\00\00\00b\00a") + (data (i32.const 8712) "\01\00\00\00\02\00\00\00b") (data (i32.const 8732) "\1c") - (data (i32.const 8744) "\01") - (data (i32.const 8764) ",") - (data (i32.const 8780) "\1c\00\00\00\b0!\00\00\d0!\00\00\b0!\00\00\f0!\00\00\10\"\00\000\"") - (data (i32.const 8812) ",") - (data (i32.const 8828) "\1c\00\00\000\"\00\00\b0!\00\00\b0!\00\00\f0!\00\00\d0!\00\00\10\"") - (data (i32.const 8860) "\1c") - (data (i32.const 8872) "\1c\00\00\00\08\00\00\007") - (data (i32.const 8892) "\1c") - (data (i32.const 8904) "\1e\00\00\00\08\00\00\008") + (data (i32.const 8744) "\01\00\00\00\04\00\00\00a\00b") + (data (i32.const 8764) "\1c") + (data (i32.const 8776) "\01\00\00\00\04\00\00\00b\00a") + (data (i32.const 8796) "\1c") + (data (i32.const 8808) "\01") + (data (i32.const 8828) ",") + (data (i32.const 8844) "\1c\00\00\00\f0!\00\00\10\"\00\00\f0!\00\000\"\00\00P\"\00\00p\"") + (data (i32.const 8876) ",") + (data (i32.const 8892) "\1c\00\00\00p\"\00\00\f0!\00\00\f0!\00\000\"\00\00\10\"\00\00P\"") (data (i32.const 8924) "\1c") - (data (i32.const 8940) "\02\00\00\00\01") + (data (i32.const 8936) "\1c\00\00\00\08\00\00\007") (data (i32.const 8956) "\1c") - (data (i32.const 8968) "\01\00\00\00\08\00\00\00t\00r\00u\00e") + (data (i32.const 8968) "\1e\00\00\00\08\00\00\008") (data (i32.const 8988) "\1c") - (data (i32.const 9000) "\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 9004) "\02\00\00\00\01") (data (i32.const 9020) "\1c") - (data (i32.const 9032) "\01\00\00\00\02\00\00\00,") - (data (i32.const 9052) ",") - (data (i32.const 9064) "\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") - (data (i32.const 9100) "\1c") - (data (i32.const 9116) "\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 9132) "|") - (data (i32.const 9144) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 9260) "<") - (data (i32.const 9272) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 9324) "\1c") - (data (i32.const 9336) "\01\00\00\00\02\00\00\000") - (data (i32.const 9356) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 9756) "\1c\04") - (data (i32.const 9768) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data (i32.const 10812) "\\") - (data (i32.const 10824) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 10908) "\1c") - (data (i32.const 10920) "\01\00\00\00\n\00\00\001\00-\002\00-\003") - (data (i32.const 10940) "\1c") - (data (i32.const 10956) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 9032) "\01\00\00\00\08\00\00\00t\00r\00u\00e") + (data (i32.const 9052) "\1c") + (data (i32.const 9064) "\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 9084) "\1c") + (data (i32.const 9096) "\01\00\00\00\02\00\00\00,") + (data (i32.const 9116) ",") + (data (i32.const 9128) "\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") + (data (i32.const 9164) "\1c") + (data (i32.const 9180) "\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data (i32.const 9196) "|") + (data (i32.const 9208) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 9324) "<") + (data (i32.const 9336) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 9388) "\1c") + (data (i32.const 9400) "\01\00\00\00\02\00\00\000") + (data (i32.const 9420) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data (i32.const 9820) "\1c\04") + (data (i32.const 9832) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 10876) "\\") + (data (i32.const 10888) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") (data (i32.const 10972) "\1c") - (data (i32.const 10984) "\01\00\00\00\02\00\00\00-") + (data (i32.const 10984) "\01\00\00\00\n\00\00\001\00-\002\00-\003") (data (i32.const 11004) "\1c") - (data (i32.const 11020) "\08\00\00\00\00\00\00\80\00\00\00\80") + (data (i32.const 11020) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") (data (i32.const 11036) "\1c") - (data (i32.const 11048) "\01\00\00\00\04\00\00\00_\00_") - (data (i32.const 11068) "L") - (data (i32.const 11080) "\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 11148) "L") - (data (i32.const 11164) "0") - (data (i32.const 11182) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data (i32.const 11228) "\1c") - (data (i32.const 11240) "\01\00\00\00\04\00\00\00,\00 ") - (data (i32.const 11260) "\1c") - (data (i32.const 11272) "\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 11048) "\01\00\00\00\02\00\00\00-") + (data (i32.const 11068) "\1c") + (data (i32.const 11084) "\08\00\00\00\00\00\00\80\00\00\00\80") + (data (i32.const 11100) "\1c") + (data (i32.const 11112) "\01\00\00\00\04\00\00\00_\00_") + (data (i32.const 11132) "L") + (data (i32.const 11144) "\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") + (data (i32.const 11212) "L") + (data (i32.const 11228) "0") + (data (i32.const 11246) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") (data (i32.const 11292) "\1c") - (data (i32.const 11304) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 11324) ",") - (data (i32.const 11336) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 11372) ",") - (data (i32.const 11384) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 11480) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") - (data (i32.const 12828) "\1c") - (data (i32.const 12860) "\1c") - (data (i32.const 12876) "\04\00\00\00\01") + (data (i32.const 11304) "\01\00\00\00\04\00\00\00,\00 ") + (data (i32.const 11324) "\1c") + (data (i32.const 11336) "\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 11356) "\1c") + (data (i32.const 11368) "\01\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 11388) ",") + (data (i32.const 11400) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 11436) ",") + (data (i32.const 11448) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 11544) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") (data (i32.const 12892) "\1c") - (data (i32.const 12908) "\08\00\00\00\01\00\00\00\02") - (data (i32.const 12924) ",") - (data (i32.const 12940) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 12972) "\1c") - (data (i32.const 12984) "\01\00\00\00\06\00\00\001\00,\002") - (data (i32.const 13004) ",") - (data (i32.const 13016) "\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") - (data (i32.const 13052) "\1c") - (data (i32.const 13068) "\03\00\00\00\01\ff") - (data (i32.const 13084) "\1c") - (data (i32.const 13096) "\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000") + (data (i32.const 12924) "\1c") + (data (i32.const 12940) "\04\00\00\00\01") + (data (i32.const 12956) "\1c") + (data (i32.const 12972) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 12988) ",") + (data (i32.const 13004) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 13036) "\1c") + (data (i32.const 13048) "\01\00\00\00\06\00\00\001\00,\002") + (data (i32.const 13068) ",") + (data (i32.const 13080) "\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") (data (i32.const 13116) "\1c") - (data (i32.const 13132) "\06\00\00\00\01\00\ff\ff") - (data (i32.const 13148) ",") - (data (i32.const 13160) "\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") - (data (i32.const 13196) ",") - (data (i32.const 13212) "\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 13244) "L") - (data (i32.const 13256) "\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") - (data (i32.const 13324) "<") - (data (i32.const 13340) " \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") - (data (i32.const 13388) "l") - (data (i32.const 13400) "\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 13500) ",") - (data (i32.const 13516) "\1c\00\00\000\"\00\00\b0!\00\00\b0!\00\00\f0!\00\00\d0!\00\00\10\"") - (data (i32.const 13548) ",") - (data (i32.const 13560) "\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") - (data (i32.const 13596) "\1c") - (data (i32.const 13608) "\01\00\00\00\02\00\00\002") - (data (i32.const 13628) "\1c") - (data (i32.const 13640) "\01\00\00\00\02\00\00\004") - (data (i32.const 13660) ",") - (data (i32.const 13676) "\10\00\00\00\f00\00\0005\00\00\00\00\00\00P5") - (data (i32.const 13708) "\1c") - (data (i32.const 13720) "\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004") - (data (i32.const 13740) "\1c") - (data (i32.const 13756) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 13132) "\03\00\00\00\01\ff") + (data (i32.const 13148) "\1c") + (data (i32.const 13160) "\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000") + (data (i32.const 13180) "\1c") + (data (i32.const 13196) "\06\00\00\00\01\00\ff\ff") + (data (i32.const 13212) ",") + (data (i32.const 13224) "\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") + (data (i32.const 13260) ",") + (data (i32.const 13276) "\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 13308) "L") + (data (i32.const 13320) "\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") + (data (i32.const 13388) "<") + (data (i32.const 13404) " \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") + (data (i32.const 13452) "l") + (data (i32.const 13464) "\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") + (data (i32.const 13564) ",") + (data (i32.const 13580) "\1c\00\00\00p\"\00\00\f0!\00\00\f0!\00\000\"\00\00\10\"\00\00P\"") + (data (i32.const 13612) ",") + (data (i32.const 13624) "\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") + (data (i32.const 13660) "\1c") + (data (i32.const 13672) "\01\00\00\00\02\00\00\002") + (data (i32.const 13692) "\1c") + (data (i32.const 13704) "\01\00\00\00\02\00\00\004") + (data (i32.const 13724) ",") + (data (i32.const 13740) "\10\00\00\0001\00\00p5\00\00\00\00\00\00\905") (data (i32.const 13772) "\1c") - (data (i32.const 13788) "\08\00\00\00\03\00\00\00\04") - (data (i32.const 13804) ",") - (data (i32.const 13816) "\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") - (data (i32.const 13852) "\1c") - (data (i32.const 13868) "\02\00\00\00\01\02") - (data (i32.const 13884) "\1c") - (data (i32.const 13900) "\02\00\00\00\03\04") + (data (i32.const 13784) "\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004") + (data (i32.const 13804) "\1c") + (data (i32.const 13820) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 13836) "\1c") + (data (i32.const 13852) "\08\00\00\00\03\00\00\00\04") + (data (i32.const 13868) ",") + (data (i32.const 13880) "\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") (data (i32.const 13916) "\1c") - (data (i32.const 13932) "\04\00\00\00\01") + (data (i32.const 13932) "\02\00\00\00\01\02") (data (i32.const 13948) "\1c") - (data (i32.const 13964) "\04") + (data (i32.const 13964) "\02\00\00\00\03\04") (data (i32.const 13980) "\1c") - (data (i32.const 13996) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 13996) "\04\00\00\00\01") (data (i32.const 14012) "\1c") - (data (i32.const 14028) "\0c\00\00\00\04\00\00\00\05\00\00\00\06") + (data (i32.const 14028) "\04") (data (i32.const 14044) "\1c") - (data (i32.const 14060) "\0c\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 14060) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") (data (i32.const 14076) "\1c") - (data (i32.const 14088) "\01\00\00\00\06\00\00\00o\00n\00e") + (data (i32.const 14092) "\0c\00\00\00\04\00\00\00\05\00\00\00\06") (data (i32.const 14108) "\1c") - (data (i32.const 14124) "\04\00\00\00\107") + (data (i32.const 14124) "\0c\00\00\00\07\00\00\00\08\00\00\00\t") (data (i32.const 14140) "\1c") - (data (i32.const 14152) "\01\00\00\00\06\00\00\00t\00w\00o") + (data (i32.const 14152) "\01\00\00\00\06\00\00\00o\00n\00e") (data (i32.const 14172) "\1c") - (data (i32.const 14184) "\01\00\00\00\n\00\00\00t\00h\00r\00e\00e") + (data (i32.const 14188) "\04\00\00\00P7") (data (i32.const 14204) "\1c") - (data (i32.const 14220) "\0c\00\00\00P7\00\00\00\00\00\00p7") + (data (i32.const 14216) "\01\00\00\00\06\00\00\00t\00w\00o") (data (i32.const 14236) "\1c") - (data (i32.const 14248) "\01\00\00\00\08\00\00\00f\00o\00u\00r") + (data (i32.const 14248) "\01\00\00\00\n\00\00\00t\00h\00r\00e\00e") (data (i32.const 14268) "\1c") - (data (i32.const 14280) "\01\00\00\00\08\00\00\00f\00i\00v\00e") + (data (i32.const 14284) "\0c\00\00\00\907\00\00\00\00\00\00\b07") (data (i32.const 14300) "\1c") - (data (i32.const 14312) "\01\00\00\00\06\00\00\00s\00i\00x") + (data (i32.const 14312) "\01\00\00\00\08\00\00\00f\00o\00u\00r") (data (i32.const 14332) "\1c") - (data (i32.const 14348) "\0c\00\00\00\b07\00\00\d07\00\00\f07") + (data (i32.const 14344) "\01\00\00\00\08\00\00\00f\00i\00v\00e") (data (i32.const 14364) "\1c") - (data (i32.const 14376) "\01\00\00\00\n\00\00\00s\00e\00v\00e\00n") + (data (i32.const 14376) "\01\00\00\00\06\00\00\00s\00i\00x") (data (i32.const 14396) "\1c") - (data (i32.const 14412) "\04\00\00\0008") - (data (i32.const 14428) "<") - (data (i32.const 14444) " \00\00\00\107\00\00P7\00\00\00\00\00\00p7\00\00\b07\00\00\d07\00\00\f07\00\0008") - (data (i32.const 14492) "\1c") - (data (i32.const 14524) "\1c") - (data (i32.const 14556) "<") - (data (i32.const 14568) "\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e") - (data (i32.const 14620) "\1c") - (data (i32.const 14632) "+\00\00\00\08\00\00\009") - (data (i32.const 14652) "\1c") - (data (i32.const 14664) "\1e\00\00\00\08\00\00\00:") - (data (i32.const 14688) ",\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 14716) "\02\t\00\00\00\00\00\00 \00\00\00\00\00\00\00A\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02a") - (data (i32.const 14868) "\02A") - (data (i32.const 14884) " \00\00\00\00\00\00\00\02A") - (data (i32.const 14908) "\02a") - (data (i32.const 14924) "\02A") - (data (i32.const 14940) "B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\01\00\00\07\00\00\00B\00\00\00\06\00\00\00\02A\00\00\1d") + (data (i32.const 14412) "\0c\00\00\00\f07\00\00\108\00\0008") + (data (i32.const 14428) "\1c") + (data (i32.const 14440) "\01\00\00\00\n\00\00\00s\00e\00v\00e\00n") + (data (i32.const 14460) "\1c") + (data (i32.const 14476) "\04\00\00\00p8") + (data (i32.const 14492) "<") + (data (i32.const 14508) " \00\00\00P7\00\00\907\00\00\00\00\00\00\b07\00\00\f07\00\00\108\00\0008\00\00p8") + (data (i32.const 14556) "\1c") + (data (i32.const 14588) "\1c") + (data (i32.const 14620) "<") + (data (i32.const 14632) "\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e") + (data (i32.const 14684) "\1c") + (data (i32.const 14696) "+\00\00\00\08\00\00\009") + (data (i32.const 14716) "\1c") + (data (i32.const 14728) "\1e\00\00\00\08\00\00\00:") + (data (i32.const 14752) ",\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 14780) "\02\t\00\00\00\00\00\00 \00\00\00\00\00\00\00A\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02a") + (data (i32.const 14932) "\02A") + (data (i32.const 14948) " \00\00\00\00\00\00\00\02A") + (data (i32.const 14972) "\02a") + (data (i32.const 14988) "\02A") + (data (i32.const 15004) "B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\01\00\00\07\00\00\00B\00\00\00\06\00\00\00\02A\00\00\1d") (table $0 59 funcref) (elem $0 (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|16 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0) (export "ArrayU32" (global $std/array/ArrayU32)) @@ -687,7 +693,7 @@ call $~lib/rt/itcms/__visit i32.const 1056 call $~lib/rt/itcms/__visit - i32.const 14576 + i32.const 14640 call $~lib/rt/itcms/__visit i32.const 2176 call $~lib/rt/itcms/__visit @@ -695,9 +701,9 @@ call $~lib/rt/itcms/__visit i32.const 1152 call $~lib/rt/itcms/__visit - i32.const 9776 + i32.const 9840 call $~lib/rt/itcms/__visit - i32.const 10832 + i32.const 10896 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -770,7 +776,7 @@ if i32.const 0 local.get $0 - i32.const 31428 + i32.const 31492 i32.lt_u local.get $0 i32.load offset=8 @@ -821,7 +827,7 @@ i32.const 1 else local.get $1 - i32.const 14688 + i32.const 14752 i32.load i32.gt_u if @@ -835,7 +841,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 14692 + i32.const 14756 i32.add i32.load i32.const 32 @@ -1431,10 +1437,10 @@ if unreachable end - i32.const 31440 + i32.const 31504 i32.const 0 i32.store - i32.const 33008 + i32.const 33072 i32.const 0 i32.store loop $for-loop|0 @@ -1445,7 +1451,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 31440 + i32.const 31504 i32.add i32.const 0 i32.store offset=4 @@ -1463,7 +1469,7 @@ i32.add i32.const 2 i32.shl - i32.const 31440 + i32.const 31504 i32.add i32.const 0 i32.store offset=96 @@ -1481,20 +1487,20 @@ br $for-loop|0 end end - i32.const 31440 - i32.const 33012 + i32.const 31504 + i32.const 33076 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 31440 + i32.const 31504 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 31428 + i32.const 31492 i32.lt_u if return @@ -1623,7 +1629,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 31428 + i32.const 31492 i32.lt_u if local.get $0 @@ -1718,7 +1724,7 @@ unreachable end local.get $0 - i32.const 31428 + i32.const 31492 i32.lt_u if local.get $0 @@ -4553,1032 +4559,576 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 f32) - (local $6 i32) + (local $6 f32) (local $7 f32) (local $8 i32) local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - local.set $4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.get $2 + local.get $1 + i32.sub + i32.const 1 i32.add - local.tee $6 - i32.const 0 + local.tee $8 + i32.const 1 + i32.and local.get $3 - call $~lib/memory/memory.fill - local.get $1 + local.get $8 + local.get $3 + i32.sub i32.const 1 + i32.and i32.sub - local.set $4 + local.get $3 + i32.eqz + select + i32.add + local.set $8 loop $for-loop|0 - local.get $4 - i32.const 0 - i32.gt_s + local.get $2 + local.get $8 + i32.ge_s if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $6 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end - end local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $3 + local.get $8 i32.const 2 i32.shl i32.add + local.tee $3 f32.load local.set $5 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $7 + local.get $3 + f32.load offset=4 + local.tee $7 + local.set $6 i32.const 2 global.set $~argumentsLength local.get $5 local.get $7 - local.get $2 + local.get $4 i32.load call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 - i32.lt_s + i32.le_s if - local.get $6 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add local.get $5 - f32.store - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add + local.set $6 local.get $7 - f32.store + local.set $5 end - local.get $4 + local.get $8 i32.const 1 i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 - i32.const 2 - i32.ge_s - if - local.get $0 - f32.load - local.set $5 - local.get $0 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - f32.load - f32.store - local.get $1 - local.get $5 - f32.store - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 + local.set $3 + loop $while-continue|1 local.get $1 - i32.const 0 - i32.gt_s + local.get $3 + i32.le_s if - local.get $0 - f32.load - local.set $5 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u + block $while-break|1 + local.get $0 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 - local.get $3 + f32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $5 + local.get $4 i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 local.get $0 - local.get $1 + local.get $3 i32.const 2 i32.shl i32.add - local.get $5 - f32.store - local.get $0 local.get $7 - f32.store + f32.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 end end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 - end - end - local.get $6 - call $~lib/rt/tlsf/__free - local.get $0 - f32.load offset=4 - local.set $5 - local.get $0 - local.get $0 - f32.load - f32.store offset=4 - local.get $0 - local.get $5 - f32.store - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.reinterpret_f32 - local.tee $2 - local.get $2 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - i32.xor - local.tee $2 - local.get $1 - i32.reinterpret_f32 - local.tee $3 - local.get $3 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - i32.xor - local.tee $3 - i32.gt_s - local.get $2 - local.get $3 - i32.lt_s - i32.sub + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store offset=4 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $6 + f32.store offset=4 + local.get $8 + i32.const 2 + i32.add + local.set $8 + br $for-loop|0 + end + end ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 f64) - (local $8 i32) + (local $5 f32) + (local $6 f32) + (local $7 i32) local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - local.set $4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $2 + i32.eq if - call $~lib/rt/tlsf/initialize + local.get $1 + return end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - local.tee $6 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill + f32.load + local.get $0 local.get $1 i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $4 - i32.const 0 - i32.gt_s - if + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $6 - local.get $3 - i32.const 6 - i32.shr_u + i32.gt_s + if (result i32) + local.get $0 + local.get $4 i32.const 2 i32.shl i32.add - i32.load + local.tee $7 + f32.load offset=4 + local.get $7 + f32.load + i32.const 2 + global.set $~argumentsLength local.get $3 - i32.const 1 - i32.shr_s + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 i32.shr_u + else + i32.const 0 + end + if + local.get $4 i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end + i32.add + local.set $4 + br $while-continue|0 end - local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $5 - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 i32.lt_s if - local.get $6 - local.get $4 - i32.const 5 - i32.shr_u + local.get $0 + local.get $1 i32.const 2 i32.shl i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store + local.tee $3 + f32.load + local.set $5 + local.get $3 local.get $0 - local.get $4 - i32.const 3 + local.get $2 + i32.const 2 i32.shl i32.add + local.tee $3 + f32.load + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 local.get $5 - f64.store + f32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) local.get $0 - local.get $3 - i32.const 3 + local.get $4 + i32.const 2 i32.shl i32.add - local.get $7 - f64.store - end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 - i32.const 2 - i32.ge_s - if - local.get $0 - f64.load - local.set $5 - local.get $0 - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - f64.load - f64.store - local.get $1 - local.get $5 - f64.store - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $6 + local.tee $1 + f32.load offset=4 local.get $1 - i32.const 5 - i32.shr_u + f32.load i32.const 2 - i32.shl - i32.add + global.set $~argumentsLength + local.get $3 i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 i32.const 1 - i32.shl i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - f64.load - local.set $5 - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $5 - f64.store - local.get $0 - local.get $7 - f64.store - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end + local.set $4 + br $while-continue|2 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 end end - local.get $6 - call $~lib/rt/tlsf/__free - local.get $0 - f64.load offset=8 - local.set $5 - local.get $0 - local.get $0 - f64.load - f64.store offset=8 - local.get $0 - local.get $5 - f64.store - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - local.get $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.tee $2 - local.get $1 - i64.reinterpret_f64 - local.tee $3 - local.get $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.tee $3 - i64.gt_s - local.get $2 - local.get $3 - i64.lt_s - i32.sub - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1344 - i32.const 1104 - i32.const 99 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load + local.get $4 ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - local.set $4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $5 - i32.const 0 + (local $9 f32) + (local $10 f32) + (local $11 i32) local.get $3 - call $~lib/memory/memory.fill - local.get $1 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 loop $for-loop|0 - local.get $4 - i32.const 0 - i32.gt_s + local.get $1 + local.get $2 + i32.lt_u if local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $5 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end - end - local.get $0 - local.get $3 + local.get $2 i32.const 1 - i32.shr_s - local.tee $7 + i32.sub + local.tee $2 i32.const 2 i32.shl + local.tee $8 i32.add - i32.load - local.set $3 local.get $0 - local.get $4 - i32.const 2 - i32.shl + local.get $8 i32.add - i32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - end + f32.load + f32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u + if local.get $4 - i32.const 1 + local.get $7 + local.get $6 i32.sub - local.set $4 - br $for-loop|0 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + f32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 end end - local.get $1 - i32.const 1 - i32.sub - local.set $4 loop $for-loop|2 - local.get $4 - i32.const 2 - i32.ge_s + local.get $1 + local.get $3 + i32.le_u if - local.get $0 - i32.load - local.set $1 - local.get $0 - local.get $0 local.get $4 + local.get $6 i32.const 2 i32.shl i32.add - local.tee $3 + f32.load + local.set $9 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 + local.get $5 i32.load - i32.store - local.get $3 + call_indirect $0 (type $f32_f32_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + f32.store + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select + f32.store + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 + i32.const 0 + i32.ge_s + i32.add + local.set $2 local.get $1 - i32.store i32.const 1 + i32.add local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.set $3 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store - local.get $0 - local.get $6 - i32.store - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end - end - local.get $4 - i32.const 1 - i32.sub - local.set $4 br $for-loop|2 end end - local.get $5 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $1 - i32.store ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - i32.load offset=12 - local.tee $3 + (local $9 i32) + (local $10 f32) + (local $11 f32) + (local $12 i32) + (local $13 i32) + (local $14 f32) + (local $15 i32) + (local $16 i64) + local.get $1 i32.const 1 + i32.sub + local.set $9 + local.get $1 + i32.const 128 i32.le_s if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.set $2 - local.get $3 - i32.const 2 - i32.eq - if - local.get $2 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load - local.set $3 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $3 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $3 - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - local.get $0 - return - end - local.get $3 - local.tee $4 - i32.const 256 - i32.lt_s - if - local.get $2 - local.set $3 - local.get $1 - local.set $5 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|1 - local.get $1 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $1 - local.tee $2 - i32.const 1 - i32.sub - local.set $1 - local.get $3 - local.get $2 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - br $while-continue|1 - end + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 end + local.get $0 + f32.load offset=4 + local.set $14 + local.get $0 + f32.load offset=8 + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $14 + local.get $10 + local.get $14 + local.get $10 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + f32.store offset=4 + local.get $0 + f32.load + local.set $11 + i32.const 2 + global.set $~argumentsLength + local.get $11 + local.get $10 + local.get $14 + local.get $1 + select + local.tee $10 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $11 + local.get $10 + local.get $1 + select + f32.store + local.get $0 + local.get $10 + local.get $11 + local.get $1 + select + f32.store offset=8 end - local.get $3 - local.get $1 - i32.const 1 - i32.add + local.get $0 + f32.load + local.set $11 + local.get $0 + f32.load offset=4 + local.set $10 i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 + global.set $~argumentsLength + local.get $0 + local.get $11 + local.get $10 + local.get $11 + local.get $10 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + f32.store + local.get $0 + local.get $10 + local.get $11 + local.get $1 + select + f32.store offset=4 end + return end - else + local.get $0 + i32.const 0 + local.get $9 + i32.const 0 local.get $2 - local.get $4 - local.get $1 - call $~lib/util/sort/weakHeapSort + call $~lib/util/sort/insertionSort + return end - local.get $0 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 + i32.const 33 local.get $1 + i32.clz i32.sub - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u + local.tee $6 i32.const 2 i32.shl - local.tee $3 - local.set $4 + local.tee $4 + local.set $7 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -5589,629 +5139,4042 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $5 + local.set $13 i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub local.set $4 - loop $for-loop|0 + loop $for-loop|1 local.get $4 - i32.const 0 - i32.gt_s + local.get $6 + i32.lt_u if + local.get $12 local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $5 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $7 i32.const 2 i32.shl i32.add - i32.load - local.set $3 - local.get $0 + i32.const -1 + i32.store local.get $4 - i32.const 2 - i32.shl + i32.const 1 i32.add - i32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - end - local.get $4 - i32.const 1 - i32.sub local.set $4 - br $for-loop|0 + br $for-loop|1 end end local.get $1 + i32.const 2 + i32.shl + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 + local.get $0 + i32.const 0 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 + i32.add + local.tee $4 + i32.const 32 + i32.lt_s + if + local.get $0 + i32.const 0 + local.get $9 + i32.const 31 + local.get $9 + i32.const 31 + i32.lt_s + select + local.tee $1 local.get $4 - i32.const 2 - i32.ge_s + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $9 + i32.lt_s if local.get $0 - i32.load - local.set $1 - local.get $0 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $3 local.get $1 - i32.store i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $7 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 + i32.lt_s + if + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 i32.add - local.tee $3 + local.tee $4 + local.get $4 + local.get $9 i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end + select + local.tee $7 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $16 + i64.div_u + local.get $6 + local.get $7 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $16 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $4 + loop $for-loop|3 + local.get $4 + local.get $5 + i32.lt_u if - local.get $0 - i32.load - local.set $3 - local.get $0 - local.get $1 + local.get $12 + local.get $5 i32.const 2 i32.shl i32.add i32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + local.tee $8 + i32.const -1 + i32.ne if + local.get $0 + local.get $8 + local.get $13 local.get $5 - local.get $1 - i32.const 5 - i32.shr_u i32.const 2 i32.shl + local.tee $3 i32.add - local.tee $7 - local.get $7 i32.load i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 2 - i32.shl i32.add + local.get $1 + local.get $15 + local.get $2 + call $~lib/util/sort/mergeRuns local.get $3 + local.get $12 + i32.add + i32.const -1 i32.store - local.get $0 - local.get $6 - i32.store + local.get $8 + local.set $3 end - local.get $1 + local.get $5 i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 + i32.sub + local.set $5 + br $for-loop|3 end end + local.get $12 + local.get $4 + i32.const 2 + i32.shl + local.tee $5 + i32.add + local.get $3 + i32.store + local.get $5 + local.get $13 + i32.add + local.get $1 + i32.store + local.get $6 + local.set $3 + local.get $7 + local.set $1 local.get $4 + local.set $5 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $5 + if + local.get $12 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $13 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $9 + local.get $15 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $5 i32.const 1 i32.sub - local.set $4 - br $for-loop|2 + local.set $5 + br $for-loop|4 end end - local.get $5 + local.get $15 + call $~lib/rt/tlsf/__free + local.get $13 + call $~lib/rt/tlsf/__free + local.get $12 call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $1 - i32.store ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $~lib/math/NativeMath.random (result f64) - (local $0 i64) - (local $1 i64) - global.get $~lib/math/random_seeded - i32.eqz - if - call $~lib/builtins/seed - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - end - global.get $~lib/math/random_state0_64 - local.set $0 - global.get $~lib/math/random_state1_64 - local.tee $1 - global.set $~lib/math/random_state0_64 - local.get $1 - local.get $0 - local.get $0 - i64.const 23 - i64.shl - i64.xor - local.tee $0 - local.get $0 - i64.const 17 - i64.shr_u - i64.xor - i64.xor - local.get $1 - i64.const 26 - i64.shr_u - i64.xor - global.set $~lib/math/random_state1_64 - local.get $1 - i64.const 12 - i64.shr_u - i64.const 4607182418800017408 - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub - ) - (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.sub - ) - (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) + (local $2 i32) (local $3 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1344 - i32.const 1104 - i32.const 115 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $3 - i32.store offset=12 - end local.get $0 - local.get $1 + i32.reinterpret_f32 + local.tee $2 local.get $2 - call $~lib/array/Array#__uset - ) - (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - local.get $1 - i32.const 0 - call $~lib/array/Array#__get - i32.sub - ) - (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.tee $2 local.get $1 - i32.load + i32.reinterpret_f32 + local.tee $3 + local.get $3 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.tee $3 + i32.gt_s + local.get $2 + local.get $3 + i32.lt_s i32.sub ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) + (local $3 f32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - i32.const 0 - i32.const 0 - local.get $0 local.get $0 + i32.load offset=12 + local.tee $4 local.get $1 - i32.eq - select - select - i32.eqz + i32.load offset=12 + i32.ne if i32.const 0 return end local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $6 local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.or - i32.eqz - if - i32.const 0 - return - end - local.get $6 - i32.eqz - if - i32.const -1 - return - end - local.get $5 - i32.eqz + i32.eq if i32.const 1 return end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 - local.get $6 - local.get $5 - local.get $5 - local.get $6 - i32.gt_s - select - local.tee $3 - i32.const 4 - i32.ge_u - select - i32.eqz + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s if - loop $do-continue|0 - local.get $0 - i64.load + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f32.ne + if (result i32) local.get $1 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $3 - i32.const 4 - i32.sub - local.tee $3 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f32.ne + else + i32.const 0 end - end - loop $while-continue|1 - local.get $3 - local.tee $2 - i32.const 1 - i32.sub - local.set $3 - local.get $2 + i32.eqz if local.get $0 - i32.load16_u - local.tee $2 + local.get $2 + call $~lib/array/Array#__get local.get $1 - i32.load16_u - local.tee $4 - i32.ne + local.get $2 + call $~lib/array/Array#__get + f32.ne if - local.get $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl + i32.const 0 + return end - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 end - end - i32.const 0 - end - local.tee $0 - local.get $6 - local.get $5 - i32.sub - local.get $0 - select + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 f64) + (local $6 f64) + (local $7 f64) + (local $8 i32) local.get $1 - i32.eq - if - i32.const 1 - return - end + local.get $2 local.get $1 - i32.const 0 - local.get $0 - select - i32.eqz - if - i32.const 0 - return - end - local.get $0 - i32.const 20 i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u - local.tee $2 - local.get $1 - i32.const 20 + i32.add + local.tee $8 + i32.const 1 + i32.and + local.get $3 + local.get $8 + local.get $3 i32.sub - i32.load offset=16 i32.const 1 - i32.shr_u - i32.ne - if - i32.const 0 - return - end - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - i32.const 7 - i32.and - i32.or - i32.const 1 + i32.and + i32.sub + local.get $3 + i32.eqz + select + i32.add + local.set $8 + loop $for-loop|0 local.get $2 - local.tee $0 - i32.const 4 - i32.ge_u - select - i32.eqz + local.get $8 + i32.ge_s if - loop $do-continue|0 - local.get $3 - i64.load + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + local.set $5 + local.get $3 + f64.load offset=8 + local.tee $7 + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 + local.get $4 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $7 + local.set $5 + end + local.get $8 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 local.get $1 - i64.load - i64.eq + local.get $3 + i32.le_s if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-continue|0 + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $7 + f64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end end end - end - loop $while-continue|1 local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - if - local.get $3 - i32.load16_u - local.tee $2 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store offset=16 + loop $while-continue|2 local.get $1 - i32.load16_u - local.tee $4 - i32.ne + local.get $3 + i32.le_s if - local.get $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 end + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $6 + f64.store offset=8 + local.get $8 + i32.const 2 + i32.add + local.set $8 + br $for-loop|0 end - i32.const 0 end - i32.eqz ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15044 - i32.lt_s + (local $5 f64) + (local $6 f64) + (local $7 i32) + local.get $1 + local.get $2 + i32.eq if - i32.const 31456 - i32.const 31504 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $__inlined_func$~lib/string/String#concat - local.get $0 - i32.const 20 - i32.sub + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $7 + f64.load offset=8 + local.get $7 + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + f64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + f64.load offset=8 + local.get $1 + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f64) + (local $10 f64) + (local $11 i32) + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $4 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 3 + i32.shl + local.tee $8 + i32.add + local.get $0 + local.get $8 + i32.add + f64.load + f64.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + f64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_u + if + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $9 + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 + local.get $5 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + f64.store + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select + f64.store + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 + i32.const 0 + i32.ge_s + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 f64) + (local $11 f64) + (local $12 i32) + (local $13 i32) + (local $14 f64) + (local $15 i32) + (local $16 i64) + local.get $1 + i32.const 1 + i32.sub + local.set $9 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + f64.load offset=8 + local.set $14 + local.get $0 + f64.load offset=16 + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $14 + local.get $10 + local.get $14 + local.get $10 + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + f64.store offset=8 + local.get $0 + f64.load + local.set $11 + i32.const 2 + global.set $~argumentsLength + local.get $11 + local.get $10 + local.get $14 + local.get $1 + select + local.tee $10 + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $11 + local.get $10 + local.get $1 + select + f64.store + local.get $0 + local.get $10 + local.get $11 + local.get $1 + select + f64.store offset=16 + end + local.get $0 + f64.load + local.set $11 + local.get $0 + f64.load offset=8 + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $11 + local.get $10 + local.get $11 + local.get $10 + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + f64.store + local.get $0 + local.get $10 + local.get $11 + local.get $1 + select + f64.store offset=8 + end + return + end + local.get $0 + i32.const 0 + local.get $9 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $6 + i32.const 2 + i32.shl + local.tee $4 + local.set $7 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $6 + i32.lt_u + if + local.get $12 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|1 + end + end + local.get $1 + i32.const 3 + i32.shl + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 + local.get $0 + i32.const 0 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 32 + i32.lt_s + if + local.get $0 + i32.const 0 + local.get $9 + i32.const 31 + local.get $9 + i32.const 31 + i32.lt_s + select + local.tee $1 + local.get $4 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $9 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $7 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 + i32.lt_s + if + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $4 + local.get $4 + local.get $9 + i32.gt_s + select + local.tee $7 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $16 + i64.div_u + local.get $6 + local.get $7 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $16 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $4 + loop $for-loop|3 + local.get $4 + local.get $5 + i32.lt_u + if + local.get $12 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $0 + local.get $8 + local.get $13 + local.get $5 + i32.const 2 + i32.shl + local.tee $3 + i32.add + i32.load + i32.const 1 + i32.add + local.get $1 + local.get $15 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $3 + local.get $12 + i32.add + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $for-loop|3 + end + end + local.get $12 + local.get $4 + i32.const 2 + i32.shl + local.tee $5 + i32.add + local.get $3 + i32.store + local.get $5 + local.get $13 + i32.add + local.get $1 + i32.store + local.get $6 + local.set $3 + local.get $7 + local.set $1 + local.get $4 + local.set $5 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $5 + if + local.get $12 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $13 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $9 + local.get $15 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $for-loop|4 + end + end + local.get $15 + call $~lib/rt/tlsf/__free + local.get $13 + call $~lib/rt/tlsf/__free + local.get $12 + call $~lib/rt/tlsf/__free + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + local.get $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.tee $2 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + local.get $3 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.tee $3 + i64.gt_s + local.get $2 + local.get $3 + i64.lt_s + i32.sub + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 99 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.eqz + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.set $3 + local.get $5 + i32.load offset=4 + local.tee $6 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $4 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_u + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $9 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + i32.store + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select + i32.store + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 + i32.const 0 + i32.ge_s + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $13 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $3 + local.get $5 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store offset=4 + local.get $0 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $5 + local.get $1 + select + local.tee $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $7 + local.get $3 + local.get $1 + select + i32.store + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $7 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $7 + local.get $3 + local.get $7 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store offset=4 + end + return + end + local.get $0 + i32.const 0 + local.get $13 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $7 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $4 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + i32.const 2 + i32.shl + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $10 + local.get $0 + i32.const 0 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + local.get $0 + i32.const 0 + local.get $13 + i32.const 31 + local.get $13 + i32.const 31 + i32.lt_s + select + local.tee $1 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $13 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $4 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 + i32.lt_s + if + local.get $0 + local.get $4 + local.get $13 + local.get $4 + i32.const 31 + i32.add + local.tee $7 + local.get $7 + local.get $13 + i32.gt_s + select + local.tee $5 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $4 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $4 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $6 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $0 + local.get $8 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + local.tee $3 + i32.add + i32.load + i32.const 1 + i32.add + local.get $1 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $3 + local.get $12 + i32.add + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|3 + end + end + local.get $12 + local.get $7 + i32.const 2 + i32.shl + local.tee $6 + i32.add + local.get $3 + i32.store + local.get $6 + local.get $11 + i32.add + local.get $1 + i32.store + local.get $4 + local.set $3 + local.get $5 + local.set $1 + local.get $7 + local.set $6 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $6 + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $13 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 + end + end + local.get $10 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $12 + call $~lib/rt/tlsf/__free + ) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.le_s + if + local.get $0 + return + end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $4 + i32.store offset=4 + local.get $3 + local.get $2 + i32.store + end + local.get $0 + return + end + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.eqz + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.set $3 + local.get $5 + i32.load offset=4 + local.tee $6 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $4 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_u + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $9 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + i32.store + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select + i32.store + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 + i32.const 0 + i32.ge_s + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $13 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $3 + local.get $5 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store offset=4 + local.get $0 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $5 + local.get $1 + select + local.tee $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $7 + local.get $3 + local.get $1 + select + i32.store + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $7 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $7 + local.get $3 + local.get $7 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store offset=4 + end + return + end + local.get $0 + i32.const 0 + local.get $13 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $7 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $4 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + i32.const 2 + i32.shl + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $10 + local.get $0 + i32.const 0 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + local.get $0 + i32.const 0 + local.get $13 + i32.const 31 + local.get $13 + i32.const 31 + i32.lt_s + select + local.tee $1 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $13 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $4 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 + i32.lt_s + if + local.get $0 + local.get $4 + local.get $13 + local.get $4 + i32.const 31 + i32.add + local.tee $7 + local.get $7 + local.get $13 + i32.gt_s + select + local.tee $5 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $4 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $4 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $6 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $0 + local.get $8 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + local.tee $3 + i32.add + i32.load + i32.const 1 + i32.add + local.get $1 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $3 + local.get $12 + i32.add + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|3 + end + end + local.get $12 + local.get $7 + i32.const 2 + i32.shl + local.tee $6 + i32.add + local.get $3 + i32.store + local.get $6 + local.get $11 + i32.add + local.get $1 + i32.store + local.get $4 + local.set $3 + local.get $5 + local.set $1 + local.get $7 + local.set $6 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $6 + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $13 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 + end + end + local.get $10 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $12 + call $~lib/rt/tlsf/__free + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u + i32.sub + ) + (func $~lib/math/NativeMath.random (result f64) + (local $0 i64) + (local $1 i64) + global.get $~lib/math/random_seeded + i32.eqz + if + call $~lib/builtins/seed + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + end + global.get $~lib/math/random_state0_64 + local.set $0 + global.get $~lib/math/random_state1_64 + local.tee $1 + global.set $~lib/math/random_state0_64 + local.get $1 + local.get $0 + local.get $0 + i64.const 23 + i64.shl + i64.xor + local.tee $0 + local.get $0 + i64.const 17 + i64.shr_u + i64.xor + i64.xor + local.get $1 + i64.const 26 + i64.shr_u + i64.xor + global.set $~lib/math/random_state1_64 + local.get $1 + i64.const 12 + i64.shr_u + i64.const 4607182418800017408 + i64.or + f64.reinterpret_i64 + f64.const 1 + f64.sub + ) + (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.sub + ) + (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1344 + i32.const 1104 + i32.const 115 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + ) + (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.sub + ) + (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15108 + i32.lt_s + if + i32.const 31520 + i32.const 31568 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $6 + i32.const 1 + i32.and + local.get $3 + local.get $6 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.eqz + select + i32.add + local.set $8 + loop $for-loop|0 + local.get $2 + local.get $8 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.tee $6 + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.tee $3 + i32.store + local.get $6 + local.get $5 + i32.load offset=4 + local.tee $6 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.set $5 + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $8 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.store + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.add + local.set $8 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/mergeRuns<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15108 + i32.lt_s + if + i32.const 31520 + i32.const 31568 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + i32.add + local.set $8 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $4 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $7 + i32.add + local.get $0 + local.get $7 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u + if + local.get $4 + local.get $8 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_u + if + global.get $~lib/memory/__stack_pointer + local.tee $7 + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store + local.get $7 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $10 + local.get $8 + local.get $7 + local.get $8 + local.get $7 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.tee $11 + i32.const 31 + i32.shr_u + local.tee $9 + select + i32.store + local.get $10 + local.get $7 + local.get $8 + local.get $9 + select + i32.store + local.get $6 + local.get $9 + i32.sub + local.set $6 + local.get $2 + local.get $11 + i32.const 0 + i32.ge_s + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15108 + i32.lt_s + if + i32.const 31520 + i32.const 31568 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $7 + i64.const 0 + i64.store + local.get $7 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.sub + local.set $13 + block $folding-inner0 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $folding-inner0 $folding-inner0 $case1|0 $case0|0 $break|0 + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.load offset=4 + local.tee $5 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $7 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $7 + local.get $5 + local.get $7 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $3 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $7 + local.get $5 + local.get $3 + select + local.tee $7 + i32.store offset=4 + local.get $1 + local.get $0 + i32.load + local.tee $3 + i32.store + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $3 + local.get $7 + local.get $3 + local.get $7 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store + local.get $0 + local.get $7 + local.get $3 + local.get $1 + select + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.load + local.tee $7 + i32.store offset=8 + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $3 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $7 + local.get $3 + local.get $7 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store offset=4 + br $folding-inner0 + end + local.get $0 + i32.const 0 + local.get $13 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/array/Array> + br $folding-inner0 + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $7 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $4 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + i32.const 2 + i32.shl + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $10 + local.get $0 + i32.const 0 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight<~lib/array/Array> + local.tee $1 + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + local.get $0 + i32.const 0 + local.get $13 + i32.const 31 + local.get $13 + i32.const 31 + i32.lt_s + select + local.tee $1 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/array/Array> + end + loop $while-continue|2 + local.get $1 + local.get $13 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight<~lib/array/Array> + local.tee $5 + local.get $4 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 + i32.lt_s + if + local.get $0 + local.get $4 + local.get $13 + local.get $4 + i32.const 31 + i32.add + local.tee $7 + local.get $7 + local.get $13 + i32.gt_s + select + local.tee $5 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/array/Array> + end + local.get $3 + local.get $4 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $4 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $6 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $0 + local.get $8 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + local.tee $3 + i32.add + i32.load + i32.const 1 + i32.add + local.get $1 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns<~lib/array/Array> + local.get $3 + local.get $12 + i32.add + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|3 + end + end + local.get $12 + local.get $7 + i32.const 2 + i32.shl + local.tee $6 + i32.add + local.get $3 + i32.store + local.get $6 + local.get $11 + i32.add + local.get $1 + i32.store + local.get $4 + local.set $3 + local.get $5 + local.set $1 + local.get $7 + local.set $6 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $6 + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $13 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns<~lib/array/Array> + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 + end + end + local.get $10 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $12 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.sub + ) + (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.const 0 + i32.const 0 + local.get $0 + local.get $0 + local.get $1 + i32.eq + select + select + i32.eqz + if + i32.const 0 + return + end + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $6 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + i32.or + i32.eqz + if + i32.const 0 + return + end + local.get $6 + i32.eqz + if + i32.const -1 + return + end + local.get $5 + i32.eqz + if + i32.const 1 + return + end + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.const 1 + local.get $6 + local.get $5 + local.get $5 + local.get $6 + i32.gt_s + select + local.tee $3 + i32.const 4 + i32.ge_u + select + i32.eqz + if + loop $do-continue|0 + local.get $0 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $3 + i32.const 4 + i32.sub + local.tee $3 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $3 + local.tee $2 + i32.const 1 + i32.sub + local.set $3 + local.get $2 + if + local.get $0 + i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $2 + local.get $4 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + end + local.tee $0 + local.get $6 + local.get $5 + i32.sub + local.get $0 + select + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $1 + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + return + end + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + if + i32.const 0 + return + end + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.tee $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.const 1 + local.get $2 + local.tee $0 + i32.const 4 + i32.ge_u + select + i32.eqz + if + loop $do-continue|0 + local.get $3 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $0 + local.tee $2 + i32.const 1 + i32.sub + local.set $0 + local.get $2 + if + local.get $3 + i32.load16_u + local.tee $2 + local.get $1 + i32.load16_u + local.tee $4 + i32.ne + if + local.get $2 + local.get $4 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + end + i32.eqz + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15108 + i32.lt_s + if + i32.const 31520 + i32.const 31568 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/string/String#concat + local.get $0 + i32.const 20 + i32.sub i32.load offset=16 i32.const 1 i32.shr_u @@ -6235,7 +9198,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 local.set $2 br $__inlined_func$~lib/string/String#concat end @@ -6290,7 +9253,7 @@ i32.div_u i32.const 2 i32.shl - i32.const 9356 + i32.const 9420 i32.add i64.load32_u local.get $3 @@ -6298,7 +9261,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 9356 + i32.const 9420 i32.add i64.load32_u i64.const 32 @@ -6325,7 +9288,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 9356 + i32.const 9420 i32.add i32.load i32.store @@ -6348,7 +9311,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 9356 + i32.const 9420 i32.add i32.load i32.store @@ -6472,11 +9435,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6497,7 +9460,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end @@ -6698,11 +9661,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6723,7 +9686,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end @@ -7082,7 +10045,7 @@ local.get $8 i32.const 2 i32.shl - i32.const 12352 + i32.const 12416 i32.add i64.load32_u local.get $10 @@ -7212,7 +10175,7 @@ i32.sub i32.const 2 i32.shl - i32.const 12352 + i32.const 12416 i32.add i64.load32_u i64.mul @@ -7730,14 +10693,14 @@ i32.sub global.set $~lib/util/number/_K local.get $11 - i32.const 11480 + i32.const 11544 i32.add i64.load global.set $~lib/util/number/_frc_pow local.get $5 i32.const 1 i32.shl - i32.const 12176 + i32.const 12240 i32.add i32.load16_s global.set $~lib/util/number/_exp_pow @@ -7986,11 +10949,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8015,7 +10978,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 local.set $0 br $__inlined_func$~lib/util/string/joinStringArray end @@ -8029,7 +10992,7 @@ local.tee $0 i32.store local.get $0 - i32.const 8752 + i32.const 8816 local.get $0 select local.set $0 @@ -8204,11 +11167,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8233,7 +11196,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray end @@ -8250,19 +11213,19 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 12592 - i32.const 8752 + i32.const 12656 + i32.const 8816 local.get $1 select local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray end - i32.const 8752 + i32.const 8816 local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 i32.store offset=4 - i32.const 9036 + i32.const 9100 i32.load i32.const 1 i32.shr_u @@ -8285,11 +11248,11 @@ if global.get $~lib/memory/__stack_pointer local.tee $4 - i32.const 12592 + i32.const 12656 i32.store offset=8 local.get $4 local.get $0 - i32.const 12592 + i32.const 12656 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -8298,7 +11261,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 9040 + i32.const 9104 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -8323,11 +11286,11 @@ if global.get $~lib/memory/__stack_pointer local.tee $1 - i32.const 12592 + i32.const 12656 i32.store offset=8 local.get $1 local.get $0 - i32.const 12592 + i32.const 12656 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -8543,7 +11506,7 @@ i32.div_u i32.const 2 i32.shl - i32.const 9356 + i32.const 9420 i32.add i64.load32_u local.get $4 @@ -8551,7 +11514,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 9356 + i32.const 9420 i32.add i64.load32_u i64.const 32 @@ -8574,7 +11537,7 @@ i32.div_u i32.const 2 i32.shl - i32.const 9356 + i32.const 9420 i32.add i64.load32_u local.get $3 @@ -8582,7 +11545,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 9356 + i32.const 9420 i32.add i64.load32_u i64.const 32 @@ -8979,11 +11942,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9003,391 +11966,912 @@ global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - i32.const 8752 - local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray - end - local.get $3 - i32.eqz - if - local.get $4 - i32.load8_u - call $~lib/util/number/utoa32 - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 + global.set $~lib/memory/__stack_pointer + i32.const 8816 + local.set $0 + br $__inlined_func$~lib/util/string/joinIntegerArray + end + local.get $3 + i32.eqz + if + local.get $4 + i32.load8_u + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 10 + i32.add + i32.mul + i32.const 10 + i32.add + local.tee $7 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + loop $for-loop|0 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $4 + local.get $6 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $5 + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $5 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $5 + i32.add + local.set $2 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + local.get $7 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $4 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $1 + i32.gt_s + if + local.get $0 + local.get $1 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/util/string/joinIntegerArray + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + local.get $0 + i32.load offset=12 + local.tee $3 + i32.const 1 + i32.add + local.tee $2 + i32.const 0 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + i32.load offset=4 + local.get $3 + i32.add + local.get $1 + i32.store8 + local.get $0 + local.get $2 + i32.store offset=12 + local.get $2 + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.eqz + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.add + local.tee $5 + i32.load8_u + local.set $3 + local.get $5 + i32.load8_u offset=1 + local.tee $6 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.add + i32.load8_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $6 + i32.add + local.get $8 + i32.store8 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.add + local.get $3 + i32.store8 offset=2 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.add + i32.load8_u + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $6 + i32.add + local.get $3 + i32.store8 offset=1 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.add + local.get $5 + i32.store8 offset=1 + local.get $7 + i32.const 2 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray + local.set $7 + br $for-loop|0 end - global.get $~lib/memory/__stack_pointer - local.get $3 + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - loop $for-loop|0 - local.get $3 - local.get $6 + return + end + local.get $0 + local.get $1 + i32.add + i32.load8_u + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 i32.gt_s - if + if (result i32) local.get $0 - local.get $2 - i32.const 1 - i32.shl + local.get $4 i32.add + local.tee $5 + i32.load8_u offset=1 + local.get $5 + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if local.get $4 - local.get $6 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 i32.add + local.tee $3 i32.load8_u - call $~lib/util/number/itoa_buffered + local.set $5 + local.get $3 + local.get $0 local.get $2 i32.add - local.set $2 + local.tee $3 + i32.load8_u + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 local.get $5 - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 + i32.store8 + local.get $2 i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 i32.add - local.set $6 - br $for-loop|0 + local.tee $1 + i32.load8_u offset=1 + local.get $1 + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 end end - local.get $7 - local.get $0 + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 local.get $2 - i32.const 1 - i32.shl - i32.add + i32.lt_u + if + local.get $4 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.tee $8 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load8_u + i32.store8 + br $for-loop|0 + end + end + loop $for-loop|1 local.get $3 - local.get $4 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $1 - i32.gt_s + local.get $6 + i32.gt_u + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.add + local.get $0 + local.get $6 + i32.add + i32.load8_u offset=1 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_u if + local.get $4 + local.get $6 + i32.add + i32.load8_u + local.set $9 + local.get $2 + local.get $4 + i32.add + i32.load8_u + local.set $10 + i32.const 2 + global.set $~argumentsLength local.get $0 local.get $1 - call $~lib/string/String#substring - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 4 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + i32.store8 + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select + i32.store8 + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 + i32.const 0 + i32.ge_s + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer end - local.get $0 - ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1 - i32.add - local.tee $2 - i32.const 0 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - i32.load offset=4 - local.get $3 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u + i32.const 1 + i32.sub + local.set $13 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.load8_u offset=1 + local.set $5 + local.get $0 + i32.load8_u offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $3 + local.get $5 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store8 offset=1 + local.get $0 + i32.load8_u + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $5 + local.get $1 + select + local.tee $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $7 + local.get $3 + local.get $1 + select + i32.store8 + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store8 offset=2 + end + local.get $0 + i32.load8_u + local.set $7 + local.get $0 + i32.load8_u offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $7 + local.get $3 + local.get $7 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store8 + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store8 offset=1 + end + return + end + local.get $0 + i32.const 0 + local.get $13 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 i32.const 2 i32.shl - local.tee $3 - local.set $4 + local.tee $7 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $5 + local.set $12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 + local.set $7 + loop $for-loop|1 local.get $4 - i32.const 0 - i32.gt_s + local.get $7 + i32.gt_u + if + local.get $12 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $10 + local.get $0 + i32.const 0 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + local.get $0 + i32.const 0 + local.get $13 + i32.const 31 + local.get $13 + i32.const 31 + i32.lt_s + select + local.tee $1 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $13 + i32.lt_s if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $5 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end - end local.get $0 - local.get $3 + local.get $1 i32.const 1 - i32.shr_s - local.tee $7 i32.add - i32.load8_u - local.set $3 - local.get $0 + local.tee $4 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 local.get $4 + i32.sub + i32.const 1 i32.add - i32.load8_u - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 + local.tee $8 + i32.const 32 i32.lt_s if - local.get $5 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store local.get $0 local.get $4 + local.get $13 + local.get $4 + i32.const 31 i32.add - local.get $3 - i32.store8 - local.get $0 + local.tee $7 local.get $7 - i32.add - local.get $6 - i32.store8 + local.get $13 + i32.gt_s + select + local.tee $5 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort end + local.get $3 local.get $4 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 - i32.const 2 - i32.ge_s - if - local.get $0 - i32.load8_u - local.set $1 - local.get $0 - local.get $0 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u local.get $4 + local.get $5 i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - local.get $1 - i32.store8 i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $6 + local.get $7 + i32.gt_u if - local.get $0 - i32.load8_u - local.set $3 - local.get $0 - local.get $1 - i32.add - i32.load8_u - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 + local.get $12 local.get $6 - local.get $2 + i32.const 2 + i32.shl + i32.add i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + local.tee $8 + i32.const -1 + i32.ne if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u + local.get $0 + local.get $8 + local.get $11 + local.get $6 i32.const 2 i32.shl + local.tee $3 i32.add - local.tee $7 - local.get $7 i32.load i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 i32.add + local.get $1 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns local.get $3 - i32.store8 - local.get $0 - local.get $6 - i32.store8 + local.get $12 + i32.add + i32.const -1 + i32.store + local.get $8 + local.set $3 end - local.get $1 + local.get $6 i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 + i32.sub + local.set $6 + br $for-loop|3 end end + local.get $12 + local.get $7 + i32.const 2 + i32.shl + local.tee $6 + i32.add + local.get $3 + i32.store + local.get $6 + local.get $11 + i32.add + local.get $1 + i32.store local.get $4 + local.set $3 + local.get $5 + local.set $1 + local.get $7 + local.set $6 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $6 + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $13 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 i32.const 1 i32.sub - local.set $4 - br $for-loop|2 + local.set $6 + br $for-loop|4 end end - local.get $5 + local.get $10 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $12 call $~lib/rt/tlsf/__free - local.get $0 - i32.load8_u offset=1 - local.set $1 - local.get $0 - local.get $0 - i32.load8_u - i32.store8 offset=1 - local.get $0 - local.get $1 - i32.store8 ) (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -9552,11 +13036,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9635,11 +13119,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9650,16 +13134,216 @@ i32.const 0 i32.store local.get $1 - i32.const 8336 + i32.const 8400 i32.store local.get $0 - i32.const 8336 + i32.const 8400 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/sort/extendRunRight<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15108 + i32.lt_s + if + i32.const 31520 + i32.const 31568 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + i64.const 0 + i64.store + local.get $4 + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + local.tee $4 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $5 + i32.store + local.get $4 + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $6 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.tee $5 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + i32.load offset=4 + local.tee $7 + i32.store + local.get $5 + local.get $6 + i32.load + local.tee $5 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $5 + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.tee $5 + i32.store offset=8 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.tee $6 + i32.store + local.get $1 + local.get $5 + i32.load + local.tee $1 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $1 + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) (func $std/array/assertSorted<~lib/array/Array> (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -9671,7 +13355,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -9691,7 +13375,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -9768,8 +13452,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9782,11 +13466,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9797,10 +13481,10 @@ i32.const 0 i32.store local.get $1 - i32.const 9040 + i32.const 9104 i32.store local.get $0 - i32.const 9040 + i32.const 9104 call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer i32.const 4 @@ -9814,11 +13498,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9829,10 +13513,10 @@ i32.const 0 i32.store local.get $1 - i32.const 9040 + i32.const 9104 i32.store local.get $0 - i32.const 9040 + i32.const 9104 call $~lib/array/Array<~lib/string/String|null>#join global.get $~lib/memory/__stack_pointer i32.const 4 @@ -9846,11 +13530,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9861,10 +13545,10 @@ i32.const 0 i32.store local.get $1 - i32.const 9040 + i32.const 9104 i32.store local.get $0 - i32.const 9040 + i32.const 9104 call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer i32.const 4 @@ -9878,11 +13562,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9893,10 +13577,10 @@ i32.const 0 i32.store local.get $1 - i32.const 9040 + i32.const 9104 i32.store local.get $0 - i32.const 9040 + i32.const 9104 call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer i32.const 4 @@ -9916,7 +13600,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -9924,7 +13608,7 @@ i32.const 0 i32.store local.get $2 - i32.const 9040 + i32.const 9104 i32.store local.get $0 i32.load offset=4 @@ -9937,7 +13621,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -9959,7 +13643,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end @@ -9976,7 +13660,7 @@ local.get $0 call $~lib/array/Array#toString else - i32.const 8752 + i32.const 8816 end local.set $0 global.get $~lib/memory/__stack_pointer @@ -9985,12 +13669,12 @@ global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - i32.const 8752 + i32.const 8816 local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 i32.store offset=4 - i32.const 9036 + i32.const 9100 i32.load i32.const 1 i32.shr_u @@ -10028,7 +13712,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 9040 + i32.const 9104 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -10076,8 +13760,8 @@ local.get $0 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10095,17 +13779,16 @@ (local $8 i64) (local $9 i32) (local $10 i32) - (local $11 f32) - (local $12 f64) - (local $13 f32) - (local $14 f64) + (local $11 f64) + (local $12 f32) + (local $13 f64) global.get $~lib/memory/__stack_pointer - i32.const 72 + i32.const 76 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner2 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -10136,10 +13819,13 @@ local.get $1 i64.const 0 i64.store offset=64 + local.get $1 + i32.const 0 + i32.store offset=72 memory.size i32.const 16 i32.shl - i32.const 31428 + i32.const 31492 i32.sub i32.const 1 i32.shr_u @@ -10183,7 +13869,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -10202,7 +13888,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -10235,21 +13921,21 @@ i32.const 1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const 0 i32.const 1 call $~lib/memory/memory.fill local.get $1 - local.get $2 + local.get $3 i32.store local.get $1 - local.get $2 + local.get $3 i32.const 0 call $~lib/rt/itcms/__link local.get $1 - local.get $2 + local.get $3 i32.store offset=4 local.get $1 i32.const 1 @@ -10443,22 +14129,22 @@ i32.const 1 local.get $1 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 1 i32.gt_s select local.set $0 i32.const 3 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 3 i32.gt_s select - local.set $2 + local.set $3 loop $for-loop|0 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $4 @@ -10498,7 +14184,7 @@ end local.get $1 i32.load offset=4 - local.set $2 + local.set $3 i32.const 0 local.get $1 i32.load offset=12 @@ -10513,7 +14199,7 @@ local.get $4 i32.lt_s if - local.get $2 + local.get $3 local.get $0 i32.const 2 i32.shl @@ -10554,25 +14240,25 @@ i32.const 0 local.get $1 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 0 i32.gt_s select local.set $0 - local.get $2 + local.get $3 i32.const 3 i32.sub - local.tee $2 + local.tee $3 i32.const 0 - local.get $2 + local.get $3 i32.const 0 i32.gt_s select - local.set $2 + local.set $3 loop $for-loop|04 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $4 @@ -10615,7 +14301,7 @@ local.set $4 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 2 i32.sub local.tee $0 @@ -10627,7 +14313,7 @@ local.set $0 loop $for-loop|06 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $4 @@ -10672,22 +14358,22 @@ i32.const 1 local.get $1 i32.load offset=12 - local.tee $2 - local.get $2 + local.tee $3 + local.get $3 i32.const 1 i32.gt_s select local.set $1 i32.const 0 - local.get $2 - local.get $2 + local.get $3 + local.get $3 i32.const 0 i32.gt_s select - local.set $2 + local.set $3 loop $for-loop|08 local.get $1 - local.get $2 + local.get $3 i32.lt_s if local.get $4 @@ -11187,7 +14873,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/array/Array#constructor - local.tee $2 + local.tee $3 i32.store offset=12 global.get $~lib/memory/__stack_pointer local.tee $0 @@ -11196,7 +14882,7 @@ i32.store local.get $0 local.get $1 - local.get $2 + local.get $3 call $~lib/array/Array#concat local.tee $0 i32.store offset=16 @@ -11312,11 +14998,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 46 call $~lib/array/Array#push drop - local.get $2 + local.get $3 i32.const 47 call $~lib/array/Array#push drop @@ -11327,7 +15013,7 @@ i32.store local.get $0 local.get $1 - local.get $2 + local.get $3 call $~lib/array/Array#concat local.tee $0 i32.store offset=16 @@ -11347,7 +15033,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -11457,9 +15143,9 @@ i32.const 3 i32.const 2304 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.load offset=12 if i32.const 0 @@ -11475,7 +15161,7 @@ local.tee $1 i32.store offset=8 local.get $0 - local.get $2 + local.get $3 local.get $1 call $~lib/array/Array#concat local.tee $1 @@ -11492,7 +15178,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.load offset=12 if i32.const 0 @@ -12463,10 +16149,10 @@ i32.const 3 i32.const 3488 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 2 i32.const 2147483647 call $~lib/array/Array#slice @@ -12495,7 +16181,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 2 i32.const 4 call $~lib/array/Array#slice @@ -12524,7 +16210,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 1 i32.const 5 call $~lib/array/Array#slice @@ -12553,14 +16239,14 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 0 i32.const 2147483647 call $~lib/array/Array#slice local.tee $1 i32.store offset=16 local.get $1 - local.get $2 + local.get $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12573,7 +16259,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const -2 i32.const 2147483647 call $~lib/array/Array#slice @@ -12602,7 +16288,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const 2 i32.const -1 call $~lib/array/Array#slice @@ -12631,7 +16317,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.const -3 i32.const -1 call $~lib/array/Array#slice @@ -12659,7 +16345,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const -1 i32.const -3 call $~lib/array/Array#slice @@ -12677,7 +16363,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 i32.const 10 i32.const 2147483647 call $~lib/array/Array#slice @@ -12697,16 +16383,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 i32.load offset=12 local.tee $1 if - local.get $2 + local.get $3 i32.load offset=4 local.set $0 - local.get $2 + local.get $3 i32.load offset=4 local.get $1 i32.const 1 @@ -12850,11 +16536,11 @@ block $__inlined_func$~lib/array/Array#indexOf local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $3 select if i32.const -1 @@ -12866,7 +16552,7 @@ local.set $0 loop $while-continue|09 local.get $1 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -12908,11 +16594,11 @@ block $__inlined_func$~lib/array/Array#indexOf10 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $3 select if i32.const -1 @@ -12924,7 +16610,7 @@ local.set $0 loop $while-continue|011 local.get $1 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -12968,11 +16654,11 @@ block $__inlined_func$~lib/array/Array#indexOf12 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $3 select if i32.const -1 @@ -12984,7 +16670,7 @@ local.set $0 loop $while-continue|013 local.get $1 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -13028,11 +16714,11 @@ block $__inlined_func$~lib/array/Array#indexOf14 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 100 i32.le_s i32.const 1 - local.get $2 + local.get $3 select if i32.const -1 @@ -13044,7 +16730,7 @@ local.set $0 loop $while-continue|015 local.get $1 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -13086,18 +16772,18 @@ block $__inlined_func$~lib/array/Array#indexOf16 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -100 i32.le_s i32.const 1 - local.get $2 + local.get $3 select if i32.const -1 local.set $1 br $__inlined_func$~lib/array/Array#indexOf16 end - local.get $2 + local.get $3 i32.const 100 i32.sub local.tee $1 @@ -13112,7 +16798,7 @@ local.set $0 loop $while-continue|017 local.get $1 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -13154,18 +16840,18 @@ block $__inlined_func$~lib/array/Array#indexOf18 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -2 i32.le_s i32.const 1 - local.get $2 + local.get $3 select if i32.const -1 local.set $1 br $__inlined_func$~lib/array/Array#indexOf18 end - local.get $2 + local.get $3 i32.const 2 i32.sub local.tee $1 @@ -13180,7 +16866,7 @@ local.set $0 loop $while-continue|019 local.get $1 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -13222,18 +16908,18 @@ block $__inlined_func$~lib/array/Array#indexOf20 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -4 i32.le_s i32.const 1 - local.get $2 + local.get $3 select if i32.const -1 local.set $1 br $__inlined_func$~lib/array/Array#indexOf20 end - local.get $2 + local.get $3 i32.const 4 i32.sub local.tee $1 @@ -13248,7 +16934,7 @@ local.set $0 loop $while-continue|021 local.get $1 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -13292,11 +16978,11 @@ block $__inlined_func$~lib/array/Array#indexOf22 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $3 select if i32.const -1 @@ -13308,7 +16994,7 @@ local.set $0 loop $while-continue|023 local.get $1 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -13352,11 +17038,11 @@ block $__inlined_func$~lib/array/Array#indexOf24 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 1 i32.le_s i32.const 1 - local.get $2 + local.get $3 select if i32.const -1 @@ -13368,7 +17054,7 @@ local.set $0 loop $while-continue|025 local.get $1 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -13412,11 +17098,11 @@ block $__inlined_func$~lib/array/Array#indexOf26 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 2 i32.le_s i32.const 1 - local.get $2 + local.get $3 select if i32.const -1 @@ -13428,7 +17114,7 @@ local.set $0 loop $while-continue|027 local.get $1 - local.get $2 + local.get $3 i32.lt_s if local.get $0 @@ -13468,16 +17154,16 @@ i32.const 9 i32.const 3744 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store i32.const 0 local.set $1 i32.const -1 local.set $0 block $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $3 i32.load offset=12 local.tee $4 i32.const 0 @@ -13486,15 +17172,15 @@ local.get $4 select br_if $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $3 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|024 local.get $1 local.get $4 i32.lt_s if - local.get $2 + local.get $3 local.get $1 local.tee $0 i32.const 2 @@ -13530,16 +17216,16 @@ i32.const 10 i32.const 3776 call $~lib/rt/__newArray - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store i32.const 0 local.set $1 i32.const -1 local.set $0 block $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $3 i32.load offset=12 local.tee $4 i32.const 0 @@ -13548,15 +17234,15 @@ local.get $4 select br_if $__inlined_func$~lib/array/Array#indexOf - local.get $2 + local.get $3 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|02528 local.get $1 local.get $4 i32.lt_s if - local.get $2 + local.get $3 local.get $1 local.tee $0 i32.const 3 @@ -13599,7 +17285,7 @@ global.set $~argumentsLength local.get $1 i32.load offset=12 - local.set $2 + local.set $3 i32.const -1 local.set $0 block $__inlined_func$~lib/array/Array#lastIndexOf @@ -13608,32 +17294,32 @@ local.tee $4 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf - local.get $2 + local.get $3 local.get $4 i32.add local.get $4 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $3 + local.get $3 local.get $4 i32.ge_s select - local.get $2 + local.get $3 i32.const 0 i32.lt_s select - local.set $2 + local.set $3 local.get $1 i32.load offset=4 local.set $4 loop $while-continue|01 - local.get $2 + local.get $3 i32.const 0 i32.ge_s if local.get $4 - local.get $2 + local.get $3 local.tee $0 i32.const 2 i32.shl @@ -13645,7 +17331,7 @@ local.get $0 i32.const 1 i32.sub - local.set $2 + local.set $3 br $while-continue|01 end end @@ -13667,7 +17353,7 @@ global.set $~argumentsLength local.get $1 i32.load offset=12 - local.set $2 + local.set $3 i32.const -1 local.set $0 block $__inlined_func$~lib/array/Array#lastIndexOf6 @@ -13676,32 +17362,32 @@ local.tee $4 i32.eqz br_if $__inlined_func$~lib/array/Array#lastIndexOf6 - local.get $2 + local.get $3 local.get $4 i32.add local.get $4 i32.const 1 i32.sub - local.get $2 - local.get $2 + local.get $3 + local.get $3 local.get $4 i32.ge_s select - local.get $2 + local.get $3 i32.const 0 i32.lt_s select - local.set $2 + local.set $3 local.get $1 i32.load offset=4 local.set $4 loop $while-continue|07 - local.get $2 + local.get $3 i32.const 0 i32.ge_s if local.get $4 - local.get $2 + local.get $3 local.tee $0 i32.const 2 i32.shl @@ -13713,7 +17399,7 @@ local.get $0 i32.const 1 i32.sub - local.set $2 + local.set $3 br $while-continue|07 end end @@ -13752,13 +17438,13 @@ local.set $0 local.get $1 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|029 local.get $0 i32.const 0 i32.ge_s if - local.get $2 + local.get $3 local.get $0 i32.const 2 i32.shl @@ -13809,13 +17495,13 @@ local.set $0 local.get $1 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|031 local.get $0 i32.const 0 i32.ge_s if - local.get $2 + local.get $3 local.get $0 i32.const 2 i32.shl @@ -13859,13 +17545,13 @@ local.set $0 local.get $1 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|033 local.get $0 i32.const 0 i32.ge_s if - local.get $2 + local.get $3 local.get $0 i32.const 2 i32.shl @@ -13951,7 +17637,7 @@ local.tee $1 i32.store i32.const 0 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#indexOf9 local.get $1 i32.load offset=12 @@ -13963,7 +17649,7 @@ select if i32.const -1 - local.set $2 + local.set $3 br $__inlined_func$~lib/array/Array#indexOf9 end local.get $1 @@ -13971,11 +17657,11 @@ local.set $1 loop $while-continue|010 local.get $0 - local.get $2 + local.get $3 i32.gt_s if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add @@ -13983,17 +17669,17 @@ i32.const 44 i32.eq br_if $__inlined_func$~lib/array/Array#indexOf9 - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $while-continue|010 end end i32.const -1 - local.set $2 + local.set $3 end - local.get $2 + local.get $3 i32.const 0 i32.lt_s if @@ -14009,7 +17695,7 @@ local.tee $1 i32.store i32.const 0 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#indexOf13 local.get $1 i32.load offset=12 @@ -14021,7 +17707,7 @@ select if i32.const -1 - local.set $2 + local.set $3 br $__inlined_func$~lib/array/Array#indexOf13 end local.get $1 @@ -14029,11 +17715,11 @@ local.set $1 loop $while-continue|014 local.get $0 - local.get $2 + local.get $3 i32.gt_s if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add @@ -14041,17 +17727,17 @@ i32.const 42 i32.eq br_if $__inlined_func$~lib/array/Array#indexOf13 - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $while-continue|014 end end i32.const -1 - local.set $2 + local.set $3 end - local.get $2 + local.get $3 i32.const 0 i32.lt_s if @@ -14067,7 +17753,7 @@ local.tee $1 i32.store i32.const 0 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#indexOf17 local.get $1 i32.load offset=12 @@ -14079,7 +17765,7 @@ select if i32.const -1 - local.set $2 + local.set $3 br $__inlined_func$~lib/array/Array#indexOf17 end local.get $1 @@ -14087,11 +17773,11 @@ local.set $1 loop $while-continue|018 local.get $0 - local.get $2 + local.get $3 i32.gt_s if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add @@ -14099,17 +17785,17 @@ i32.const 45 i32.eq br_if $__inlined_func$~lib/array/Array#indexOf17 - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $while-continue|018 end end i32.const -1 - local.set $2 + local.set $3 end - local.get $2 + local.get $3 i32.const 0 i32.ge_s if @@ -14125,7 +17811,7 @@ local.tee $1 i32.store i32.const 100 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#indexOf21 local.get $1 i32.load offset=12 @@ -14137,7 +17823,7 @@ select if i32.const -1 - local.set $2 + local.set $3 br $__inlined_func$~lib/array/Array#indexOf21 end local.get $1 @@ -14145,11 +17831,11 @@ local.set $1 loop $while-continue|022 local.get $0 - local.get $2 + local.get $3 i32.gt_s if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add @@ -14157,17 +17843,17 @@ i32.const 43 i32.eq br_if $__inlined_func$~lib/array/Array#indexOf21 - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $while-continue|022 end end i32.const -1 - local.set $2 + local.set $3 end - local.get $2 + local.get $3 i32.const 0 i32.ge_s if @@ -14185,18 +17871,18 @@ block $__inlined_func$~lib/array/Array#indexOf25 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -100 i32.le_s i32.const 1 - local.get $2 + local.get $3 select if i32.const -1 local.set $0 br $__inlined_func$~lib/array/Array#indexOf25 end - local.get $2 + local.get $3 i32.const 100 i32.sub local.tee $0 @@ -14211,7 +17897,7 @@ local.set $1 loop $while-continue|026 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -14251,18 +17937,18 @@ block $__inlined_func$~lib/array/Array#indexOf28 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -2 i32.le_s i32.const 1 - local.get $2 + local.get $3 select if i32.const -1 local.set $0 br $__inlined_func$~lib/array/Array#indexOf28 end - local.get $2 + local.get $3 i32.const 2 i32.sub local.tee $0 @@ -14277,7 +17963,7 @@ local.set $1 loop $while-continue|030 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -14317,18 +18003,18 @@ block $__inlined_func$~lib/array/Array#indexOf32 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const -4 i32.le_s i32.const 1 - local.get $2 + local.get $3 select if i32.const -1 local.set $0 br $__inlined_func$~lib/array/Array#indexOf32 end - local.get $2 + local.get $3 i32.const 4 i32.sub local.tee $0 @@ -14343,7 +18029,7 @@ local.set $1 loop $while-continue|034 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -14381,7 +18067,7 @@ local.tee $1 i32.store i32.const 0 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#indexOf36 local.get $1 i32.load offset=12 @@ -14393,7 +18079,7 @@ select if i32.const -1 - local.set $2 + local.set $3 br $__inlined_func$~lib/array/Array#indexOf36 end local.get $1 @@ -14401,11 +18087,11 @@ local.set $1 loop $while-continue|037 local.get $0 - local.get $2 + local.get $3 i32.gt_s if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add @@ -14413,17 +18099,17 @@ i32.const 43 i32.eq br_if $__inlined_func$~lib/array/Array#indexOf36 - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $while-continue|037 end end i32.const -1 - local.set $2 + local.set $3 end - local.get $2 + local.get $3 i32.const 0 i32.lt_s if @@ -14439,7 +18125,7 @@ local.tee $1 i32.store i32.const 1 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#indexOf39 local.get $1 i32.load offset=12 @@ -14451,7 +18137,7 @@ select if i32.const -1 - local.set $2 + local.set $3 br $__inlined_func$~lib/array/Array#indexOf39 end local.get $1 @@ -14459,11 +18145,11 @@ local.set $1 loop $while-continue|040 local.get $0 - local.get $2 + local.get $3 i32.gt_s if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add @@ -14471,17 +18157,17 @@ i32.const 43 i32.eq br_if $__inlined_func$~lib/array/Array#indexOf39 - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $while-continue|040 end end i32.const -1 - local.set $2 + local.set $3 end - local.get $2 + local.get $3 i32.const 0 i32.lt_s if @@ -14497,7 +18183,7 @@ local.tee $1 i32.store i32.const 2 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#indexOf42 local.get $1 i32.load offset=12 @@ -14509,7 +18195,7 @@ select if i32.const -1 - local.set $2 + local.set $3 br $__inlined_func$~lib/array/Array#indexOf42 end local.get $1 @@ -14517,11 +18203,11 @@ local.set $1 loop $while-continue|043 local.get $0 - local.get $2 + local.get $3 i32.gt_s if local.get $1 - local.get $2 + local.get $3 i32.const 2 i32.shl i32.add @@ -14529,17 +18215,17 @@ i32.const 43 i32.eq br_if $__inlined_func$~lib/array/Array#indexOf42 - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $while-continue|043 end end i32.const -1 - local.set $2 + local.set $3 end - local.get $2 + local.get $3 i32.const 0 i32.lt_s if @@ -14565,11 +18251,11 @@ i32.const 0 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $3 select br_if $__inlined_func$~lib/array/Array#includes drop @@ -14578,7 +18264,7 @@ local.set $0 loop $while-continue|02644 local.get $1 - local.get $2 + local.get $3 i32.lt_s if i32.const 1 @@ -14589,10 +18275,10 @@ i32.shl i32.add f32.load - local.tee $11 - local.get $11 + local.tee $12 + local.get $12 f32.ne - local.get $11 + local.get $12 f32.const nan:0x400000 f32.eq select @@ -14631,11 +18317,11 @@ i32.const 0 local.get $0 i32.load offset=12 - local.tee $2 + local.tee $3 i32.const 0 i32.le_s i32.const 1 - local.get $2 + local.get $3 select br_if $__inlined_func$~lib/array/Array#includes drop @@ -14644,7 +18330,7 @@ local.set $0 loop $while-continue|02736 local.get $1 - local.get $2 + local.get $3 i32.lt_s if i32.const 1 @@ -14655,10 +18341,10 @@ i32.shl i32.add f64.load - local.tee $12 - local.get $12 + local.tee $11 + local.get $11 f64.ne - local.get $12 + local.get $11 f64.const nan:0x8000000000000 f64.eq select @@ -14763,9 +18449,9 @@ i32.const 3 i32.const 3920 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const 0 i32.const 2147483647 call $~lib/array/Array#splice @@ -14804,7 +18490,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 i32.const 0 call $std/array/isArraysEqual @@ -14823,9 +18509,9 @@ i32.const 3 i32.const 4048 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const 0 i32.const 0 call $~lib/array/Array#splice @@ -14864,7 +18550,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 i32.const 0 call $std/array/isArraysEqual @@ -14883,9 +18569,9 @@ i32.const 3 i32.const 4176 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const 2 i32.const 2147483647 call $~lib/array/Array#splice @@ -14924,7 +18610,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 i32.const 0 call $std/array/isArraysEqual @@ -14943,9 +18629,9 @@ i32.const 3 i32.const 4288 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const 2 i32.const 2 call $~lib/array/Array#splice @@ -14984,7 +18670,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 i32.const 0 call $std/array/isArraysEqual @@ -15003,9 +18689,9 @@ i32.const 3 i32.const 4400 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const 0 i32.const 1 call $~lib/array/Array#splice @@ -15044,7 +18730,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 i32.const 0 call $std/array/isArraysEqual @@ -15063,9 +18749,9 @@ i32.const 3 i32.const 4528 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const -1 i32.const 2147483647 call $~lib/array/Array#splice @@ -15104,7 +18790,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 i32.const 0 call $std/array/isArraysEqual @@ -15123,9 +18809,9 @@ i32.const 3 i32.const 4656 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const -2 i32.const 2147483647 call $~lib/array/Array#splice @@ -15164,7 +18850,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 i32.const 0 call $std/array/isArraysEqual @@ -15183,9 +18869,9 @@ i32.const 3 i32.const 4768 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const -2 i32.const 1 call $~lib/array/Array#splice @@ -15224,7 +18910,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 i32.const 0 call $std/array/isArraysEqual @@ -15243,9 +18929,9 @@ i32.const 3 i32.const 4896 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const -7 i32.const 1 call $~lib/array/Array#splice @@ -15284,7 +18970,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 i32.const 0 call $std/array/isArraysEqual @@ -15303,9 +18989,9 @@ i32.const 3 i32.const 5024 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const -2 i32.const -1 call $~lib/array/Array#splice @@ -15344,7 +19030,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 i32.const 0 call $std/array/isArraysEqual @@ -15363,9 +19049,9 @@ i32.const 3 i32.const 5152 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const 1 i32.const -2 call $~lib/array/Array#splice @@ -15404,7 +19090,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 i32.const 0 call $std/array/isArraysEqual @@ -15423,9 +19109,9 @@ i32.const 3 i32.const 5280 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const 4 i32.const 0 call $~lib/array/Array#splice @@ -15464,7 +19150,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 i32.const 0 call $std/array/isArraysEqual @@ -15483,9 +19169,9 @@ i32.const 3 i32.const 5408 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const 7 i32.const 0 call $~lib/array/Array#splice @@ -15524,7 +19210,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 i32.const 0 call $std/array/isArraysEqual @@ -15543,9 +19229,9 @@ i32.const 3 i32.const 5536 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=4 - local.get $2 + local.get $3 i32.const 7 i32.const 5 call $~lib/array/Array#splice @@ -15584,7 +19270,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 i32.const 0 call $std/array/isArraysEqual @@ -15808,7 +19494,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -15840,7 +19526,7 @@ i32.const 0 i32.gt_s select - local.tee $3 + local.tee $2 i32.const 2 i32.const 11 i32.const 0 @@ -15851,25 +19537,25 @@ i32.load offset=4 local.get $1 i32.load offset=4 - local.tee $2 + local.tee $3 local.get $5 i32.const 2 i32.shl i32.add local.tee $0 - local.get $3 + local.get $2 i32.const 2 i32.shl call $~lib/memory/memory.copy local.get $9 - local.get $3 + local.get $2 local.get $5 i32.add local.tee $5 i32.ne if local.get $0 - local.get $2 + local.get $3 local.get $5 i32.const 2 i32.shl @@ -15883,7 +19569,7 @@ end local.get $1 local.get $9 - local.get $3 + local.get $2 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -16028,16 +19714,16 @@ local.set $1 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#findIndex loop $for-loop|037 local.get $1 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $0 local.get $0 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -16090,16 +19776,16 @@ local.set $1 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#findIndex38 loop $for-loop|039 local.get $1 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $0 local.get $0 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -16154,16 +19840,16 @@ local.set $1 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#findIndex40 loop $for-loop|041 local.get $1 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $0 local.get $0 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -16218,16 +19904,16 @@ local.set $1 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#findIndex42 loop $for-loop|043 local.get $1 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $0 local.get $0 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -16298,16 +19984,16 @@ local.set $1 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#findIndex44 loop $for-loop|045 local.get $1 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $0 local.get $0 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -16390,16 +20076,16 @@ local.set $1 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#findIndex46 loop $for-loop|047 local.get $1 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $0 local.get $0 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -17270,15 +20956,15 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|066 local.get $0 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $1 local.get $1 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -17329,15 +21015,15 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|068 local.get $0 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $1 local.get $1 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -17404,15 +21090,15 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|070 local.get $0 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $1 local.get $1 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -17491,15 +21177,15 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|072 local.get $0 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $1 local.get $1 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -17580,15 +21266,15 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|074 local.get $0 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $1 local.get $1 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -17698,7 +21384,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -17713,9 +21399,9 @@ i32.const 9 i32.const 0 call $~lib/rt/__newArray - local.tee $3 + local.tee $2 i32.store - local.get $3 + local.get $2 i32.load offset=4 local.set $4 loop $for-loop|044 @@ -17733,7 +21419,7 @@ local.get $6 i32.const 2 i32.shl - local.tee $2 + local.tee $3 local.get $7 i32.load offset=4 i32.add @@ -17741,7 +21427,7 @@ local.set $0 i32.const 3 global.set $~argumentsLength - local.get $2 + local.get $3 local.get $4 i32.add local.get $0 @@ -17763,9 +21449,9 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $1 - local.get $3 + local.get $2 i32.store offset=24 - local.get $3 + local.get $2 i32.load offset=12 i32.const 4 i32.ne @@ -17777,7 +21463,7 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 i32.const 0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer @@ -18136,15 +21822,15 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|077 local.get $0 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $1 local.get $1 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -18201,15 +21887,15 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|079 local.get $0 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $1 local.get $1 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -18266,15 +21952,15 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|081 local.get $0 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $1 local.get $1 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -18328,15 +22014,15 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|083 local.get $0 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $1 local.get $1 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -18389,15 +22075,15 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|085 local.get $0 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $1 local.get $1 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -18470,15 +22156,15 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|087 local.get $0 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $1 local.get $1 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -18563,15 +22249,15 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|089 local.get $0 - local.get $2 + local.get $3 local.get $4 i32.load offset=12 local.tee $1 local.get $1 - local.get $2 + local.get $3 i32.gt_s select i32.lt_s @@ -18649,14 +22335,14 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store local.get $1 i32.const 7040 i32.store offset=8 i32.const 0 local.set $6 - local.get $2 + local.get $3 i32.load offset=12 i32.const 1 i32.sub @@ -18666,7 +22352,7 @@ i32.const 0 i32.ge_s if - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.const 2 @@ -18679,7 +22365,7 @@ local.get $6 local.get $1 local.get $0 - local.get $2 + local.get $3 i32.const 7040 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -18707,14 +22393,14 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store local.get $1 i32.const 7072 i32.store offset=8 i32.const 4 local.set $6 - local.get $2 + local.get $3 i32.load offset=12 i32.const 1 i32.sub @@ -18724,7 +22410,7 @@ i32.const 0 i32.ge_s if - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.const 2 @@ -18737,7 +22423,7 @@ local.get $6 local.get $1 local.get $0 - local.get $2 + local.get $3 i32.const 7072 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -18765,14 +22451,14 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store local.get $1 i32.const 7104 i32.store offset=8 i32.const 0 local.set $6 - local.get $2 + local.get $3 i32.load offset=12 i32.const 1 i32.sub @@ -18782,7 +22468,7 @@ i32.const 0 i32.ge_s if - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.const 2 @@ -18795,7 +22481,7 @@ local.get $6 local.get $1 local.get $0 - local.get $2 + local.get $3 i32.const 7104 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -18820,14 +22506,14 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store local.get $1 i32.const 7136 i32.store offset=8 i32.const 0 local.set $6 - local.get $2 + local.get $3 i32.load offset=12 i32.const 1 i32.sub @@ -18837,7 +22523,7 @@ i32.const 0 i32.ge_s if - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.const 2 @@ -18850,7 +22536,7 @@ local.get $6 local.get $1 local.get $0 - local.get $2 + local.get $3 i32.const 7136 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -18874,14 +22560,14 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store local.get $1 i32.const 7168 i32.store offset=8 i32.const 0 local.set $6 - local.get $2 + local.get $3 i32.load offset=12 i32.const 1 i32.sub @@ -18891,7 +22577,7 @@ i32.const 0 i32.ge_s if - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.const 2 @@ -18904,7 +22590,7 @@ local.get $6 local.get $1 local.get $0 - local.get $2 + local.get $3 i32.const 7168 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -18948,14 +22634,14 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store local.get $1 i32.const 7200 i32.store offset=8 i32.const 0 local.set $6 - local.get $2 + local.get $3 i32.load offset=12 i32.const 1 i32.sub @@ -18965,7 +22651,7 @@ i32.const 0 i32.ge_s if - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.const 2 @@ -18978,7 +22664,7 @@ local.get $6 local.get $1 local.get $0 - local.get $2 + local.get $3 i32.const 7200 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -19034,14 +22720,14 @@ global.get $~lib/memory/__stack_pointer local.tee $1 global.get $std/array/arr - local.tee $2 + local.tee $3 i32.store local.get $1 i32.const 7232 i32.store offset=8 i32.const 0 local.set $6 - local.get $2 + local.get $3 i32.load offset=12 i32.const 1 i32.sub @@ -19051,7 +22737,7 @@ i32.const 0 i32.ge_s if - local.get $2 + local.get $3 i32.load offset=4 local.get $0 i32.const 2 @@ -19064,7 +22750,7 @@ local.get $6 local.get $1 local.get $0 - local.get $2 + local.get $3 i32.const 7232 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) @@ -19139,7 +22825,7 @@ i64.reinterpret_f64 call $~lib/math/NativeMath.seedRandom global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 3 i32.const 2 i32.const 9 i32.const 7504 @@ -19148,240 +22834,58 @@ i32.store offset=20 i32.const 0 global.set $~argumentsLength - i32.const 0 + local.get $0 + call $~lib/array/Array#sort@varargs + i32.const 3 + i32.const 2 + i32.const 9 + i32.const 7568 + call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15044 - i32.lt_s - br_if $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of146 - block $0of147 - block $outOfRange48 - global.get $~argumentsLength - br_table $0of147 $1of146 $outOfRange48 - end - unreachable - end - i32.const 7568 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 7568 - i32.store - end - i32.const 0 - local.set $7 - block $__inlined_func$~lib/array/Array#sort - local.get $0 - local.tee $4 - i32.load offset=12 - local.tee $5 - i32.const 1 - i32.le_s - br_if $__inlined_func$~lib/array/Array#sort - local.get $4 - i32.load offset=4 - local.set $3 - local.get $5 - i32.const 2 - i32.eq - if - local.get $3 - f32.load offset=4 - local.set $13 - local.get $3 - f32.load - local.set $11 - i32.const 2 - global.set $~argumentsLength - local.get $13 - local.get $11 - local.get $1 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $11 - f32.store offset=4 - local.get $3 - local.get $13 - f32.store - end - br $__inlined_func$~lib/array/Array#sort - end - local.get $5 - i32.const 256 - i32.lt_s - if - local.get $1 - local.set $2 - loop $for-loop|0104 - local.get $5 - local.get $7 - i32.gt_s - if - local.get $3 - local.get $7 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $13 - local.get $7 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|1 - local.get $1 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - i32.const 2 - global.set $~argumentsLength - local.get $13 - local.get $11 - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $1 - local.tee $0 - i32.const 1 - i32.sub - local.set $1 - local.get $3 - local.get $0 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $11 - f32.store - br $while-continue|1 - end - end - end - local.get $3 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $13 - f32.store - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0104 - end - end - else - local.get $3 - local.get $5 - local.get $1 - call $~lib/util/sort/weakHeapSort - end + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 953 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 8 i32.const 2 i32.const 9 i32.const 7600 call $~lib/rt/__newArray - local.set $5 + local.tee $0 + i32.store offset=24 + i32.const 0 + global.set $~argumentsLength + local.get $0 + call $~lib/array/Array#sort@varargs + i32.const 8 + i32.const 2 + i32.const 9 + i32.const 7664 + call $~lib/rt/__newArray + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $1 i32.store offset=8 - block $__inlined_func$std/array/isArraysEqual (result i32) - i32.const 0 - local.set $1 - i32.const 0 - local.get $4 - i32.load offset=12 - local.tee $0 - local.get $5 - i32.load offset=12 - i32.ne - br_if $__inlined_func$std/array/isArraysEqual - drop - i32.const 1 - local.get $4 - local.get $5 - i32.eq - br_if $__inlined_func$std/array/isArraysEqual - drop - loop $for-loop|025 - local.get $0 - local.get $1 - i32.gt_s - if - local.get $4 - local.get $1 - call $~lib/array/Array#__get - local.tee $11 - local.get $11 - f32.ne - if (result i32) - local.get $5 - local.get $1 - call $~lib/array/Array#__get - local.tee $11 - local.get $11 - f32.ne - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - local.get $4 - local.get $1 - call $~lib/array/Array#__get - local.get $5 - local.get $1 - call $~lib/array/Array#__get - f32.ne - br_if $__inlined_func$std/array/isArraysEqual - drop - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|025 - end - end - i32.const 1 - end + local.get $0 + local.get $1 + call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 1552 - i32.const 953 + i32.const 957 i32.const 3 call $~lib/builtins/abort unreachable @@ -19390,10 +22894,10 @@ i32.const 8 i32.const 3 i32.const 10 - i32.const 7664 + i32.const 7728 call $~lib/rt/__newArray - local.tee $0 - i32.store offset=24 + local.tee $5 + i32.store offset=12 i32.const 0 global.set $~argumentsLength i32.const 0 @@ -19403,53 +22907,50 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of155 - block $0of156 - block $outOfRange57 + block $1of146 + block $0of147 + block $outOfRange48 global.get $~argumentsLength - br_table $0of156 $1of155 $outOfRange57 + br_table $0of147 $1of146 $outOfRange48 end unreachable end - i32.const 7760 + i32.const 7824 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 7760 + i32.const 7824 i32.store end - i32.const 0 - local.set $7 block $__inlined_func$~lib/array/Array#sort - local.get $0 - local.tee $4 + local.get $5 i32.load offset=12 - local.tee $5 + local.tee $0 i32.const 1 i32.le_s br_if $__inlined_func$~lib/array/Array#sort - local.get $4 + local.get $5 i32.load offset=4 local.set $3 - local.get $5 + local.get $0 i32.const 2 i32.eq if local.get $3 f64.load offset=8 - local.set $14 + local.set $13 local.get $3 f64.load - local.set $12 + local.set $11 i32.const 2 global.set $~argumentsLength - local.get $14 - local.get $12 + local.get $13 + local.get $11 local.get $1 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -19457,99 +22958,18 @@ i32.lt_s if local.get $3 - local.get $12 + local.get $11 f64.store offset=8 local.get $3 - local.get $14 + local.get $13 f64.store end br $__inlined_func$~lib/array/Array#sort end - local.get $5 - i32.const 256 - i32.lt_s - if - local.get $1 - local.set $2 - loop $for-loop|0106 - local.get $5 - local.get $7 - i32.gt_s - if - local.get $3 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $14 - local.get $7 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|1107 - local.get $1 - i32.const 0 - i32.ge_s - if - block $while-break|1108 - local.get $3 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $12 - i32.const 2 - global.set $~argumentsLength - local.get $14 - local.get $12 - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1108 - local.get $1 - local.tee $0 - i32.const 1 - i32.sub - local.set $1 - local.get $3 - local.get $0 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $12 - f64.store - br $while-continue|1107 - end - end - end - local.get $3 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $14 - f64.store - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0106 - end - end - else - local.get $3 - local.get $5 - local.get $1 - call $~lib/util/sort/weakHeapSort - end + local.get $3 + local.get $0 + local.get $1 + call $~lib/util/sort/SORT end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -19558,20 +22978,20 @@ i32.const 8 i32.const 3 i32.const 10 - i32.const 7792 + i32.const 7856 call $~lib/rt/__newArray - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=8 block $__inlined_func$std/array/isArraysEqual (result i32) i32.const 0 local.set $1 i32.const 0 - local.get $4 + local.get $5 i32.load offset=12 local.tee $0 - local.get $5 + local.get $4 i32.load offset=12 i32.ne br_if $__inlined_func$std/array/isArraysEqual @@ -19582,23 +23002,23 @@ i32.eq br_if $__inlined_func$std/array/isArraysEqual drop - loop $for-loop|028 + loop $for-loop|025 local.get $0 local.get $1 i32.gt_s if - local.get $4 + local.get $5 local.get $1 call $~lib/array/Array#__get - local.tee $12 - local.get $12 + local.tee $11 + local.get $11 f64.ne if (result i32) - local.get $5 + local.get $4 local.get $1 call $~lib/array/Array#__get - local.tee $12 - local.get $12 + local.tee $11 + local.get $11 f64.ne else i32.const 0 @@ -19606,10 +23026,10 @@ i32.eqz if i32.const 0 - local.get $4 + local.get $5 local.get $1 call $~lib/array/Array#__get - local.get $5 + local.get $4 local.get $1 call $~lib/array/Array#__get f64.ne @@ -19620,7 +23040,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|028 + br $for-loop|025 end end i32.const 1 @@ -19629,7 +23049,7 @@ if i32.const 0 i32.const 1552 - i32.const 957 + i32.const 961 i32.const 3 call $~lib/builtins/abort unreachable @@ -19638,10 +23058,10 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 7888 + i32.const 7952 call $~lib/rt/__newArray local.tee $0 - i32.store offset=12 + i32.store offset=16 i32.const 0 global.set $~argumentsLength i32.const 0 @@ -19651,24 +23071,24 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of158 - block $0of159 - block $outOfRange60 + block $1of155 + block $0of156 + block $outOfRange57 global.get $~argumentsLength - br_table $0of159 $1of158 $outOfRange60 + br_table $0of156 $1of155 $outOfRange57 end unreachable end - i32.const 7936 + i32.const 8000 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 7936 + i32.const 8000 i32.store end local.get $0 @@ -19682,7 +23102,7 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 7968 + i32.const 8032 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -19696,7 +23116,7 @@ if i32.const 0 i32.const 1552 - i32.const 961 + i32.const 965 i32.const 3 call $~lib/builtins/abort unreachable @@ -19705,10 +23125,10 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 8016 + i32.const 8080 call $~lib/rt/__newArray local.tee $0 - i32.store offset=16 + i32.store offset=4 i32.const 0 global.set $~argumentsLength local.get $0 @@ -19718,7 +23138,7 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 8096 + i32.const 8160 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer @@ -19731,7 +23151,7 @@ if i32.const 0 i32.const 1552 - i32.const 965 + i32.const 969 i32.const 3 call $~lib/builtins/abort unreachable @@ -19740,15 +23160,15 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 8144 + i32.const 8208 call $~lib/rt/__newArray local.tee $0 - i32.store offset=4 + i32.store offset=28 global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 i32.const 3 - i32.const 8176 + i32.const 8240 call $~lib/rt/__newArray local.tee $10 i32.store offset=32 @@ -19756,7 +23176,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 8208 + i32.const 8272 call $~lib/rt/__newArray local.tee $9 i32.store offset=36 @@ -19764,7 +23184,7 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 8240 + i32.const 8304 call $~lib/rt/__newArray local.tee $7 i32.store offset=40 @@ -19772,35 +23192,35 @@ i32.const 4 i32.const 2 i32.const 3 - i32.const 8288 + i32.const 8352 call $~lib/rt/__newArray local.tee $6 i32.store offset=44 global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createReverseOrderedArray - local.tee $3 - i32.store offset=28 + local.tee $2 + i32.store offset=48 global.get $~lib/memory/__stack_pointer i32.const 128 call $std/array/createReverseOrderedArray local.tee $5 - i32.store offset=48 + i32.store offset=52 global.get $~lib/memory/__stack_pointer i32.const 1024 call $std/array/createReverseOrderedArray local.tee $4 - i32.store offset=52 + i32.store offset=56 global.get $~lib/memory/__stack_pointer i32.const 10000 call $std/array/createReverseOrderedArray - local.tee $2 - i32.store offset=56 + local.tee $3 + i32.store offset=60 global.get $~lib/memory/__stack_pointer i32.const 512 call $std/array/createRandomOrderedArray local.tee $1 - i32.store offset=60 + i32.store offset=64 local.get $0 call $std/array/assertSortedDefault local.get $10 @@ -19808,7 +23228,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 8368 + i32.const 8432 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -19822,7 +23242,7 @@ if i32.const 0 i32.const 1552 - i32.const 985 + i32.const 989 i32.const 3 call $~lib/builtins/abort unreachable @@ -19832,7 +23252,7 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 8400 + i32.const 8464 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer @@ -19846,7 +23266,7 @@ if i32.const 0 i32.const 1552 - i32.const 988 + i32.const 992 i32.const 3 call $~lib/builtins/abort unreachable @@ -19861,14 +23281,14 @@ if i32.const 0 i32.const 1552 - i32.const 991 + i32.const 995 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 call $std/array/assertSortedDefault - local.get $3 + local.get $2 local.get $6 i32.const 4 call $std/array/isArraysEqual @@ -19876,7 +23296,7 @@ if i32.const 0 i32.const 1552 - i32.const 994 + i32.const 998 i32.const 3 call $~lib/builtins/abort unreachable @@ -19891,7 +23311,7 @@ if i32.const 0 i32.const 1552 - i32.const 997 + i32.const 1001 i32.const 3 call $~lib/builtins/abort unreachable @@ -19906,14 +23326,14 @@ if i32.const 0 i32.const 1552 - i32.const 1000 + i32.const 1004 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 call $std/array/assertSortedDefault - local.get $2 + local.get $3 local.get $6 i32.const 4 call $std/array/isArraysEqual @@ -19921,7 +23341,7 @@ if i32.const 0 i32.const 1552 - i32.const 1003 + i32.const 1007 i32.const 3 call $~lib/builtins/abort unreachable @@ -19932,45 +23352,45 @@ i32.const 64 call $std/array/createRandomOrderedArray local.tee $0 - i32.store offset=60 + i32.store offset=64 global.get $~lib/memory/__stack_pointer i32.const 257 call $std/array/createRandomOrderedArray local.tee $1 - i32.store offset=56 + i32.store offset=60 global.get $~lib/memory/__stack_pointer - i32.const 8432 + i32.const 8496 i32.store offset=8 local.get $0 - i32.const 8432 + i32.const 8496 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer - i32.const 8464 + i32.const 8528 i32.store offset=8 local.get $0 - i32.const 8464 + i32.const 8528 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer - i32.const 8496 + i32.const 8560 i32.store offset=8 local.get $1 - i32.const 8496 + i32.const 8560 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer - i32.const 8528 + i32.const 8592 i32.store offset=8 local.get $1 - i32.const 8528 + i32.const 8592 call $std/array/assertSorted i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -19982,7 +23402,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -20044,7 +23464,7 @@ local.get $4 local.get $5 i32.store - loop $for-loop|061111 + loop $for-loop|058 local.get $0 i32.const 2 i32.lt_s @@ -20068,31 +23488,31 @@ i32.const 1 i32.add local.set $0 - br $for-loop|061111 + br $for-loop|058 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 local.get $5 - i32.store offset=56 + i32.store offset=60 global.get $~lib/memory/__stack_pointer - i32.const 8560 + i32.const 8624 i32.store offset=8 local.get $5 - i32.const 8560 + i32.const 8624 call $std/array/assertSorted<~lib/array/Array> i32.const 0 local.set $5 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -20104,7 +23524,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -20176,7 +23596,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -20216,41 +23636,41 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 local.get $1 - i32.store offset=56 + i32.store offset=60 global.get $~lib/memory/__stack_pointer - i32.const 8592 + i32.const 8656 i32.store offset=8 local.get $1 - i32.const 8592 + i32.const 8656 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 7 i32.const 2 i32.const 27 - i32.const 8784 + i32.const 8848 call $~lib/rt/__newArray local.tee $1 - i32.store offset=60 + i32.store offset=64 global.get $~lib/memory/__stack_pointer i32.const 7 i32.const 2 i32.const 27 - i32.const 8832 + i32.const 8896 call $~lib/rt/__newArray local.tee $0 - i32.store offset=52 + i32.store offset=56 i32.const 1 global.set $~argumentsLength i32.const 0 - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -20266,10 +23686,10 @@ end unreachable end - i32.const 8880 - local.set $3 + i32.const 8944 + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 8880 + i32.const 8944 i32.store end global.get $~lib/memory/__stack_pointer @@ -20277,27 +23697,27 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store local.get $1 - local.get $3 + local.get $2 call $~lib/array/Array<~lib/array/Array>#sort local.set $7 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $7 i32.store block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) - local.get $2 + local.get $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -20307,9 +23727,9 @@ local.set $9 local.get $7 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|060 - local.get $2 + local.get $3 local.get $9 i32.gt_s if @@ -20333,7 +23753,7 @@ global.set $~argumentsLength local.get $5 local.get $4 - local.get $3 + local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 @@ -20378,13 +23798,13 @@ global.set $~lib/memory/__stack_pointer block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null> (result i32) i32.const 0 - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -20394,7 +23814,7 @@ block $folding-inner062 local.get $1 i32.load offset=12 - local.tee $2 + local.tee $3 local.get $0 i32.load offset=12 i32.ne @@ -20406,17 +23826,17 @@ loop $for-loop|064 local.get $2 local.get $3 - i32.gt_s + i32.lt_s if local.get $1 - local.get $3 + local.get $2 call $~lib/array/Array#__get local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $0 - local.get $3 + local.get $2 call $~lib/array/Array#__get local.set $4 global.get $~lib/memory/__stack_pointer @@ -20427,10 +23847,10 @@ call $~lib/string/String.__eq i32.eqz br_if $folding-inner062 - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|064 end end @@ -20453,7 +23873,7 @@ if i32.const 0 i32.const 1552 - i32.const 1040 + i32.const 1044 i32.const 3 call $~lib/builtins/abort unreachable @@ -20461,12 +23881,12 @@ i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -20479,7 +23899,7 @@ call $~lib/array/Array<~lib/string/String>#constructor local.tee $10 i32.store - loop $for-loop|062 + loop $for-loop|059107 local.get $0 i32.const 400 i32.lt_s @@ -20496,20 +23916,20 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i64.const 0 i64.store - local.get $2 + local.get $3 i32.const 0 i32.store offset=8 - i32.const 8752 + i32.const 8816 local.set $1 - local.get $2 - i32.const 8752 + local.get $3 + i32.const 8816 i32.store loop $for-loop|067 local.get $5 @@ -20522,7 +23942,7 @@ i32.store offset=4 call $~lib/math/NativeMath.random global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 7312 i32.store offset=8 i32.const 7308 @@ -20534,12 +23954,12 @@ f64.floor i32.trunc_f64_s local.set $7 - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -20557,17 +23977,17 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 - local.set $2 + i32.const 8816 + local.set $3 br $__inlined_func$~lib/string/String#charAt end global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 1 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 local.get $7 i32.const 1 i32.shl @@ -20581,11 +24001,11 @@ global.set $~lib/memory/__stack_pointer end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=4 local.get $4 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat local.tee $1 i32.store @@ -20611,16 +24031,16 @@ i32.const 1 i32.add local.set $0 - br $for-loop|062 + br $for-loop|059107 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $10 - i32.store offset=56 + i32.store offset=60 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -20630,26 +24050,26 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of163 - block $0of164 - block $outOfRange65 + block $1of160 + block $0of161 + block $outOfRange62 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of164 $1of163 $outOfRange65 + br_table $0of161 $1of160 $outOfRange62 end unreachable end - i32.const 8912 + i32.const 8976 local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 8912 + i32.const 8976 i32.store end local.get $10 @@ -20662,16 +24082,16 @@ i32.const 2 i32.const 0 i32.const 31 - i32.const 8944 + i32.const 9008 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 local.get $1 - i32.store offset=64 - local.get $2 - i32.const 9040 i32.store offset=68 + local.get $3 + i32.const 9104 + i32.store offset=72 local.get $1 i32.load offset=4 local.set $7 @@ -20682,12 +24102,12 @@ local.set $0 i32.const 0 local.set $6 - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -20705,7 +24125,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 local.set $1 br $__inlined_func$~lib/util/string/joinBooleanArray end @@ -20713,8 +24133,8 @@ local.get $9 i32.eqz if - i32.const 8976 - i32.const 9008 + i32.const 9040 + i32.const 9072 local.get $7 i32.load8_u select @@ -20723,11 +24143,11 @@ end global.get $~lib/memory/__stack_pointer local.get $9 - i32.const 9036 + i32.const 9100 i32.load i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 5 i32.add i32.mul @@ -20749,7 +24169,7 @@ local.get $7 i32.add i32.load8_u - local.tee $2 + local.tee $3 i32.eqz i32.const 4 i32.add @@ -20759,9 +24179,9 @@ i32.const 1 i32.shl i32.add - i32.const 8976 - i32.const 9008 - local.get $2 + i32.const 9040 + i32.const 9072 + local.get $3 select local.get $5 i32.const 1 @@ -20771,20 +24191,20 @@ local.get $5 i32.add local.set $0 - local.get $3 + local.get $2 if local.get $1 local.get $0 i32.const 1 i32.shl i32.add - i32.const 9040 - local.get $3 + i32.const 9104 + local.get $2 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $3 + local.get $2 i32.add local.set $0 end @@ -20799,7 +24219,7 @@ local.get $9 i32.add i32.load8_u - local.tee $2 + local.tee $3 i32.eqz i32.const 4 i32.add @@ -20809,9 +24229,9 @@ i32.const 1 i32.shl i32.add - i32.const 8976 - i32.const 9008 - local.get $2 + i32.const 9040 + i32.const 9072 + local.get $3 select local.get $5 i32.const 1 @@ -20846,16 +24266,16 @@ local.get $1 i32.store local.get $0 - i32.const 9072 + i32.const 9136 i32.store offset=8 local.get $1 - i32.const 9072 + i32.const 9136 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1049 + i32.const 1053 i32.const 3 call $~lib/builtins/abort unreachable @@ -20863,18 +24283,18 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 9120 + i32.const 9184 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=64 - local.get $1 - i32.const 8752 i32.store offset=68 + local.get $1 + i32.const 8816 + i32.store offset=72 local.get $0 - i32.const 8752 + i32.const 8816 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -20882,16 +24302,16 @@ local.get $0 i32.store local.get $1 - i32.const 10928 + i32.const 10992 i32.store offset=8 local.get $0 - i32.const 10928 + i32.const 10992 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1050 + i32.const 1054 i32.const 3 call $~lib/builtins/abort unreachable @@ -20899,18 +24319,18 @@ i32.const 3 i32.const 2 i32.const 7 - i32.const 10960 + i32.const 11024 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=64 - local.get $1 - i32.const 10992 i32.store offset=68 + local.get $1 + i32.const 11056 + i32.store offset=72 local.get $0 - i32.const 10992 + i32.const 11056 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -20918,16 +24338,16 @@ local.get $0 i32.store local.get $1 - i32.const 10928 + i32.const 10992 i32.store offset=8 local.get $0 - i32.const 10928 + i32.const 10992 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1051 + i32.const 1055 i32.const 3 call $~lib/builtins/abort unreachable @@ -20935,18 +24355,18 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 11024 + i32.const 11088 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=64 - local.get $1 - i32.const 11056 i32.store offset=68 + local.get $1 + i32.const 11120 + i32.store offset=72 local.get $0 - i32.const 11056 + i32.const 11120 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -20954,16 +24374,16 @@ local.get $0 i32.store local.get $1 - i32.const 11088 + i32.const 11152 i32.store offset=8 local.get $0 - i32.const 11088 + i32.const 11152 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1052 + i32.const 1056 i32.const 3 call $~lib/builtins/abort unreachable @@ -20971,16 +24391,16 @@ i32.const 6 i32.const 3 i32.const 10 - i32.const 11168 + i32.const 11232 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=64 - local.get $1 - i32.const 11248 i32.store offset=68 + local.get $1 + i32.const 11312 + i32.store offset=72 local.get $0 i32.load offset=4 local.get $0 @@ -20992,16 +24412,16 @@ local.get $0 i32.store local.get $1 - i32.const 12416 + i32.const 12480 i32.store offset=8 local.get $0 - i32.const 12416 + i32.const 12480 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1053 + i32.const 1057 i32.const 3 call $~lib/builtins/abort unreachable @@ -21009,18 +24429,18 @@ i32.const 3 i32.const 2 i32.const 27 - i32.const 12560 + i32.const 12624 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=64 - local.get $1 - i32.const 8752 i32.store offset=68 + local.get $1 + i32.const 8816 + i32.store offset=72 local.get $0 - i32.const 8752 + i32.const 8816 call $~lib/array/Array<~lib/string/String|null>#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -21028,16 +24448,16 @@ local.get $0 i32.store local.get $1 - i32.const 12528 + i32.const 12592 i32.store offset=8 local.get $0 - i32.const 12528 + i32.const 12592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1054 + i32.const 1058 i32.const 3 call $~lib/builtins/abort unreachable @@ -21050,11 +24470,11 @@ i32.const 0 call $~lib/rt/__newArray local.tee $0 - i32.store offset=56 + i32.store offset=60 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - i32.store offset=52 + i32.store offset=56 local.get $0 i32.const 0 i32.const 0 @@ -21071,10 +24491,10 @@ call $~lib/array/Array#__uset local.get $1 local.get $0 - i32.store offset=52 + i32.store offset=56 global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store offset=68 + i32.const 9104 + i32.store offset=72 local.get $0 call $~lib/array/Array#join local.set $0 @@ -21083,16 +24503,16 @@ local.get $0 i32.store local.get $1 - i32.const 12656 + i32.const 12720 i32.store offset=8 local.get $0 - i32.const 12656 + i32.const 12720 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1056 + i32.const 1060 i32.const 3 call $~lib/builtins/abort unreachable @@ -21105,11 +24525,11 @@ i32.const 0 call $~lib/rt/__newArray local.tee $0 - i32.store offset=56 + i32.store offset=60 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - i32.store offset=60 + i32.store offset=64 local.get $0 i32.const 0 i32.const 0 @@ -21122,10 +24542,10 @@ call $~lib/array/Array#__uset local.get $1 local.get $0 - i32.store offset=60 + i32.store offset=64 global.get $~lib/memory/__stack_pointer - i32.const 9040 - i32.store offset=68 + i32.const 9104 + i32.store offset=72 local.get $0 call $~lib/array/Array#join local.set $0 @@ -21134,16 +24554,16 @@ local.get $0 i32.store local.get $1 - i32.const 12752 + i32.const 12816 i32.store offset=8 local.get $0 - i32.const 12752 + i32.const 12816 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1059 + i32.const 1063 i32.const 3 call $~lib/builtins/abort unreachable @@ -21152,34 +24572,34 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 12848 + i32.const 12912 call $~lib/rt/__newArray local.tee $1 - i32.store offset=52 + i32.store offset=56 global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 i32.const 3 - i32.const 12880 + i32.const 12944 call $~lib/rt/__newArray local.tee $4 - i32.store offset=56 + i32.store offset=60 global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 3 - i32.const 12912 + i32.const 12976 call $~lib/rt/__newArray - local.tee $2 - i32.store offset=48 + local.tee $3 + i32.store offset=52 global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 2 i32.const 3 - i32.const 12944 + i32.const 13008 call $~lib/rt/__newArray local.tee $0 - i32.store offset=28 + i32.store offset=48 local.get $1 call $~lib/array/Array#toString local.set $5 @@ -21188,16 +24608,16 @@ local.get $5 i32.store local.get $1 - i32.const 8752 + i32.const 8816 i32.store offset=8 local.get $5 - i32.const 8752 + i32.const 8816 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1069 + i32.const 1073 i32.const 3 call $~lib/builtins/abort unreachable @@ -21210,38 +24630,38 @@ local.get $4 i32.store local.get $1 - i32.const 12528 + i32.const 12592 i32.store offset=8 local.get $4 - i32.const 12528 + i32.const 12592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1070 + i32.const 1074 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $3 call $~lib/array/Array#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $2 + local.get $3 i32.store local.get $1 - i32.const 12992 + i32.const 13056 i32.store offset=8 - local.get $2 - i32.const 12992 + local.get $3 + i32.const 13056 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1071 + i32.const 1075 i32.const 3 call $~lib/builtins/abort unreachable @@ -21254,16 +24674,16 @@ local.get $0 i32.store local.get $1 - i32.const 13024 + i32.const 13088 i32.store offset=8 local.get $0 - i32.const 13024 + i32.const 13088 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1072 + i32.const 1076 i32.const 3 call $~lib/builtins/abort unreachable @@ -21271,27 +24691,27 @@ i32.const 3 i32.const 0 i32.const 32 - i32.const 13072 + i32.const 13136 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=64 + i32.store offset=68 local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $2 - i32.const 9040 + local.get $3 + i32.const 9104 i32.store local.get $0 i32.load offset=4 @@ -21303,12 +24723,12 @@ local.set $0 i32.const 0 local.set $6 - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -21318,7 +24738,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $3 + local.tee $2 i32.const 0 i32.lt_s if @@ -21326,23 +24746,23 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0115 - local.get $3 + block $folding-inner0110 + local.get $2 i32.eqz if local.get $5 i32.load8_s call $~lib/util/number/itoa32 local.set $1 - br $folding-inner0115 + br $folding-inner0110 end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 9036 + local.get $2 + i32.const 9100 i32.load i32.const 1 i32.shr_u @@ -21352,15 +24772,15 @@ i32.mul i32.const 11 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0116 - local.get $3 + loop $for-loop|0111 + local.get $2 local.get $6 i32.gt_s if @@ -21384,7 +24804,7 @@ i32.const 1 i32.shl i32.add - i32.const 9040 + i32.const 9104 local.get $4 i32.const 1 i32.shl @@ -21398,16 +24818,16 @@ i32.const 1 i32.add local.set $6 - br $for-loop|0116 + br $for-loop|0111 end end - local.get $2 + local.get $3 local.get $1 local.get $0 i32.const 1 i32.shl i32.add - local.get $3 + local.get $2 local.get $5 i32.add i32.load8_s @@ -21421,7 +24841,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0115 + br $folding-inner0110 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -21443,16 +24863,16 @@ local.get $1 i32.store local.get $0 - i32.const 13104 + i32.const 13168 i32.store offset=8 local.get $1 - i32.const 13104 + i32.const 13168 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1074 + i32.const 1078 i32.const 3 call $~lib/builtins/abort unreachable @@ -21460,27 +24880,27 @@ i32.const 3 i32.const 1 i32.const 33 - i32.const 13136 + i32.const 13200 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=64 + i32.store offset=68 local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $2 - i32.const 9040 + local.get $3 + i32.const 9104 i32.store local.get $0 i32.load offset=4 @@ -21492,12 +24912,12 @@ local.set $0 i32.const 0 local.set $6 - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -21507,7 +24927,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $3 + local.tee $2 i32.const 0 i32.lt_s if @@ -21515,23 +24935,23 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0118 - local.get $3 + block $folding-inner0113 + local.get $2 i32.eqz if local.get $5 i32.load16_u call $~lib/util/number/utoa32 local.set $1 - br $folding-inner0118 + br $folding-inner0113 end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 9036 + local.get $2 + i32.const 9100 i32.load i32.const 1 i32.shr_u @@ -21541,15 +24961,15 @@ i32.mul i32.const 10 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0119 - local.get $3 + loop $for-loop|0114 + local.get $2 local.get $6 i32.gt_s if @@ -21575,7 +24995,7 @@ i32.const 1 i32.shl i32.add - i32.const 9040 + i32.const 9104 local.get $4 i32.const 1 i32.shl @@ -21589,17 +25009,17 @@ i32.const 1 i32.add local.set $6 - br $for-loop|0119 + br $for-loop|0114 end end - local.get $2 + local.get $3 local.get $1 local.get $0 i32.const 1 i32.shl i32.add local.get $5 - local.get $3 + local.get $2 i32.const 1 i32.shl i32.add @@ -21614,7 +25034,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0118 + br $folding-inner0113 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -21636,16 +25056,16 @@ local.get $1 i32.store local.get $0 - i32.const 13168 + i32.const 13232 i32.store offset=8 local.get $1 - i32.const 13168 + i32.const 13232 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1075 + i32.const 1079 i32.const 3 call $~lib/builtins/abort unreachable @@ -21653,27 +25073,27 @@ i32.const 3 i32.const 3 i32.const 34 - i32.const 13216 + i32.const 13280 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=64 + i32.store offset=68 local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $2 - i32.const 9040 + local.get $3 + i32.const 9104 i32.store local.get $0 i32.load offset=4 @@ -21685,12 +25105,12 @@ local.set $0 i32.const 0 local.set $6 - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -21700,7 +25120,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $3 + local.tee $2 i32.const 0 i32.lt_s if @@ -21708,12 +25128,12 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0121 - local.get $3 + block $folding-inner0116 + local.get $2 i32.eqz if block $__inlined_func$~lib/util/number/utoa64 (result i32) @@ -21725,7 +25145,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -21738,7 +25158,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 9344 + i32.const 9408 br $__inlined_func$~lib/util/number/utoa64 end local.get $8 @@ -21748,7 +25168,7 @@ global.get $~lib/memory/__stack_pointer local.get $8 i32.wrap_i64 - local.tee $2 + local.tee $3 local.tee $1 i32.const 100000 i32.lt_u @@ -21803,7 +25223,7 @@ local.tee $0 i32.store local.get $0 - local.get $2 + local.get $3 local.get $1 call $~lib/util/number/utoa32_dec_lut else @@ -21877,11 +25297,11 @@ local.get $0 end local.set $1 - br $folding-inner0121 + br $folding-inner0116 end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 9036 + local.get $2 + i32.const 9100 i32.load i32.const 1 i32.shr_u @@ -21891,15 +25311,15 @@ i32.mul i32.const 20 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0122 - local.get $3 + loop $for-loop|0117 + local.get $2 local.get $6 i32.gt_s if @@ -21925,7 +25345,7 @@ i32.const 1 i32.shl i32.add - i32.const 9040 + i32.const 9104 local.get $4 i32.const 1 i32.shl @@ -21939,17 +25359,17 @@ i32.const 1 i32.add local.set $6 - br $for-loop|0122 + br $for-loop|0117 end end - local.get $2 + local.get $3 local.get $1 local.get $0 i32.const 1 i32.shl i32.add local.get $5 - local.get $3 + local.get $2 i32.const 3 i32.shl i32.add @@ -21964,7 +25384,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0121 + br $folding-inner0116 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -21986,16 +25406,16 @@ local.get $1 i32.store local.get $0 - i32.const 13264 + i32.const 13328 i32.store offset=8 local.get $1 - i32.const 13264 + i32.const 13328 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1076 + i32.const 1080 i32.const 3 call $~lib/builtins/abort unreachable @@ -22003,27 +25423,27 @@ i32.const 4 i32.const 3 i32.const 35 - i32.const 13344 + i32.const 13408 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=64 + i32.store offset=68 local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 0 i32.store - local.get $2 - i32.const 9040 + local.get $3 + i32.const 9104 i32.store local.get $0 i32.load offset=4 @@ -22035,12 +25455,12 @@ local.set $0 i32.const 0 local.set $6 - local.get $2 + local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -22050,7 +25470,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $3 + local.tee $2 i32.const 0 i32.lt_s if @@ -22058,12 +25478,12 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0124 - local.get $3 + block $folding-inner0119 + local.get $2 i32.eqz if local.get $5 @@ -22076,7 +25496,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -22090,7 +25510,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 9344 + i32.const 9408 local.set $1 br $__inlined_func$~lib/util/number/itoa64 end @@ -22111,7 +25531,7 @@ global.get $~lib/memory/__stack_pointer local.get $8 i32.wrap_i64 - local.tee $2 + local.tee $3 local.tee $1 i32.const 100000 i32.lt_u @@ -22168,7 +25588,7 @@ local.tee $1 i32.store local.get $1 - local.get $2 + local.get $3 local.get $0 call $~lib/util/number/utoa32_dec_lut else @@ -22248,11 +25668,11 @@ i32.add global.set $~lib/memory/__stack_pointer end - br $folding-inner0124 + br $folding-inner0119 end global.get $~lib/memory/__stack_pointer - local.get $3 - i32.const 9036 + local.get $2 + i32.const 9100 i32.load i32.const 1 i32.shr_u @@ -22262,15 +25682,15 @@ i32.mul i32.const 21 i32.add - local.tee $2 + local.tee $3 i32.const 1 i32.shl i32.const 1 call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0125 - local.get $3 + loop $for-loop|0120 + local.get $2 local.get $6 i32.gt_s if @@ -22296,7 +25716,7 @@ i32.const 1 i32.shl i32.add - i32.const 9040 + i32.const 9104 local.get $4 i32.const 1 i32.shl @@ -22310,17 +25730,17 @@ i32.const 1 i32.add local.set $6 - br $for-loop|0125 + br $for-loop|0120 end end - local.get $2 + local.get $3 local.get $1 local.get $0 i32.const 1 i32.shl i32.add local.get $5 - local.get $3 + local.get $2 i32.const 3 i32.shl i32.add @@ -22335,7 +25755,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0124 + br $folding-inner0119 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -22357,16 +25777,16 @@ local.get $1 i32.store local.get $0 - i32.const 13408 + i32.const 13472 i32.store offset=8 local.get $1 - i32.const 13408 + i32.const 13472 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1077 + i32.const 1081 i32.const 3 call $~lib/builtins/abort unreachable @@ -22375,7 +25795,7 @@ i32.const 7 i32.const 2 i32.const 27 - i32.const 13520 + i32.const 13584 call $~lib/rt/__newArray local.tee $1 i32.store offset=44 @@ -22387,16 +25807,16 @@ local.get $0 i32.store local.get $1 - i32.const 13568 + i32.const 13632 i32.store offset=8 local.get $0 - i32.const 13568 + i32.const 13632 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1081 + i32.const 1085 i32.const 3 call $~lib/builtins/abort unreachable @@ -22404,12 +25824,12 @@ i32.const 4 i32.const 2 i32.const 27 - i32.const 13680 + i32.const 13744 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=64 + i32.store offset=68 local.get $1 call $~lib/array/Array<~lib/string/String|null>#toString local.set $0 @@ -22418,16 +25838,16 @@ local.get $0 i32.store local.get $1 - i32.const 13728 + i32.const 13792 i32.store offset=8 local.get $0 - i32.const 13728 + i32.const 13792 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1082 + i32.const 1086 i32.const 3 call $~lib/builtins/abort unreachable @@ -22444,13 +25864,13 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - i32.store offset=60 + i32.store offset=64 local.get $0 i32.const 0 i32.const 2 i32.const 2 i32.const 3 - i32.const 13760 + i32.const 13824 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 @@ -22458,18 +25878,18 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 13792 + i32.const 13856 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $1 local.get $0 - i32.store offset=60 + i32.store offset=64 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -22477,11 +25897,11 @@ i32.const 0 i32.store local.get $1 - i32.const 9040 + i32.const 9104 i32.store local.get $0 i32.load offset=4 - local.set $3 + local.set $2 local.get $0 i32.load offset=12 local.set $0 @@ -22492,7 +25912,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -22514,7 +25934,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 local.set $1 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end @@ -22522,7 +25942,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.load local.tee $1 i32.store @@ -22531,7 +25951,7 @@ local.get $1 call $~lib/array/Array#toString else - i32.const 8752 + i32.const 8816 end local.set $1 global.get $~lib/memory/__stack_pointer @@ -22540,23 +25960,23 @@ global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - i32.const 8752 + i32.const 8816 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 i32.store offset=4 - i32.const 9036 + i32.const 9100 i32.load i32.const 1 i32.shr_u - local.set $2 + local.set $3 loop $for-loop|076 local.get $5 local.get $7 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $7 i32.const 2 i32.shl @@ -22579,11 +25999,11 @@ local.tee $1 i32.store offset=4 end - local.get $2 + local.get $3 if global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 9040 + i32.const 9104 call $~lib/string/String.__concat local.tee $1 i32.store offset=4 @@ -22596,25 +26016,25 @@ end end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $5 i32.const 2 i32.shl i32.add i32.load - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 call $~lib/array/Array#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat local.tee $1 i32.store offset=4 @@ -22633,16 +26053,16 @@ local.get $1 i32.store local.get $0 - i32.const 13824 + i32.const 13888 i32.store offset=8 local.get $1 - i32.const 13824 + i32.const 13888 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1085 + i32.const 1089 i32.const 3 call $~lib/builtins/abort unreachable @@ -22665,7 +26085,7 @@ i32.const 2 i32.const 0 i32.const 6 - i32.const 13872 + i32.const 13936 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 @@ -22673,7 +26093,7 @@ i32.const 2 i32.const 0 i32.const 6 - i32.const 13904 + i32.const 13968 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $1 @@ -22684,7 +26104,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -22692,11 +26112,11 @@ i32.const 0 i32.store local.get $1 - i32.const 9040 + i32.const 9104 i32.store local.get $0 i32.load offset=4 - local.set $3 + local.set $2 local.get $0 i32.load offset=12 local.set $0 @@ -22707,7 +26127,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -22729,7 +26149,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 local.set $1 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end @@ -22737,7 +26157,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.load local.tee $1 i32.store @@ -22746,7 +26166,7 @@ local.get $1 call $~lib/array/Array#toString else - i32.const 8752 + i32.const 8816 end local.set $1 global.get $~lib/memory/__stack_pointer @@ -22755,23 +26175,23 @@ global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - i32.const 8752 + i32.const 8816 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 i32.store offset=4 - i32.const 9036 + i32.const 9100 i32.load i32.const 1 i32.shr_u - local.set $2 + local.set $3 loop $for-loop|078 local.get $5 local.get $7 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $7 i32.const 2 i32.shl @@ -22794,11 +26214,11 @@ local.tee $1 i32.store offset=4 end - local.get $2 + local.get $3 if global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 9040 + i32.const 9104 call $~lib/string/String.__concat local.tee $1 i32.store offset=4 @@ -22811,25 +26231,25 @@ end end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $5 i32.const 2 i32.shl i32.add i32.load - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 call $~lib/array/Array#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat local.tee $1 i32.store offset=4 @@ -22848,16 +26268,16 @@ local.get $1 i32.store local.get $0 - i32.const 13824 + i32.const 13888 i32.store offset=8 local.get $1 - i32.const 13824 + i32.const 13888 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1088 + i32.const 1092 i32.const 3 call $~lib/builtins/abort unreachable @@ -22869,11 +26289,11 @@ i32.const 38 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $3 i32.store offset=40 global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $2 + local.get $3 i32.load offset=4 i32.store offset=32 local.get $1 @@ -22883,32 +26303,32 @@ i32.const 0 call $~lib/rt/__newArray local.tee $1 - i32.store offset=4 + i32.store offset=28 global.get $~lib/memory/__stack_pointer local.get $1 i32.load offset=4 - i32.store offset=16 + i32.store offset=4 local.get $1 i32.const 0 i32.const 1 i32.const 2 i32.const 7 - i32.const 13936 + i32.const 14000 call $~lib/rt/__newArray call $~lib/array/Array#__uset - local.get $2 + local.get $3 i32.const 0 local.get $1 call $~lib/array/Array#__uset local.get $0 - local.get $2 + local.get $3 i32.store offset=32 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -22916,12 +26336,12 @@ i32.const 0 i32.store local.get $1 - i32.const 9040 + i32.const 9104 i32.store - local.get $2 + local.get $3 i32.load offset=4 - local.set $3 - local.get $2 + local.set $2 + local.get $3 i32.load offset=12 local.set $0 i32.const 0 @@ -22931,7 +26351,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -22953,7 +26373,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 local.set $1 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> end @@ -22961,7 +26381,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.load local.tee $1 i32.store @@ -22970,7 +26390,7 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#toString else - i32.const 8752 + i32.const 8816 end local.set $1 global.get $~lib/memory/__stack_pointer @@ -22979,23 +26399,23 @@ global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> end - i32.const 8752 + i32.const 8816 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 i32.store offset=4 - i32.const 9036 + i32.const 9100 i32.load i32.const 1 i32.shr_u - local.set $2 + local.set $3 loop $for-loop|080 local.get $5 local.get $7 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $7 i32.const 2 i32.shl @@ -23018,11 +26438,11 @@ local.tee $1 i32.store offset=4 end - local.get $2 + local.get $3 if global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 9040 + i32.const 9104 call $~lib/string/String.__concat local.tee $1 i32.store offset=4 @@ -23035,25 +26455,25 @@ end end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 local.get $5 i32.const 2 i32.shl i32.add i32.load - local.tee $2 + local.tee $3 i32.store - local.get $2 + local.get $3 if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 call $~lib/array/Array<~lib/array/Array>#toString - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store offset=8 local.get $1 - local.get $2 + local.get $3 call $~lib/string/String.__concat local.tee $1 i32.store offset=4 @@ -23072,16 +26492,16 @@ local.get $1 i32.store local.get $0 - i32.const 12528 + i32.const 12592 i32.store offset=8 local.get $1 - i32.const 12528 + i32.const 12592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1091 + i32.const 1095 i32.const 3 call $~lib/builtins/abort unreachable @@ -23104,7 +26524,7 @@ i32.const 1 i32.const 2 i32.const 3 - i32.const 13968 + i32.const 14032 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 @@ -23112,7 +26532,7 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 14000 + i32.const 14064 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 @@ -23120,7 +26540,7 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 14032 + i32.const 14096 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 @@ -23128,7 +26548,7 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 14064 + i32.const 14128 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $1 @@ -23146,14 +26566,14 @@ if i32.const 0 i32.const 1552 - i32.const 1098 + i32.const 1102 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 local.set $0 - loop $for-loop|1129 + loop $for-loop|1124 local.get $0 i32.const 10 i32.lt_s @@ -23166,7 +26586,7 @@ if i32.const 0 i32.const 1552 - i32.const 1100 + i32.const 1104 i32.const 5 call $~lib/builtins/abort unreachable @@ -23175,7 +26595,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1129 + br $for-loop|1124 end end global.get $~lib/memory/__stack_pointer @@ -23186,7 +26606,7 @@ i32.const 0 call $~lib/rt/__newArray local.tee $4 - i32.store offset=60 + i32.store offset=64 global.get $~lib/memory/__stack_pointer local.get $4 i32.load offset=4 @@ -23196,7 +26616,7 @@ i32.const 1 i32.const 2 i32.const 27 - i32.const 14128 + i32.const 14192 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $4 @@ -23204,7 +26624,7 @@ i32.const 3 i32.const 2 i32.const 27 - i32.const 14224 + i32.const 14288 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $4 @@ -23212,7 +26632,7 @@ i32.const 3 i32.const 2 i32.const 27 - i32.const 14352 + i32.const 14416 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $4 @@ -23220,7 +26640,7 @@ i32.const 1 i32.const 2 i32.const 27 - i32.const 14416 + i32.const 14480 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $1 @@ -23231,14 +26651,14 @@ i32.const 0 local.set $7 i32.const 0 - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer @@ -23250,7 +26670,7 @@ local.get $4 i32.load offset=4 local.set $4 - loop $for-loop|0130 + loop $for-loop|0125 local.get $0 local.get $5 i32.lt_s @@ -23275,7 +26695,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|0130 + br $for-loop|0125 end end global.get $~lib/memory/__stack_pointer @@ -23311,7 +26731,7 @@ call $~lib/rt/itcms/__link i32.const 0 local.set $0 - loop $for-loop|1131 + loop $for-loop|1126 local.get $0 local.get $5 i32.lt_s @@ -23324,7 +26744,7 @@ i32.load local.tee $1 if - local.get $3 + local.get $2 local.get $9 i32.add local.get $1 @@ -23334,15 +26754,15 @@ local.tee $1 call $~lib/memory/memory.copy local.get $1 - local.get $3 + local.get $2 i32.add - local.set $3 + local.set $2 end local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|1131 + br $for-loop|1126 end end i32.const 0 @@ -23372,17 +26792,17 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 local.get $10 - i32.store offset=60 + i32.store offset=64 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 2 i32.const 27 - i32.const 14448 + i32.const 14512 call $~lib/rt/__newArray local.tee $4 - i32.store offset=48 + i32.store offset=52 local.get $10 i32.load offset=12 i32.const 8 @@ -23390,14 +26810,14 @@ if i32.const 0 i32.const 1552 - i32.const 1106 + i32.const 1110 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 local.set $0 - loop $for-loop|2132 + loop $for-loop|2127 local.get $0 local.get $4 i32.load offset=12 @@ -23406,9 +26826,9 @@ local.get $10 local.get $0 call $~lib/array/Array#__get - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store local.get $4 local.get $0 @@ -23417,14 +26837,14 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=8 - local.get $2 + local.get $3 local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1108 + i32.const 1112 i32.const 5 call $~lib/builtins/abort unreachable @@ -23433,7 +26853,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|2132 + br $for-loop|2127 end end global.get $~lib/memory/__stack_pointer @@ -23444,17 +26864,17 @@ i32.const 0 call $~lib/rt/__newArray local.tee $0 - i32.store offset=28 + i32.store offset=48 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - i32.store offset=56 + i32.store offset=60 local.get $0 i32.const 0 i32.const 0 i32.const 2 i32.const 3 - i32.const 14512 + i32.const 14576 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 @@ -23462,12 +26882,12 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 14544 + i32.const 14608 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $1 local.get $0 - i32.store offset=56 + i32.store offset=60 local.get $0 call $~lib/array/Array<~lib/array/Array>#flat local.set $1 @@ -23479,36 +26899,36 @@ if i32.const 0 i32.const 1552 - i32.const 1112 + i32.const 1116 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 global.set $std/array/arr - i32.const 31428 + i32.const 31492 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 i32.gt_s if - loop $while-continue|070 + loop $while-continue|067 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|070 + br $while-continue|067 end end end call $~lib/rt/itcms/step drop - loop $while-continue|1133 + loop $while-continue|1 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|1133 + br $while-continue|1 end end global.get $~lib/rt/itcms/total @@ -23522,13 +26942,13 @@ i32.add global.set $~lib/rt/itcms/threshold global.get $~lib/memory/__stack_pointer - i32.const 72 + i32.const 76 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23542,11 +26962,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23636,11 +27056,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23730,11 +27150,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23768,11 +27188,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23833,11 +27253,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23873,11 +27293,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -23947,11 +27367,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24050,11 +27470,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24166,11 +27586,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24277,11 +27697,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24335,11 +27755,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24388,11 +27808,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24470,11 +27890,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24542,24 +27962,21 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort@varargs (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (local $3 f32) + (local $4 f32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24576,197 +27993,148 @@ end unreachable end - i32.const 8064 + i32.const 7536 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8064 + i32.const 7536 i32.store end - block $__inlined_func$~lib/array/Array#sort + block $__inlined_func$~lib/array/Array#sort local.get $0 i32.load offset=12 - local.tee $6 + local.tee $2 i32.const 1 i32.le_s - br_if $__inlined_func$~lib/array/Array#sort + br_if $__inlined_func$~lib/array/Array#sort local.get $0 i32.load offset=4 - local.set $4 - local.get $6 + local.set $0 + local.get $2 i32.const 2 i32.eq if + local.get $0 + f32.load offset=4 + local.set $3 + local.get $0 + f32.load + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $3 local.get $4 - i32.load offset=4 - local.set $3 - local.get $4 - i32.load - local.set $2 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $2 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - local.get $3 - i32.store - end - br $__inlined_func$~lib/array/Array#sort - end - local.get $6 - i32.const 256 - i32.lt_s - if - local.get $1 - local.set $3 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $5 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $2 - local.tee $1 - i32.const 1 - i32.sub - local.set $2 - local.get $4 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - br $while-continue|1 - end - end - end - local.get $4 - local.get $2 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - else - local.get $4 - local.get $6 local.get $1 - call $~lib/util/sort/weakHeapSort + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $4 + f32.store offset=4 + local.get $0 + local.get $3 + f32.store + end + br $__inlined_func$~lib/array/Array#sort end + local.get $0 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 ) - (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.tee $1 i32.const 0 i32.store - local.get $1 - local.get $0 - call $~lib/array/Array#constructor - local.tee $1 - i32.store - loop $for-loop|0 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 8128 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8128 + i32.store + end + block $__inlined_func$~lib/array/Array#sort local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.le_s + br_if $__inlined_func$~lib/array/Array#sort + local.get $0 + i32.load offset=4 + local.set $3 local.get $2 - i32.gt_s + i32.const 2 + i32.eq if - local.get $1 - local.get $2 - local.get $0 - i32.const 1 - i32.sub - local.get $2 - i32.sub - call $~lib/array/Array#__set - local.get $2 - i32.const 1 - i32.add + local.get $3 + i32.load offset=4 local.set $2 - br $for-loop|0 + local.get $3 + i32.load + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $4 + i32.store offset=4 + local.get $3 + local.get $2 + i32.store + end + br $__inlined_func$~lib/array/Array#sort end + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT end global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $0 ) - (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) (local $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -24774,11 +28142,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -24789,207 +28157,167 @@ i32.const 0 i32.store local.get $1 - local.get $0 - call $~lib/array/Array#constructor - local.tee $1 - i32.store - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_s - if - local.get $1 - local.get $2 - call $~lib/math/NativeMath.random - local.get $0 - f64.convert_i32_s - f64.mul - i32.trunc_f64_s - call $~lib/array/Array#__set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - block $folding-inner2 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 15044 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $folding-inner0 - local.get $0 - i32.load offset=12 - local.tee $6 - i32.const 1 - i32.le_s - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $6 - i32.const 2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $4 - i32.load offset=4 - local.tee $3 - i32.store - local.get $2 - local.get $4 - i32.load - local.tee $2 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $2 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - local.get $3 - i32.store - end - br $folding-inner0 - end - local.get $1 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15044 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $7 - i32.store - local.get $5 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|1 - local.get $1 - i32.const 0 - i32.ge_s - if - block $while-break|1 - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $8 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $1 - local.tee $2 - i32.const 1 - i32.sub - local.set $1 - local.get $4 - local.get $2 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - br $while-continue|1 - end - end - end - local.get $4 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - br $folding-inner2 - end - br $folding-inner2 + local.get $0 + call $~lib/array/Array#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $1 + local.get $2 + local.get $0 + i32.const 1 + i32.sub + local.get $2 + i32.sub + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15108 + i32.lt_s + if + i32.const 31520 + i32.const 31568 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + local.get $1 + local.get $0 + call $~lib/array/Array#constructor + local.tee $1 + i32.store + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_s + if + local.get $1 + local.get $2 + call $~lib/math/NativeMath.random + local.get $0 + f64.convert_i32_s + f64.mul + i32.trunc_f64_s + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - i32.const 31456 - i32.const 31504 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15108 + i32.lt_s + if + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.le_s + br_if $folding-inner0 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.tee $4 + local.get $3 + i32.load offset=4 + local.tee $2 + i32.store + local.get $4 + local.get $3 + i32.load + local.tee $4 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $4 + i32.store offset=4 + local.get $3 + local.get $2 + i32.store + end + br $folding-inner0 + end + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer @@ -25003,11 +28331,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25102,11 +28430,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25165,7 +28493,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 return end i32.const 0 @@ -25211,11 +28539,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25231,7 +28559,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 9344 + i32.const 9408 return end global.get $~lib/memory/__stack_pointer @@ -25324,11 +28652,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25344,7 +28672,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 9344 + i32.const 9408 return end global.get $~lib/memory/__stack_pointer @@ -25425,7 +28753,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -25442,7 +28770,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8752 + i32.const 8816 return end block $folding-inner0 @@ -25457,7 +28785,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -25472,7 +28800,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11280 + i32.const 11344 local.set $0 br $__inlined_func$~lib/util/number/dtoa end @@ -25490,7 +28818,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11312 + i32.const 11376 local.set $0 br $__inlined_func$~lib/util/number/dtoa end @@ -25498,8 +28826,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11344 - i32.const 11392 + i32.const 11408 + i32.const 11456 local.get $3 f64.const 0 f64.lt @@ -25507,7 +28835,7 @@ local.set $0 br $__inlined_func$~lib/util/number/dtoa end - i32.const 11424 + i32.const 11488 local.get $3 call $~lib/util/number/dtoa_core i32.const 1 @@ -25520,7 +28848,7 @@ local.tee $0 i32.store local.get $0 - i32.const 11424 + i32.const 11488 local.get $1 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer @@ -25532,7 +28860,7 @@ end global.get $~lib/memory/__stack_pointer local.get $4 - i32.const 11244 + i32.const 11308 i32.load i32.const 1 i32.shr_u @@ -25576,7 +28904,7 @@ i32.const 1 i32.shl i32.add - i32.const 11248 + i32.const 11312 local.get $5 i32.const 1 i32.shl @@ -25631,8 +28959,8 @@ local.get $0 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25650,11 +28978,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25777,11 +29105,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25808,7 +29136,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -25830,7 +29158,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -25852,7 +29180,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -25947,8 +29275,8 @@ local.get $0 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25961,11 +29289,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -25988,11 +29316,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26023,11 +29351,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26101,11 +29429,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26174,11 +29502,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26229,11 +29557,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26344,11 +29672,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26441,11 +29769,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26537,11 +29865,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26630,11 +29958,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26662,7 +29990,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -26677,7 +30005,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -26742,8 +30070,8 @@ local.get $2 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26755,11 +30083,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26799,11 +30127,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26852,11 +30180,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26923,7 +30251,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -26938,7 +30266,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -27008,8 +30336,8 @@ local.get $2 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27025,11 +30353,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27089,11 +30417,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27163,11 +30491,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27192,7 +30520,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -27218,7 +30546,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -27309,8 +30637,8 @@ local.get $2 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27327,7 +30655,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -27351,7 +30679,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -27454,8 +30782,8 @@ local.get $3 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27470,11 +30798,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27539,11 +30867,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27572,7 +30900,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -27587,7 +30915,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -27601,10 +30929,10 @@ end unreachable end - i32.const 9040 + i32.const 9104 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 9040 + i32.const 9104 i32.store end local.get $0 @@ -27620,8 +30948,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27633,11 +30961,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27646,7 +30974,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - i32.const 14576 + i32.const 14640 i32.const 1104 i32.const 477 i32.const 7 @@ -27659,11 +30987,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27689,7 +31017,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -27711,7 +31039,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -27733,7 +31061,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -27826,8 +31154,8 @@ local.get $0 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27839,11 +31167,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27874,11 +31202,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27950,11 +31278,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28021,11 +31349,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28071,11 +31399,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28118,11 +31446,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28215,11 +31543,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28311,11 +31639,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28404,11 +31732,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28436,7 +31764,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -28451,7 +31779,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -28511,8 +31839,8 @@ local.get $3 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28527,11 +31855,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28660,11 +31988,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28711,11 +32039,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28780,7 +32108,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -28795,7 +32123,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -28863,8 +32191,8 @@ local.get $2 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28879,11 +32207,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28940,11 +32268,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29014,11 +32342,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29066,7 +32394,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29092,7 +32420,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29179,8 +32507,8 @@ local.get $2 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29197,7 +32525,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29221,7 +32549,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29316,8 +32644,8 @@ local.get $3 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29332,11 +32660,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29396,17 +32724,13 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29421,7 +32745,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29435,128 +32759,55 @@ end unreachable end - i32.const 14640 + i32.const 14704 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 14640 + i32.const 14704 i32.store end block $__inlined_func$~lib/array/Array#sort local.get $0 i32.load offset=12 - local.tee $6 + local.tee $3 i32.const 1 i32.le_s br_if $__inlined_func$~lib/array/Array#sort local.get $0 i32.load offset=4 - local.set $4 - local.get $6 + local.set $2 + local.get $3 i32.const 2 i32.eq if - local.get $4 + local.get $2 i32.load8_u offset=1 local.set $3 - local.get $4 + local.get $2 i32.load8_u - local.set $2 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $3 - local.get $2 + local.get $4 local.get $1 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if - local.get $4 local.get $2 - i32.store8 offset=1 local.get $4 + i32.store8 offset=1 + local.get $2 local.get $3 i32.store8 end br $__inlined_func$~lib/array/Array#sort end - local.get $6 - i32.const 256 - i32.lt_s - if - local.get $1 - local.set $3 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $5 - i32.add - i32.load8_u - local.set $7 - local.get $5 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $2 - local.get $4 - i32.add - i32.load8_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $2 - local.tee $1 - i32.const 1 - i32.sub - local.set $2 - local.get $4 - local.get $1 - i32.const 1 - i32.add - i32.add - local.get $8 - i32.store8 - br $while-continue|1 - end - end - end - local.get $4 - local.get $2 - i32.const 1 - i32.add - i32.add - local.get $7 - i32.store8 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - else - local.get $4 - local.get $6 - local.get $1 - call $~lib/util/sort/weakHeapSort - end + local.get $2 + local.get $3 + local.get $1 + call $~lib/util/sort/SORT end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -29569,8 +32820,8 @@ local.get $0 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29584,7 +32835,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29599,7 +32850,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29613,10 +32864,10 @@ end unreachable end - i32.const 9040 + i32.const 9104 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 9040 + i32.const 9104 i32.store end local.get $0 @@ -29632,8 +32883,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29645,11 +32896,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29672,7 +32923,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29694,7 +32945,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29727,8 +32978,8 @@ local.get $0 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29744,7 +32995,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29760,7 +33011,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29827,8 +33078,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29844,7 +33095,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29859,7 +33110,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29927,8 +33178,8 @@ local.get $2 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29942,7 +33193,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29954,7 +33205,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30012,8 +33263,8 @@ local.get $0 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30027,11 +33278,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30147,11 +33398,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30195,11 +33446,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30242,7 +33493,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30271,7 +33522,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30355,8 +33606,8 @@ local.get $2 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30369,11 +33620,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30407,7 +33658,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30422,7 +33673,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30541,8 +33792,8 @@ local.get $2 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30558,7 +33809,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30570,7 +33821,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30617,8 +33868,8 @@ local.get $3 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30634,7 +33885,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30649,7 +33900,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30705,8 +33956,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30723,7 +33974,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30738,7 +33989,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30810,8 +34061,8 @@ local.get $2 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30828,7 +34079,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30840,7 +34091,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30897,8 +34148,8 @@ local.get $3 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30914,7 +34165,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30930,7 +34181,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30996,8 +34247,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31011,11 +34262,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31075,7 +34326,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -31101,7 +34352,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -31221,8 +34472,8 @@ local.get $2 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31239,7 +34490,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -31263,7 +34514,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -31366,8 +34617,8 @@ local.get $3 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31383,7 +34634,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -31395,7 +34646,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -31457,8 +34708,8 @@ local.get $0 return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31472,7 +34723,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -31487,7 +34738,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -31501,10 +34752,10 @@ end unreachable end - i32.const 14672 + i32.const 14736 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 14672 + i32.const 14736 i32.store end local.get $0 @@ -31520,8 +34771,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31535,7 +34786,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -31550,7 +34801,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -31564,10 +34815,10 @@ end unreachable end - i32.const 9040 + i32.const 9104 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 9040 + i32.const 9104 i32.store end local.get $0 @@ -31583,8 +34834,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31596,11 +34847,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15044 + i32.const 15108 i32.lt_s if - i32.const 31456 - i32.const 31504 + i32.const 31520 + i32.const 31568 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index 9762cbb981..dadaec189e 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -948,6 +948,10 @@ function assertSortedDefault(arr: Array): void { // Tests for default comparator { + let f32ArrayTypedSmall: f32[] = [2.0, -1.0, 0.0]; + f32ArrayTypedSmall.sort(); + assert(isArraysEqual(f32ArrayTypedSmall, [-1.0, 0.0, 2.0])); + let f32ArrayTyped: f32[] = [1.0, NaN, -Infinity, 1.00000001, 0.0, -1.0, -2.0, +Infinity]; f32ArrayTyped.sort(); assert(isArraysEqual(f32ArrayTyped, [-Infinity, -2.0, -1.0, 0.0, 1.0, 1.00000001, Infinity, NaN])); diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 2a1c8ba8fa..df0d6c4c19 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -3,18 +3,21 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) + (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) + (type $none_=>_none (func)) (type $none_=>_f64 (func (result f64))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) @@ -23,7 +26,6 @@ (type $i64_=>_i64 (func (param i64) (result i64))) (type $i64_=>_none (func (param i64))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) @@ -53,6 +55,9 @@ (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) (global $std/array/charset i32 (i32.const 6288)) + (global $~lib/util/sort/INSERTION_SORT_THRESHOLD i32 (i32.const 128)) + (global $~lib/util/sort/EMPTY i32 (i32.const -1)) + (global $~lib/util/sort/MIN_RUN_LENGTH i32 (i32.const 32)) (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) @@ -65,10 +70,10 @@ (global $std/array/ArrayU32 i32 (i32.const 40)) (global $std/array/ArrayU8 i32 (i32.const 41)) (global $std/array/ArrayStr i32 (i32.const 42)) - (global $~lib/rt/__rtti_base i32 (i32.const 13664)) - (global $~lib/memory/__data_end i32 (i32.const 14020)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 30404)) - (global $~lib/memory/__heap_base i32 (i32.const 30404)) + (global $~lib/rt/__rtti_base i32 (i32.const 13728)) + (global $~lib/memory/__data_end i32 (i32.const 14084)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 30468)) + (global $~lib/memory/__heap_base i32 (i32.const 30468)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") @@ -226,123 +231,125 @@ (data (i32.const 6188) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 6220) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00\00\00\00\00") (data (i32.const 6268) "\bc\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?\00") - (data (i32.const 6460) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6524) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6556) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6620) "\\\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6716) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6748) "\\\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6844) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6892) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6924) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6972) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7020) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7052) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") - (data (i32.const 7100) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7132) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7164) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 7196) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7244) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7292) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7324) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7356) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 7388) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7420) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7452) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7484) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7516) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7548) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7580) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7612) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7644) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") - (data (i32.const 7676) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00a\00\00\00\00\00\00\00\00\00") - (data (i32.const 7708) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7740) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\b0\1d\00\00\d0\1d\00\00\b0\1d\00\00\f0\1d\00\00\10\1e\00\000\1e\00\00\00\00\00\00") - (data (i32.const 7788) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\000\1e\00\00\b0\1d\00\00\b0\1d\00\00\f0\1d\00\00\d0\1d\00\00\10\1e\00\00\00\00\00\00") - (data (i32.const 7836) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7868) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7900) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7932) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") - (data (i32.const 7964) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") - (data (i32.const 7996) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 8028) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00\00\00\00\00\00\00\00\00") - (data (i32.const 8076) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 8108) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data (i32.const 8236) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data (i32.const 8300) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 8332) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 8732) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 9788) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data (i32.const 9884) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00\00\00") - (data (i32.const 9916) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 9948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 9980) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80\00\00\00\00") - (data (i32.const 10012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00_\00_\00\00\00\00\00\00\00\00\00") - (data (i32.const 10044) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10124) "L\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10204) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00,\00 \00\00\00\00\00\00\00\00\00") - (data (i32.const 10236) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") - (data (i32.const 10268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") - (data (i32.const 10300) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10348) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10456) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11804) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11836) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11868) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 11900) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00,\002\00\00\00\00\00\00\00") - (data (i32.const 11980) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12028) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\01\ff\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12060) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00") - (data (i32.const 12092) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\01\00\ff\ff\00\00\00\00\00\00\00\00") - (data (i32.const 12124) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12172) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12220) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12300) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12364) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00\00\00\00\00\00\00\00\00") - (data (i32.const 12476) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\000\1e\00\00\b0\1d\00\00\b0\1d\00\00\f0\1d\00\00\d0\1d\00\00\10\1e\00\00\00\00\00\00") - (data (i32.const 12524) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00\00\00") - (data (i32.const 12572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12636) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\f0,\00\0001\00\00\00\00\00\00P1\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12684) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00") - (data (i32.const 12716) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 12748) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 12780) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12828) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\02\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12860) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\03\04\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12892) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12924) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12956) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 12988) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00") - (data (i32.const 13020) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") - (data (i32.const 13052) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00o\00n\00e\00\00\00\00\00\00\00") - (data (i32.const 13084) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\103\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13116) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00t\00w\00o\00\00\00\00\00\00\00") - (data (i32.const 13148) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00h\00r\00e\00e\00\00\00") - (data (i32.const 13180) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00P3\00\00\00\00\00\00p3\00\00") - (data (i32.const 13212) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00o\00u\00r\00\00\00\00\00") - (data (i32.const 13244) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00i\00v\00e\00\00\00\00\00") - (data (i32.const 13276) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00s\00i\00x\00\00\00\00\00\00\00") - (data (i32.const 13308) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\b03\00\00\d03\00\00\f03\00\00") - (data (i32.const 13340) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00e\00v\00e\00n\00\00\00") - (data (i32.const 13372) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\0004\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13404) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\103\00\00P3\00\00\00\00\00\00p3\00\00\b03\00\00\d03\00\00\f03\00\0004\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13468) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13500) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13532) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e\00\00\00\00\00") - (data (i32.const 13596) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13628) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13664) ",\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00 \00\00\00\00\00\00\00A\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\01\00\00\07\00\00\00B\00\00\00\06\00\00\00\02A\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6460) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00@\00\00\80\bf\00\00\00\00") + (data (i32.const 6492) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6524) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\80\bf\00\00\00\00\00\00\00@") + (data (i32.const 6556) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6620) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6684) "\\\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6780) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6812) "\\\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6908) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6956) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6988) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7036) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7084) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7116) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") + (data (i32.const 7164) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7196) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7228) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 7260) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7308) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7356) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7388) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7420) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 7452) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7484) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7516) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7548) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7580) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7612) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7644) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7676) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7708) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") + (data (i32.const 7740) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00a\00\00\00\00\00\00\00\00\00") + (data (i32.const 7772) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7804) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\f0\1d\00\00\10\1e\00\00\f0\1d\00\000\1e\00\00P\1e\00\00p\1e\00\00\00\00\00\00") + (data (i32.const 7852) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00p\1e\00\00\f0\1d\00\00\f0\1d\00\000\1e\00\00\10\1e\00\00P\1e\00\00\00\00\00\00") + (data (i32.const 7900) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7932) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7964) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7996) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") + (data (i32.const 8028) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") + (data (i32.const 8060) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 8092) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00\00\00\00\00\00\00\00\00") + (data (i32.const 8140) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data (i32.const 8172) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data (i32.const 8300) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 8364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 8396) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 8796) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 9852) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data (i32.const 9948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00\00\00") + (data (i32.const 9980) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 10012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10044) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80\00\00\00\00") + (data (i32.const 10076) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00_\00_\00\00\00\00\00\00\00\00\00") + (data (i32.const 10108) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10188) "L\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00,\00 \00\00\00\00\00\00\00\00\00") + (data (i32.const 10300) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") + (data (i32.const 10332) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") + (data (i32.const 10364) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10464) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10520) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11868) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11900) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11932) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 11964) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00,\002\00\00\00\00\00\00\00") + (data (i32.const 12044) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12092) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\01\ff\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12124) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00") + (data (i32.const 12156) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\01\00\ff\ff\00\00\00\00\00\00\00\00") + (data (i32.const 12188) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12236) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12284) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12364) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12428) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00\00\00\00\00\00\00\00\00") + (data (i32.const 12540) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00p\1e\00\00\f0\1d\00\00\f0\1d\00\000\1e\00\00\10\1e\00\00P\1e\00\00\00\00\00\00") + (data (i32.const 12588) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00\00\00") + (data (i32.const 12636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12700) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\000-\00\00p1\00\00\00\00\00\00\901\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00") + (data (i32.const 12780) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 12812) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00") + (data (i32.const 12844) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12892) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\02\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12924) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\03\04\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12956) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12988) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13020) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 13052) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00") + (data (i32.const 13084) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") + (data (i32.const 13116) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00o\00n\00e\00\00\00\00\00\00\00") + (data (i32.const 13148) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00P3\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13180) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00t\00w\00o\00\00\00\00\00\00\00") + (data (i32.const 13212) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00h\00r\00e\00e\00\00\00") + (data (i32.const 13244) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\903\00\00\00\00\00\00\b03\00\00") + (data (i32.const 13276) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00o\00u\00r\00\00\00\00\00") + (data (i32.const 13308) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00i\00v\00e\00\00\00\00\00") + (data (i32.const 13340) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00s\00i\00x\00\00\00\00\00\00\00") + (data (i32.const 13372) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\f03\00\00\104\00\0004\00\00") + (data (i32.const 13404) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00e\00v\00e\00n\00\00\00") + (data (i32.const 13436) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00p4\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13468) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00P3\00\00\903\00\00\00\00\00\00\b03\00\00\f03\00\00\104\00\0004\00\00p4\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13532) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13564) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13596) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e\00\00\00\00\00") + (data (i32.const 13660) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13692) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13728) ",\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00 \00\00\00\00\00\00\00A\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\01\00\00\07\00\00\00B\00\00\00\06\00\00\00\02A\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") (table $0 59 funcref) (elem $0 (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|4 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|39 $start:std/array~anonymous|40 $start:std/array~anonymous|41 $start:std/array~anonymous|42 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|1 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|1) (export "ArrayU32" (global $std/array/ArrayU32)) @@ -6656,73 +6663,123 @@ unreachable end ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 f32) - (local $9 i32) + (local $9 f32) + (local $10 f32) + (local $11 f32) + (local $12 i32) + (local $13 i32) i32.const 0 - local.set $3 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 if local.get $0 - local.get $3 + local.get $6 i32.const 2 i32.shl i32.add f32.load - local.set $5 - local.get $3 + local.set $8 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 i32.const 1 i32.sub - local.set $6 + local.set $12 block $while-break|1 loop $while-continue|1 - local.get $6 - i32.const 0 + local.get $12 + local.get $1 i32.ge_s - local.set $7 - local.get $7 + local.set $13 + local.get $13 if local.get $0 - local.get $6 + local.get $12 i32.const 2 i32.shl i32.add f32.load local.set $8 - local.get $5 local.get $8 + local.get $11 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 - i32.lt_s + i32.gt_s if local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add + local.get $12 i32.const 2 i32.shl i32.add local.get $8 - f32.store + f32.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 else br $while-break|1 end @@ -6731,1096 +6788,4700 @@ end end local.get $0 - local.get $6 - i32.const 1 + local.get $12 + i32.const 2 + i32.shl i32.add + local.get $11 + f32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 i32.const 2 i32.shl i32.add - local.get $5 - f32.store - local.get $3 - i32.const 1 + local.get $10 + f32.store offset=4 + local.get $6 + i32.const 2 i32.add - local.set $3 + local.set $6 br $for-loop|0 end end ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) - (local $10 f32) - (local $11 i32) - (local $12 f32) + (local $7 f32) local.get $1 - i32.const 31 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl i32.add - i32.const 5 - i32.shr_u + f32.load + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 i32.const 2 i32.shl - local.set $3 + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength local.get $3 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $0 local.get $4 - local.get $7 - i32.const 6 - i32.shr_u i32.const 2 i32.shl i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 i32.load - local.get $7 - i32.const 1 - i32.shr_s + call_indirect $0 (type $f32_f32_=>_i32) i32.const 31 - i32.and i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end + i32.add + local.set $4 + br $while-continue|0 end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $9 - local.get $0 + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 i32.lt_s + local.set $6 + local.get $6 if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u + local.get $0 + local.get $1 i32.const 2 i32.shl i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u + f32.load + local.set $7 + local.get $0 + local.get $1 i32.const 2 i32.shl i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store local.get $0 local.get $5 i32.const 2 i32.shl i32.add - local.get $9 + f32.load f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 local.get $0 - local.get $8 + local.get $5 i32.const 2 i32.shl i32.add - local.get $10 + local.get $7 f32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 end - end - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 - if - local.get $0 - f32.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - f32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $10 - f32.store - i32.const 1 - local.set $8 - loop $while-continue|3 - local.get $8 - i32.const 1 + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 i32.shl + i32.add + f32.load offset=4 + local.get $0 local.get $4 - local.get $8 - i32.const 5 - i32.shr_u i32.const 2 i32.shl i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 i32.load - local.get $8 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $7 - local.get $5 - i32.lt_s - local.set $11 - local.get $11 - if - local.get $7 - local.set $8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $8 + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.ge_s + else i32.const 0 - i32.gt_s - local.set $11 - local.get $11 - if - local.get $0 - f32.load - local.set $10 - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $9 - local.get $10 - local.get $9 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $8 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $10 - f32.store - local.get $0 - local.get $9 - f32.store - end - local.get $8 - i32.const 1 - i32.shr_s - local.set $8 - br $while-continue|4 - end end - local.get $5 - i32.const 1 - i32.sub local.set $5 - br $for-loop|2 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - f32.load offset=4 - local.set $12 - local.get $0 - local.get $0 - f32.load - f32.store offset=4 - local.get $0 - local.get $12 - f32.store ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f32) + (func $~lib/util/sort/nodePower (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i64) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i64) + (local $10 i64) + local.get $1 local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 + i32.sub i32.const 1 - i32.le_s - if - local.get $0 - return - end + i32.add + i64.extend_i32_u + local.set $5 + local.get $3 local.get $0 - i32.load offset=4 - local.set $3 + i32.const 1 + i32.shl + i32.sub + local.set $6 local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - f32.load offset=4 - local.set $4 - local.get $3 - f32.load - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if + local.get $6 + i32.add + local.set $7 + local.get $4 + local.get $6 + i32.add + i32.const 1 + i32.add + local.set $8 + local.get $7 + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $5 + i64.div_u + local.set $9 + local.get $8 + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $5 + i64.div_u + local.set $10 + local.get $9 + local.get $10 + i64.xor + i32.wrap_i64 + i32.clz + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 f32) + (local $12 f32) + (local $13 i32) + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + f32.load + f32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + f32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $12 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + f32.store + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + f32.store + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 f32) + (local $7 f32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + f32.load offset=4 + local.set $6 + local.get $0 + f32.load offset=8 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + local.set $5 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + f32.store offset=4 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + local.set $7 + local.get $0 + f32.load + local.set $6 + local.get $6 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + local.set $5 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + f32.store + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + f32.store offset=8 + end + local.get $0 + f32.load + local.set $7 + local.get $0 + f32.load offset=4 + local.set $6 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + f32.store + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + f32.store offset=4 + end + end + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + local.get $4 + local.set $5 + i32.const 31 + local.get $5 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $8 + i32.lt_u + local.set $12 + local.get $12 + if + local.get $10 + local.get $5 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + i32.const 0 + local.set $13 + local.get $4 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $14 + i32.const 0 + local.set $15 + local.get $0 + i32.const 0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $16 + local.get $16 + i32.const 1 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $12 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $5 + local.get $12 + local.get $5 + i32.lt_s + select + local.set $16 + local.get $0 + local.get $15 + local.get $16 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $16 + local.get $3 + i32.lt_s + local.set $12 + local.get $12 + if + local.get $16 + i32.const 1 + i32.add + local.set $5 + local.get $0 + local.get $5 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $18 + local.get $18 + local.get $5 + i32.sub + i32.const 1 + i32.add + local.set $19 + local.get $19 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $20 + local.get $5 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.add + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $18 + local.get $0 + local.get $5 + local.get $18 + local.get $19 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $3 + local.get $15 + local.get $5 + local.get $18 + call $~lib/util/sort/nodePower + local.set $20 + local.get $13 + local.set $21 + loop $for-loop|3 + local.get $21 + local.get $20 + i32.gt_u + local.set $22 + local.get $22 + if + local.get $10 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $23 + local.get $23 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $23 + local.get $11 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $16 + local.get $14 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $23 + local.set $15 + local.get $10 + local.get $21 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + end + local.get $21 + i32.const 1 + i32.sub + local.set $21 + br $for-loop|3 + end + end + local.get $10 + local.get $20 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $11 + local.get $20 + i32.const 2 + i32.shl + i32.add + local.get $16 + i32.store + local.get $5 + local.set $15 + local.get $18 + local.set $16 + local.get $20 + local.set $13 + br $while-continue|2 + end + end + local.get $13 + local.set $12 + loop $for-loop|4 + local.get $12 + i32.const 0 + i32.ne + local.set $21 + local.get $21 + if + local.get $10 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $22 + local.get $22 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $22 + local.get $11 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $14 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $12 + i32.const 1 + i32.sub + local.set $12 + br $for-loop|4 + end + end + local.get $14 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + ) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 f32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if + local.get $0 + return + end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + local.get $3 + f32.load offset=4 + local.set $4 + local.get $3 + f32.load + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + f32.store offset=4 + local.get $3 + local.get $4 + f32.store + end + local.get $0 + return + end + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.reinterpret_f32 + local.set $2 + local.get $1 + i32.reinterpret_f32 + local.set $3 + local.get $2 + local.get $2 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.set $2 + local.get $3 + local.get $3 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.set $3 + local.get $2 + local.get $3 + i32.gt_s + local.get $2 + local.get $3 + i32.lt_s + i32.sub + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + local.get $2 + i32.eqz + if + local.get $0 + call $~lib/array/Array#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + end + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + local.set $4 + local.get $4 + if + block $for-continue|0 + i32.const 1 + drop + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.tee $5 + local.get $5 + f32.ne + if (result i32) + local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.tee $5 + local.get $5 + f32.ne + else + i32.const 0 + end + if + br $for-continue|0 + end + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.get $1 + local.get $3 + call $~lib/array/Array#__get + f32.ne + if + i32.const 0 + return + end + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 1 + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 f64) + (local $9 f64) + (local $10 f64) + (local $11 f64) + (local $12 i32) + (local $13 i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 + if + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 + i32.const 1 + i32.sub + local.set $12 + block $while-break|1 + loop $while-continue|1 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + local.get $8 + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $8 + f64.store offset=16 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $11 + f64.store offset=16 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $8 + f64.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $10 + f64.store offset=8 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 f64) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $7 + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + local.get $7 + f64.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 f64) + (local $12 f64) + (local $13 i32) + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add + f64.load + f64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + f64.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $7 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $11 + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $12 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + f64.store + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + f64.store + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 f64) + (local $7 f64) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + f64.load offset=8 + local.set $6 + local.get $0 + f64.load offset=16 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + local.set $5 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + f64.store offset=8 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + local.set $7 + local.get $0 + f64.load + local.set $6 + local.get $6 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + local.set $5 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + f64.store + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + f64.store offset=16 + end + local.get $0 + f64.load + local.set $7 + local.get $0 + f64.load offset=8 + local.set $6 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + f64.store + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + f64.store offset=8 + end + end + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + local.get $4 + local.set $5 + i32.const 31 + local.get $5 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $8 + i32.lt_u + local.set $12 + local.get $12 + if + local.get $10 + local.get $5 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + i32.const 0 + local.set $13 + local.get $4 + i32.const 3 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $14 + i32.const 0 + local.set $15 + local.get $0 + i32.const 0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $16 + local.get $16 + i32.const 1 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $12 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $5 + local.get $12 + local.get $5 + i32.lt_s + select + local.set $16 + local.get $0 + local.get $15 + local.get $16 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $16 + local.get $3 + i32.lt_s + local.set $12 + local.get $12 + if + local.get $16 + i32.const 1 + i32.add + local.set $5 + local.get $0 + local.get $5 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $18 + local.get $18 + local.get $5 + i32.sub + i32.const 1 + i32.add + local.set $19 + local.get $19 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $20 + local.get $5 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.add + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $18 + local.get $0 + local.get $5 + local.get $18 + local.get $19 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $3 + local.get $15 + local.get $5 + local.get $18 + call $~lib/util/sort/nodePower + local.set $20 + local.get $13 + local.set $21 + loop $for-loop|3 + local.get $21 + local.get $20 + i32.gt_u + local.set $22 + local.get $22 + if + local.get $10 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $23 + local.get $23 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $23 + local.get $11 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $16 + local.get $14 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $23 + local.set $15 + local.get $10 + local.get $21 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + end + local.get $21 + i32.const 1 + i32.sub + local.set $21 + br $for-loop|3 + end + end + local.get $10 + local.get $20 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $11 + local.get $20 + i32.const 2 + i32.shl + i32.add + local.get $16 + i32.store + local.get $5 + local.set $15 + local.get $18 + local.set $16 + local.get $20 + local.set $13 + br $while-continue|2 + end + end + local.get $13 + local.set $12 + loop $for-loop|4 + local.get $12 + i32.const 0 + i32.ne + local.set $21 + local.get $21 + if + local.get $10 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $22 + local.get $22 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $22 + local.get $11 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $14 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $12 + i32.const 1 + i32.sub + local.set $12 + br $for-loop|4 + end + end + local.get $14 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + ) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if + local.get $0 + return + end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + local.get $3 + f64.load offset=8 + local.set $4 + local.get $3 + f64.load + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + f64.store offset=8 + local.get $3 + local.get $4 + f64.store + end + local.get $0 + return + end + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.reinterpret_f64 + local.set $2 + local.get $1 + i64.reinterpret_f64 + local.set $3 + local.get $2 + local.get $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.set $2 + local.get $3 + local.get $3 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.set $3 + local.get $2 + local.get $3 + i64.gt_s + local.get $2 + local.get $3 + i64.lt_s + i32.sub + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 99 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $2 + i32.const 0 + drop + local.get $2 + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + local.get $2 + i32.eqz + if + local.get $0 + call $~lib/array/Array#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + end + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + local.set $4 + local.get $4 + if + block $for-continue|0 + i32.const 1 + drop + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.tee $5 + local.get $5 + f64.ne + if (result i32) + local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.tee $5 + local.get $5 + f64.ne + else + i32.const 0 + end + if + br $for-continue|0 + end + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.get $1 + local.get $3 + call $~lib/array/Array#__get + f64.ne + if + i32.const 0 + return + end + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 1 + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 + if + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 + i32.const 1 + i32.sub + local.set $12 + block $while-break|1 + loop $while-continue|1 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + local.get $8 + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $12 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=4 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + local.set $6 + local.get $0 + i32.load + local.set $5 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $7 + local.get $0 + i32.load offset=4 + local.set $6 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store offset=4 + end + end + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + local.get $4 + local.set $7 + i32.const 31 + local.get $7 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $8 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $10 + local.get $7 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + i32.const 0 + local.set $12 + local.get $4 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $13 + i32.const 0 + local.set $14 + local.get $0 + i32.const 0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $15 + local.get $15 + i32.const 1 + i32.add + local.set $16 + local.get $16 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $6 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $15 + local.get $0 + local.get $14 + local.get $15 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $15 + local.get $3 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $15 + i32.const 1 + i32.add + local.set $7 + local.get $0 + local.get $7 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $5 + local.get $5 + local.get $7 + i32.sub + i32.const 1 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $18 + local.get $7 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.add + i32.const 1 + i32.sub + local.tee $19 + local.get $18 + local.get $19 + i32.lt_s + select + local.set $5 + local.get $0 + local.get $7 + local.get $5 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $3 + local.get $14 + local.get $7 + local.get $5 + call $~lib/util/sort/nodePower + local.set $18 + local.get $12 + local.set $19 + loop $for-loop|3 + local.get $19 + local.get $18 + i32.gt_u + local.set $20 + local.get $20 + if + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $21 + local.get $21 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $21 + local.get $11 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $15 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $21 + local.set $14 + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + end + local.get $19 + i32.const 1 + i32.sub + local.set $19 + br $for-loop|3 + end + end + local.get $10 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $14 + i32.store + local.get $11 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $7 + local.set $14 + local.get $5 + local.set $15 + local.get $18 + local.set $12 + br $while-continue|2 + end + end + local.get $12 + local.set $6 + loop $for-loop|4 + local.get $6 + i32.const 0 + i32.ne + local.set $19 + local.get $19 + if + local.get $10 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $20 + local.get $20 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $20 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + ) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if + local.get $0 + return + end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + i32.store offset=4 local.get $3 + local.get $4 + i32.store + end + local.get $0 + return + end + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 + if + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 + i32.const 1 + i32.sub + local.set $12 + block $while-break|1 + loop $while-continue|1 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + local.get $8 + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $12 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength local.get $5 - f32.store offset=4 - local.get $3 - local.get $4 - f32.store + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=4 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + local.set $6 + local.get $0 + i32.load + local.set $5 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $7 + local.get $0 + i32.load offset=4 + local.set $6 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store offset=4 + end + end + return end local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort return end - local.get $3 + local.get $4 + local.set $7 + i32.const 31 + local.get $7 + i32.clz + i32.sub + i32.const 2 + i32.add local.set $8 - local.get $2 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 local.set $7 - local.get $1 - local.set $6 + loop $for-loop|1 + local.get $7 + local.get $8 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $10 + local.get $7 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end i32.const 0 - drop - local.get $7 - i32.const 256 + local.set $12 + local.get $4 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $13 + i32.const 0 + local.set $14 + local.get $0 + i32.const 0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $15 + local.get $15 + i32.const 1 + i32.add + local.set $16 + local.get $16 + global.get $~lib/util/sort/MIN_RUN_LENGTH i32.lt_s if - local.get $8 - local.get $7 + local.get $3 + local.tee $6 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $7 local.get $6 - call $~lib/util/sort/insertionSort - else - local.get $8 local.get $7 + i32.lt_s + select + local.set $15 + local.get $0 + local.get $14 + local.get $15 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $15 + local.get $3 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $15 + i32.const 1 + i32.add + local.set $7 + local.get $0 + local.get $7 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $5 + local.get $5 + local.get $7 + i32.sub + i32.const 1 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $18 + local.get $7 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.add + i32.const 1 + i32.sub + local.tee $19 + local.get $18 + local.get $19 + i32.lt_s + select + local.set $5 + local.get $0 + local.get $7 + local.get $5 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $3 + local.get $14 + local.get $7 + local.get $5 + call $~lib/util/sort/nodePower + local.set $18 + local.get $12 + local.set $19 + loop $for-loop|3 + local.get $19 + local.get $18 + i32.gt_u + local.set $20 + local.get $20 + if + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $21 + local.get $21 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $21 + local.get $11 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $15 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $21 + local.set $14 + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + end + local.get $19 + i32.const 1 + i32.sub + local.set $19 + br $for-loop|3 + end + end + local.get $10 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $14 + i32.store + local.get $11 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $7 + local.set $14 + local.get $5 + local.set $15 + local.get $18 + local.set $12 + br $while-continue|2 + end + end + local.get $12 + local.set $6 + loop $for-loop|4 local.get $6 - call $~lib/util/sort/weakHeapSort + i32.const 0 + i32.ne + local.set $19 + local.get $19 + if + local.get $10 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $20 + local.get $20 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $20 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 + end end - local.get $0 + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.reinterpret_f32 + i32.load offset=12 local.set $2 - local.get $1 - i32.reinterpret_f32 - local.set $3 local.get $2 - local.get $2 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - i32.xor - local.set $2 - local.get $3 - local.get $3 - i32.const 31 - i32.shr_s i32.const 1 - i32.shr_u - i32.xor + i32.le_s + if + local.get $0 + return + end + local.get $0 + i32.load offset=4 local.set $3 local.get $2 + i32.const 2 + i32.eq + if + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + i32.store offset=4 + local.get $3 + local.get $4 + i32.store + end + local.get $0 + return + end local.get $3 - i32.gt_s local.get $2 - local.get $3 - i32.lt_s + local.get $1 + call $~lib/util/sort/SORT + local.get $0 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u + i32.sub + ) + (func $~lib/math/NativeMath.random (result f64) + (local $0 i64) + (local $1 i64) + (local $2 i64) + global.get $~lib/math/random_seeded + i32.eqz + if + call $~lib/builtins/seed + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + end + global.get $~lib/math/random_state0_64 + local.set $0 + global.get $~lib/math/random_state1_64 + local.set $1 + local.get $1 + global.set $~lib/math/random_state0_64 + local.get $0 + local.get $0 + i64.const 23 + i64.shl + i64.xor + local.set $0 + local.get $0 + local.get $0 + i64.const 17 + i64.shr_u + i64.xor + local.set $0 + local.get $0 + local.get $1 + i64.xor + local.set $0 + local.get $0 + local.get $1 + i64.const 26 + i64.shr_u + i64.xor + local.set $0 + local.get $0 + global.set $~lib/math/random_state1_64 + local.get $1 + i64.const 12 + i64.shr_u + i64.const 4607182418800017408 + i64.or + local.set $2 + local.get $2 + f64.reinterpret_i64 + f64.const 1 + f64.sub + ) + (func $~lib/util/sort/COMPARATOR~anonymous|1 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 i32.sub ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isSorted (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 f32) - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - end - i32.const 0 + i32.const 1 + local.set $2 + local.get $0 + call $~lib/array/Array#get:length local.set $3 loop $for-loop|0 - local.get $3 local.get $2 + local.get $3 i32.lt_s local.set $4 local.get $4 if - block $for-continue|0 - i32.const 1 - drop - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.tee $5 - local.get $5 - f32.ne - if (result i32) - local.get $1 - local.get $3 - call $~lib/array/Array#__get - local.tee $5 - local.get $5 - f32.ne - else - i32.const 0 - end - if - br $for-continue|0 - end - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get - f32.ne - if - i32.const 0 - return - end + 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 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + i32.const 0 + return end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $for-loop|0 end end i32.const 1 ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 i32) + (func $start:std/array~anonymous|43 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.sub + ) + (func $start:std/array~anonymous|45 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $start:std/array~anonymous|46 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.sub + ) + (func $~lib/array/Array<~lib/array/Array>#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/array/Array>#set:dataStart (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array<~lib/array/Array>#set:byteLength (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array<~lib/array/Array>#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/array/Array<~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if local.get $1 + i32.const 0 i32.lt_s - local.set $4 - local.get $4 if - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $8 - f64.store - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $5 - f64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + i32.const 320 + i32.const 80 + i32.const 115 + i32.const 22 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array<~lib/array/Array>#set:length_ end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/array/Array>#__uset ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.sub + ) + (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 f64) - (local $10 f64) + (local $9 i32) + (local $10 i32) (local $11 i32) - (local $12 f64) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $2 local.get $1 - i32.const 31 + i32.sub + i32.const 1 i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and local.get $3 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - i32.const 0 + local.get $5 local.get $3 - call $~lib/memory/memory.fill - local.get $1 + i32.sub i32.const 1 + i32.and i32.sub - local.set $5 + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $8 - i32.const 3 + local.get $6 + i32.const 2 i32.shl i32.add - f64.load - local.set $9 + i32.load + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 3 + local.get $6 + i32.const 2 i32.shl i32.add - f64.load + i32.load offset=4 + local.tee $9 + i32.store offset=4 + local.get $9 local.set $10 + local.get $8 + local.set $11 + local.get $8 local.get $9 - local.get $10 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load - call_indirect $0 (type $f64_f64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.get $9 - f64.store - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - local.get $10 - f64.store - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 - if - local.get $0 - f64.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - f64.store - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.get $10 - f64.store - i32.const 1 - local.set $8 - loop $while-continue|3 - local.get $8 - i32.const 1 - i32.shl - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $8 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $7 - local.get $5 - i32.lt_s - local.set $11 - local.get $11 - if - local.get $7 - local.set $8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $8 - i32.const 0 - i32.gt_s - local.set $11 - local.get $11 - if - local.get $0 - f64.load - local.set $10 - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $9 - local.get $10 - local.get $9 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 + i32.const 1 + i32.sub + local.set $12 + block $while-break|1 + loop $while-continue|1 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 if - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $12 i32.const 2 i32.shl i32.add - local.get $4 + i32.load + local.tee $8 + i32.store local.get $8 - i32.const 5 - i32.shr_u + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $12 i32.const 2 i32.shl i32.add i32.load - i32.const 1 - local.get $8 - i32.const 31 - i32.and - i32.shl - i32.xor + local.tee $8 i32.store - local.get $0 local.get $8 - i32.const 3 - i32.shl - i32.add local.get $10 - f64.store - local.get $0 - local.get $9 - f64.store + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 end - local.get $8 - i32.const 1 - i32.shr_s - local.set $8 - br $while-continue|4 end end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|2 + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 end end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - f64.load offset=8 - local.set $12 - local.get $0 - local.get $0 - f64.load - f64.store offset=8 - local.get $0 - local.get $12 - f64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) + (func $~lib/util/sort/mergeRuns<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - i32.load offset=12 - local.set $2 + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $2 i32.const 1 - i32.le_s - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.set $3 + i32.sub + local.set $2 + local.get $3 local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - f64.load offset=8 - local.set $4 - local.get $3 - f64.load - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 local.get $1 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s + i32.gt_u + local.set $10 + local.get $10 if - local.get $3 - local.get $5 - f64.store offset=8 - local.get $3 local.get $4 - f64.store + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 end - local.get $0 - return end - local.get $3 - local.set $8 local.get $2 local.set $7 - local.get $1 - local.set $6 - i32.const 0 - drop - 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 + loop $for-loop|1 local.get $7 - local.get $6 - call $~lib/util/sort/weakHeapSort - end - local.get $0 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 - local.set $2 - local.get $1 - i64.reinterpret_f64 - local.set $3 - local.get $2 - local.get $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.set $2 - local.get $3 - local.get $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.set $3 - local.get $2 - local.get $3 - i64.gt_s - local.get $2 - local.get $3 - i64.lt_s - i32.sub - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 99 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - return - end - local.get $0 - local.get $1 - i32.eq + local.get $3 + i32.lt_u + local.set $10 + local.get $10 if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $7 i32.const 1 - return + i32.add + local.set $7 + br $for-loop|1 end end - i32.const 0 - local.set $3 - loop $for-loop|0 + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 + i32.le_u + local.set $10 + local.get $10 if - block $for-continue|0 - i32.const 1 - drop - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.tee $5 - local.get $5 - f64.ne - if (result i32) - local.get $1 - local.get $3 - call $~lib/array/Array#__get - local.tee $5 - local.get $5 - f64.ne - else - i32.const 0 - end - if - br $for-continue|0 - end - local.get $0 - local.get $3 - call $~lib/array/Array#__get - local.get $1 - local.get $3 - call $~lib/array/Array#__get - f64.ne - if - i32.const 0 - return - end - end - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $12 + i32.store offset=4 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 i32.const 1 i32.add - local.set $3 - br $for-loop|0 + local.set $8 + br $for-loop|2 end end - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7828,458 +11489,924 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.sub local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.load offset=8 + local.tee $6 + i32.store offset=4 + local.get $5 local.get $6 i32.const 2 - i32.shl - i32.add + global.set $~argumentsLength + local.get $2 i32.load - local.set $8 + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 local.get $5 - local.get $8 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + local.tee $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $5 + i32.store + local.get $5 + local.get $6 i32.const 2 global.set $~argumentsLength local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - br $while-break|1 - end - br $while-continue|1 + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=8 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $6 + i32.store offset=4 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store offset=4 end end - local.get $0 - local.get $6 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $4 + local.set $7 + i32.const 31 + local.get $7 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $8 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add - local.get $5 + global.get $~lib/util/sort/EMPTY i32.store - local.get $3 + local.get $7 i32.const 1 i32.add - local.set $3 - br $for-loop|0 + local.set $7 + br $for-loop|1 end end - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u + i32.const 0 + local.set $12 + local.get $4 i32.const 2 i32.shl - local.set $3 - local.get $3 call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + local.set $13 + i32.const 0 + local.set $14 + local.get $0 i32.const 0 local.get $3 - call $~lib/memory/memory.fill - local.get $1 + local.get $2 + call $~lib/util/sort/extendRunRight<~lib/array/Array> + local.set $15 + local.get $15 i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s + i32.add + local.set $16 + local.get $16 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $6 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $15 + local.get $0 + local.get $14 + local.get $15 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/array/Array> + end + loop $while-continue|2 + local.get $15 + local.get $3 + i32.lt_s local.set $6 local.get $6 if - local.get $5 + local.get $15 + i32.const 1 + i32.add local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 + local.get $0 + local.get $7 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight<~lib/array/Array> + local.set $5 + local.get $5 + local.get $7 + i32.sub + i32.const 1 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $18 local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl + global.get $~lib/util/sort/MIN_RUN_LENGTH i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 + i32.sub + local.tee $19 + local.get $18 + local.get $19 + i32.lt_s + select + local.set $5 + local.get $0 + local.get $7 + local.get $5 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/array/Array> + end + i32.const 0 + local.get $3 + local.get $14 + local.get $7 + local.get $5 + call $~lib/util/sort/nodePower + local.set $18 + local.get $12 + local.set $19 + loop $for-loop|3 + local.get $19 + local.get $18 + i32.gt_u + local.set $20 + local.get $20 if - local.get $7 + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $21 + local.get $21 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $21 + local.get $11 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $15 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns<~lib/array/Array> + local.get $21 + local.set $14 + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + end + local.get $19 i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 + i32.sub + local.set $19 + br $for-loop|3 end end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 + local.get $10 + local.get $18 i32.const 2 i32.shl i32.add - i32.load - local.set $9 - local.get $0 - local.get $5 + local.get $14 + i32.store + local.get $11 + local.get $18 i32.const 2 i32.shl i32.add - i32.load - local.set $10 - local.get $9 + local.get $15 + i32.store + local.get $7 + local.set $14 + local.get $5 + local.set $15 + local.get $18 + local.set $12 + br $while-continue|2 + end + end + local.get $12 + local.set $6 + loop $for-loop|4 + local.get $6 + i32.const 0 + i32.ne + local.set $19 + local.get $19 + if local.get $10 + local.get $6 i32.const 2 - global.set $~argumentsLength - local.get $2 + i32.shl + i32.add i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + local.set $20 + local.get $20 + global.get $~lib/util/sort/EMPTY + i32.ne if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u + local.get $0 + local.get $20 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.load i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store - local.get $0 - local.get $8 - i32.const 2 - i32.shl i32.add - local.get $10 - i32.store + local.get $3 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns<~lib/array/Array> end - local.get $5 + local.get $6 i32.const 1 i32.sub - local.set $5 - br $for-loop|0 + local.set $6 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array>#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array>#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array>#set:dataStart (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array>#set:byteLength (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array>#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $std/array/Proxy#set:x (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 115 + i32.const 22 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array>#set:length_ end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array>#__uset + ) + (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load local.get $1 + i32.load + i32.sub + ) + (func $~lib/util/sort/insertionSort> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 i32.sub + i32.const 1 + i32.add local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 + loop $for-loop|0 local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 + local.get $6 i32.const 2 i32.shl i32.add i32.load + local.tee $8 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 + local.get $6 i32.const 2 i32.shl i32.add - local.get $10 - i32.store - i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 - i32.const 1 - i32.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load + i32.load offset=4 + local.tee $9 + i32.store offset=4 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 local.get $9 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 - end + local.set $11 end - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 - if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + local.get $6 + i32.const 1 + i32.sub + local.set $12 + block $while-break|1 + loop $while-continue|1 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 if - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $12 i32.const 2 i32.shl i32.add i32.load - i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor + local.tee $8 i32.store + local.get $8 + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $9 + local.get $12 i32.const 2 i32.shl i32.add - local.get $10 - i32.store - local.get $0 - local.get $11 + i32.load + local.tee $8 i32.store + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 end - local.get $9 - i32.const 1 - i32.shr_s - local.set $9 - br $while-continue|4 end end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|2 + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 end end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $12 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $12 - i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/util/sort/mergeRuns> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) - local.get $0 - i32.load offset=12 + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $2 + i32.const 1 + i32.sub local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 local.get $2 i32.const 1 - i32.le_s - if - local.get $0 - return + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end end - local.get $0 - i32.load offset=4 - local.set $3 local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load offset=4 - local.set $4 + local.set $7 + loop $for-loop|1 + local.get $7 local.get $3 - i32.load - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + i32.lt_u + local.set $10 + local.get $10 if - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 end - local.get $0 - return end - local.get $3 - local.set $6 - local.get $2 - local.set $5 local.get $1 - local.set $4 - i32.const 0 - drop - 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 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $12 + i32.store offset=4 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|2 + end end - local.get $0 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8287,674 +12414,465 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.sub local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.load offset=8 + local.tee $6 + i32.store offset=4 + local.get $5 local.get $6 i32.const 2 - i32.shl - i32.add + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + local.tee $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.load - local.set $8 + local.tee $5 + i32.store local.get $5 - local.get $8 + local.get $6 i32.const 2 global.set $~argumentsLength local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - br $while-break|1 - end - br $while-continue|1 + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=8 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $6 + i32.store offset=4 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store offset=4 end end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $3 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.set $3 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + return end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort> + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return end - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 + local.get $4 + local.set $7 i32.const 31 + local.get $7 + i32.clz + i32.sub + i32.const 2 i32.add - i32.const 5 - i32.shr_u + local.set $8 + local.get $8 i32.const 2 i32.shl - local.set $3 - local.get $3 + local.set $9 + local.get $9 call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $8 + i32.lt_u + local.set $5 local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end - end + local.get $10 local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 i32.const 2 i32.shl i32.add - i32.load - local.set $9 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - end - local.get $5 + global.get $~lib/util/sort/EMPTY + i32.store + local.get $7 i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 + i32.add + local.set $7 + br $for-loop|1 end end - local.get $1 + i32.const 0 + local.set $12 + local.get $4 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $13 + i32.const 0 + local.set $14 + local.get $0 + i32.const 0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight> + local.set $15 + local.get $15 i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s + i32.add + local.set $16 + local.get $16 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $6 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $15 + local.get $0 + local.get $14 + local.get $15 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort> + end + loop $while-continue|2 + local.get $15 + local.get $3 + i32.lt_s local.set $6 local.get $6 if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 - i32.const 2 - i32.shl + local.get $15 + i32.const 1 i32.add - i32.load - i32.store + local.set $7 local.get $0 + local.get $7 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight> + local.set $5 local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store + local.get $7 + i32.sub i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 - i32.const 1 - i32.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $18 + local.get $7 + global.get $~lib/util/sort/MIN_RUN_LENGTH i32.add - i32.load - local.get $9 - i32.const 31 - i32.and - i32.shr_u i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 + i32.sub + local.tee $19 + local.get $18 + local.get $19 i32.lt_s - local.set $7 + select + local.set $5 + local.get $0 local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 - end + local.get $5 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort> end - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 + i32.const 0 + local.get $3 + local.get $14 + local.get $7 + local.get $5 + call $~lib/util/sort/nodePower + local.set $18 + local.get $12 + local.set $19 + loop $for-loop|3 + local.get $19 + local.get $18 + i32.gt_u + local.set $20 + local.get $20 if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $9 + local.get $10 + local.get $19 i32.const 2 i32.shl i32.add i32.load - local.set $11 - local.get $10 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + local.set $21 + local.get $21 + global.get $~lib/util/sort/EMPTY + i32.ne if - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u + local.get $0 + local.get $21 + local.get $11 + local.get $19 i32.const 2 i32.shl i32.add i32.load i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $9 + i32.add + local.get $15 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns> + local.get $21 + local.set $14 + local.get $10 + local.get $19 i32.const 2 i32.shl i32.add - local.get $10 - i32.store - local.get $0 - local.get $11 + global.get $~lib/util/sort/EMPTY i32.store end - local.get $9 + local.get $19 i32.const 1 - i32.shr_s - local.set $9 - br $while-continue|4 + i32.sub + local.set $19 + br $for-loop|3 end end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|2 - end - end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $12 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $12 - i32.store - ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 + local.get $10 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $14 i32.store - end - local.get $0 - return - end - local.get $3 - local.set $6 - local.get $2 - local.set $5 - local.get $1 - local.set $4 - i32.const 0 - drop - 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 $0 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $~lib/math/NativeMath.random (result f64) - (local $0 i64) - (local $1 i64) - (local $2 i64) - global.get $~lib/math/random_seeded - i32.eqz - if - call $~lib/builtins/seed - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom + local.get $11 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $7 + local.set $14 + local.get $5 + local.set $15 + local.get $18 + local.set $12 + br $while-continue|2 + end end - global.get $~lib/math/random_state0_64 - local.set $0 - global.get $~lib/math/random_state1_64 - local.set $1 - local.get $1 - global.set $~lib/math/random_state0_64 - local.get $0 - local.get $0 - i64.const 23 - i64.shl - i64.xor - local.set $0 - local.get $0 - local.get $0 - i64.const 17 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - local.get $1 - i64.xor - local.set $0 - local.get $0 - local.get $1 - i64.const 26 - i64.shr_u - i64.xor - local.set $0 - local.get $0 - global.set $~lib/math/random_state1_64 - local.get $1 - i64.const 12 - i64.shr_u - i64.const 4607182418800017408 - i64.or - local.set $2 - local.get $2 - f64.reinterpret_i64 - f64.const 1 - f64.sub - ) - (func $~lib/util/sort/COMPARATOR~anonymous|1 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $std/array/isSorted (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array#get:length - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 + local.get $12 + local.set $6 + loop $for-loop|4 + local.get $6 + i32.const 0 + i32.ne + local.set $19 + local.get $19 if - 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 $10 + local.get $6 i32.const 2 - global.set $~argumentsLength - local.get $1 + i32.shl + i32.add i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s + local.set $20 + local.get $20 + global.get $~lib/util/sort/EMPTY + i32.ne if - i32.const 0 - return + local.get $0 + local.get $20 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns> end - local.get $2 + local.get $6 i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.sub + local.set $6 + br $for-loop|4 end end - i32.const 1 - ) - (func $start:std/array~anonymous|43 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.sub - ) - (func $start:std/array~anonymous|45 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $start:std/array~anonymous|46 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.sub - ) - (func $~lib/array/Array<~lib/array/Array>#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array<~lib/array/Array>#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array<~lib/array/Array>#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array<~lib/array/Array>#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array<~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.get $2 - i32.store - i32.const 1 - drop - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + (func $~lib/array/Array>#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 115 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array<~lib/array/Array>#set:length_ - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/array/Array>#__uset - ) - (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 0 - call $~lib/array/Array#__get - local.get $1 - i32.const 0 - call $~lib/array/Array#__get - i32.sub ) - (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/insertionSort<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -8964,68 +12882,118 @@ i64.const 0 i64.store i32.const 0 - local.set $3 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 if global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 + local.get $6 i32.const 2 i32.shl i32.add i32.load - local.tee $5 + local.tee $8 i32.store - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $9 + i32.store offset=4 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 i32.const 1 i32.sub - local.set $6 + local.set $12 block $while-break|1 loop $while-continue|1 - local.get $6 - i32.const 0 + local.get $12 + local.get $1 i32.ge_s - local.set $7 - local.get $7 + local.set $13 + local.get $13 if global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 + local.get $12 i32.const 2 i32.shl i32.add i32.load local.tee $8 - i32.store offset=4 - local.get $5 + i32.store local.get $8 + local.get $11 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.gt_s if local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add + local.get $12 i32.const 2 i32.shl i32.add local.get $8 - i32.store + i32.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 else br $while-break|1 end @@ -9034,19 +13002,241 @@ end end local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/mergeRuns<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store local.get $6 i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $12 + i32.store offset=4 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 2 + i32.shl i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $8 i32.const 2 i32.shl i32.add - local.get $5 + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select i32.store - local.get $3 + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 i32.const 1 i32.add - local.set $3 - br $for-loop|0 + local.set $8 + br $for-loop|2 end end global.get $~lib/memory/__stack_pointer @@ -9054,98 +13244,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/array/Array>#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array>#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array>#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array>#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array>#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $std/array/Proxy#set:x (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - i32.const 1 - drop - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 115 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array>#set:length_ - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array>#__uset - ) - (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load - local.get $1 - i32.load - i32.sub - ) - (func $~lib/util/sort/insertionSort> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9153,213 +13252,448 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1 + i32.sub local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 i32.lt_s - local.set $4 - local.get $4 - if - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $5 - i32.store - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end global.get $~lib/memory/__stack_pointer local.get $0 + i32.load offset=4 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $6 + i32.store offset=4 + local.get $5 local.get $6 i32.const 2 - i32.shl - i32.add + global.set $~argumentsLength + local.get $2 i32.load - local.tee $8 + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 local.get $5 - local.get $8 + local.get $7 + i32.const 31 + i32.shr_u + select + local.tee $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $5 + i32.store + local.get $5 + local.get $6 i32.const 2 global.set $~argumentsLength local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - br $while-break|1 - end - br $while-continue|1 + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=8 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $6 + i32.store offset=4 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store offset=4 end end - local.get $0 - local.get $6 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/string/String|null> + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $4 + local.set $7 + i32.const 31 + local.get $7 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $8 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add - local.get $5 + global.get $~lib/util/sort/EMPTY i32.store - local.get $3 + local.get $7 i32.const 1 i32.add - local.set $3 - br $for-loop|0 + local.set $7 + br $for-loop|1 end end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/array/Array>#get:length (param $0 i32) (result i32) + i32.const 0 + local.set $12 + local.get $4 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $13 + i32.const 0 + local.set $14 local.get $0 - i32.load offset=12 - ) - (func $~lib/util/sort/insertionSort<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store i32.const 0 - local.set $3 - loop $for-loop|0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight<~lib/string/String|null> + local.set $15 + local.get $15 + i32.const 1 + i32.add + local.set $16 + local.get $16 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if local.get $3 - local.get $1 + local.tee $6 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $7 + local.get $6 + local.get $7 i32.lt_s - local.set $4 - local.get $4 + select + local.set $15 + local.get $0 + local.get $14 + local.get $15 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/string/String|null> + end + loop $while-continue|2 + local.get $15 + local.get $3 + i32.lt_s + local.set $6 + local.get $6 if - global.get $~lib/memory/__stack_pointer + local.get $15 + i32.const 1 + i32.add + local.set $7 local.get $0 + local.get $7 local.get $3 - i32.const 2 - i32.shl + local.get $2 + call $~lib/util/sort/extendRunRight<~lib/string/String|null> + local.set $5 + local.get $5 + local.get $7 + i32.sub + i32.const 1 i32.add - i32.load - local.tee $5 - i32.store + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $18 + local.get $7 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.add + i32.const 1 + i32.sub + local.tee $19 + local.get $18 + local.get $19 + i32.lt_s + select + local.set $5 + local.get $0 + local.get $7 + local.get $5 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/string/String|null> + end + i32.const 0 local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 + local.get $14 + local.get $7 + local.get $5 + call $~lib/util/sort/nodePower + local.set $18 + local.get $12 + local.set $19 + loop $for-loop|3 + local.get $19 + local.get $18 + i32.gt_u + local.set $20 + local.get $20 + if + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $21 + local.get $21 + global.get $~lib/util/sort/EMPTY + i32.ne if - global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 + local.get $21 + local.get $11 + local.get $19 i32.const 2 i32.shl i32.add i32.load - local.tee $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength + i32.const 1 + i32.add + local.get $15 + local.get $13 local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - br $while-break|1 - end - br $while-continue|1 + call $~lib/util/sort/mergeRuns<~lib/string/String|null> + local.get $21 + local.set $14 + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store end + local.get $19 + i32.const 1 + i32.sub + local.set $19 + br $for-loop|3 end end - local.get $0 + local.get $10 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $14 + i32.store + local.get $11 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $7 + local.set $14 + local.get $5 + local.set $15 + local.get $18 + local.set $12 + br $while-continue|2 + end + end + local.get $12 + local.set $6 + loop $for-loop|4 + local.get $6 + i32.const 0 + i32.ne + local.set $19 + local.get $19 + if + local.get $10 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $20 + local.get $20 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $20 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns<~lib/string/String|null> + end local.get $6 i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + i32.sub + local.set $6 + br $for-loop|4 end end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -9581,255 +13915,982 @@ i32.const 0 drop i32.const 0 - drop + drop + i32.const 1 + drop + i32.const 7920 + br $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 + end + local.tee $1 + i32.store + end + local.get $0 + local.get $1 + call $std/array/assertSorted<~lib/string/String|null> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + ) + (func $~lib/array/Array<~lib/string/String>#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/string/String>#set:dataStart (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#set:byteLength (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array<~lib/string/String>#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String#concat + ) + (func $~lib/array/Array<~lib/string/String>#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 115 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array<~lib/string/String>#set:length_ + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/string/String>#__uset + ) + (func $~lib/util/sort/insertionSort<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $9 + i32.store offset=4 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 + i32.const 1 + i32.sub + local.set $12 + block $while-break|1 + loop $while-continue|1 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store + local.get $8 + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/mergeRuns<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $12 + i32.store offset=4 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 i32.const 1 - drop - i32.const 7856 - br $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 + i32.add + local.set $8 + br $for-loop|2 end - local.tee $1 - i32.store end - local.get $0 - local.get $1 - call $std/array/assertSorted<~lib/string/String|null> global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 + (func $~lib/util/sort/SORT<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 - i32.eq + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s if - i32.const 1 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 i32.const 0 - i32.eq - end - if + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $6 + i32.store offset=4 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + local.tee $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $5 + i32.store + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $6 + i32.store offset=4 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store offset=4 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if + local.get $3 i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer return end - local.get $0 - i32.const 0 - local.get $1 + local.get $4 + local.set $7 + i32.const 31 + local.get $7 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 i32.const 0 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - ) - (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - ) - (func $~lib/array/Array<~lib/string/String>#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $8 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $10 + local.get $7 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array<~lib/string/String>#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array<~lib/string/String>#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array<~lib/string/String>#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/string/String#concat - ) - (func $~lib/array/Array<~lib/string/String>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 + local.set $12 + local.get $4 i32.const 2 i32.shl - i32.add - local.get $2 - i32.store - i32.const 1 - drop + call $~lib/rt/tlsf/__alloc + local.set $13 + i32.const 0 + local.set $14 local.get $0 + i32.const 0 + local.get $3 local.get $2 + call $~lib/util/sort/extendRunRight<~lib/string/String> + local.set $15 + local.get $15 i32.const 1 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + i32.add + local.set $16 + local.get $16 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 115 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 + local.get $3 + local.tee $6 + global.get $~lib/util/sort/MIN_RUN_LENGTH i32.const 1 - call $~lib/array/ensureCapacity + i32.sub + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $15 local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $14 + local.get $15 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/string/String> end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__uset - ) - (func $~lib/util/sort/insertionSort<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - i32.const 0 - local.set $3 - loop $for-loop|0 + loop $while-continue|2 + local.get $15 local.get $3 - local.get $1 i32.lt_s - local.set $4 - local.get $4 + local.set $6 + local.get $6 if - global.get $~lib/memory/__stack_pointer + local.get $15 + i32.const 1 + i32.add + local.set $7 local.get $0 + local.get $7 local.get $3 - i32.const 2 - i32.shl + local.get $2 + call $~lib/util/sort/extendRunRight<~lib/string/String> + local.set $5 + local.get $5 + local.get $7 + i32.sub + i32.const 1 i32.add - i32.load - local.tee $5 - i32.store + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $18 + local.get $7 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.add + i32.const 1 + i32.sub + local.tee $19 + local.get $18 + local.get $19 + i32.lt_s + select + local.set $5 + local.get $0 + local.get $7 + local.get $5 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/string/String> + end + i32.const 0 local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 + local.get $14 + local.get $7 + local.get $5 + call $~lib/util/sort/nodePower + local.set $18 + local.get $12 + local.set $19 + loop $for-loop|3 + local.get $19 + local.get $18 + i32.gt_u + local.set $20 + local.get $20 + if + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $21 + local.get $21 + global.get $~lib/util/sort/EMPTY + i32.ne if - global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 + local.get $21 + local.get $11 + local.get $19 i32.const 2 i32.shl i32.add i32.load - local.tee $8 - i32.store offset=4 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength + i32.const 1 + i32.add + local.get $15 + local.get $13 local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - br $while-break|1 - end - br $while-continue|1 + call $~lib/util/sort/mergeRuns<~lib/string/String> + local.get $21 + local.set $14 + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store end + local.get $19 + i32.const 1 + i32.sub + local.set $19 + br $for-loop|3 end end - local.get $0 - local.get $6 - i32.const 1 + local.get $10 + local.get $18 + i32.const 2 + i32.shl i32.add + local.get $14 + i32.store + local.get $11 + local.get $18 i32.const 2 i32.shl i32.add - local.get $5 + local.get $15 i32.store - local.get $3 - i32.const 1 + local.get $7 + local.set $14 + local.get $5 + local.set $15 + local.get $18 + local.set $12 + br $while-continue|2 + end + end + local.get $12 + local.set $6 + loop $for-loop|4 + local.get $6 + i32.const 0 + i32.ne + local.set $19 + local.get $19 + if + local.get $10 + local.get $6 + i32.const 2 + i32.shl i32.add - local.set $3 - br $for-loop|0 + i32.load + local.set $20 + local.get $20 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $20 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns<~lib/string/String> + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 end end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -9939,7 +15000,7 @@ drop i32.const 1 drop - i32.const 7888 + i32.const 7952 br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 end local.tee $1 @@ -10060,14 +15121,14 @@ i32.const 100 i32.rem_u local.set $7 - i32.const 8332 + i32.const 8396 local.get $6 i32.const 2 i32.shl i32.add i64.load32_u local.set $8 - i32.const 8332 + i32.const 8396 local.get $7 i32.const 2 i32.shl @@ -10110,7 +15171,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 8332 + i32.const 8396 local.get $10 i32.const 2 i32.shl @@ -10133,7 +15194,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 8332 + i32.const 8396 local.get $1 i32.const 2 i32.shl @@ -10183,7 +15244,7 @@ i32.const 1 i32.shl i32.add - i32.const 8752 + i32.const 8816 local.get $1 i32.wrap_i64 i32.const 255 @@ -10205,7 +15266,7 @@ i32.and if local.get $0 - i32.const 8752 + i32.const 8816 local.get $1 i32.wrap_i64 i32.const 6 @@ -10328,7 +15389,7 @@ i32.const 1 i32.shl i32.add - i32.const 9808 + i32.const 9872 local.get $1 local.get $6 i64.and @@ -10364,7 +15425,7 @@ i32.const 1 i32.shl i32.add - i32.const 9808 + i32.const 9872 local.get $1 local.get $6 local.get $4 @@ -10825,7 +15886,7 @@ local.set $22 local.get $18 local.set $21 - i32.const 11328 + i32.const 11392 local.get $13 i32.const 2 i32.shl @@ -10966,7 +16027,7 @@ i32.add global.set $~lib/util/number/_K local.get $10 - i32.const 11328 + i32.const 11392 i32.const 0 local.get $13 i32.sub @@ -11547,14 +16608,14 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 10456 + i32.const 10520 local.get $14 i32.const 3 i32.shl i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 11152 + i32.const 11216 local.get $14 i32.const 1 i32.shl @@ -11931,7 +16992,7 @@ return ) (func $std/array/Ref#toString (param $0 i32) (result i32) - i32.const 11568 + i32.const 11632 ) (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -12291,14 +17352,14 @@ i32.const 100 i32.rem_u local.set $11 - i32.const 8332 + i32.const 8396 local.get $10 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 8332 + i32.const 8396 local.get $11 i32.const 2 i32.shl @@ -12320,14 +17381,14 @@ i64.shl i64.or i64.store - i32.const 8332 + i32.const 8396 local.get $8 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 8332 + i32.const 8396 local.get $9 i32.const 2 i32.shl @@ -13737,7 +18798,7 @@ i32.const 0 i32.eqz drop - i32.const 13552 + i32.const 13616 i32.const 80 i32.const 477 i32.const 7 @@ -14484,489 +19545,1031 @@ local.get $2 i32.const 1 i32.add - local.set $2 + local.set $2 + br $for-loop|0 + end + end + i32.const 0 + ) + (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + i32.const 1 + i32.add + local.set $2 + local.get $0 + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const 1 + i32.add + local.get $3 + local.get $2 + i32.const 1 + i32.sub + i32.const 0 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $1 + i32.store8 + i32.const 0 + drop + local.get $0 + local.get $2 + call $~lib/array/Array#set:length_ + local.get $2 + ) + (func $~lib/array/Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + if + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load8_u + local.set $5 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|0 + end + end + end + local.get $0 + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 + if + local.get $0 + local.get $6 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $8 + local.get $0 + local.get $6 + i32.const 0 + i32.shl + i32.add + i32.load8_u offset=1 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 + i32.const 1 + i32.sub + local.set $12 + block $while-break|1 + loop $while-continue|1 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $8 + local.get $8 + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 0 + i32.shl + i32.add + local.get $8 + i32.store8 offset=2 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $12 + i32.const 0 + i32.shl + i32.add + local.get $11 + i32.store8 offset=2 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 0 + i32.shl + i32.add + local.get $8 + i32.store8 offset=1 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 + i32.const 0 + i32.shl + i32.add + local.get $10 + i32.store8 offset=1 + local.get $6 + i32.const 2 + i32.add + local.set $6 br $for-loop|0 end end - i32.const 0 ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.set $2 - local.get $0 + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 i32.const 0 - i32.const 1 - call $~lib/array/ensureCapacity + i32.shl + i32.add + i32.load8_u local.get $0 - i32.load offset=4 - local.set $3 - local.get $3 + local.get $4 i32.const 1 i32.add - local.get $3 - local.get $2 - i32.const 1 - i32.sub + local.tee $4 i32.const 0 i32.shl - call $~lib/memory/memory.copy + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength local.get $3 - local.get $1 - i32.store8 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - drop - local.get $0 - local.get $2 - call $~lib/array/Array#set:length_ - local.get $2 - ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=12 - local.set $1 - local.get $1 + i32.gt_s if - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - i32.shl - i32.add - local.set $3 loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 local.get $4 - if - local.get $2 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.load8_u offset=1 + local.get $0 + local.get $4 + i32.const 0 + i32.shl + i32.add i32.load8_u - local.set $5 - local.get $2 + i32.const 2 + global.set $~argumentsLength local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.get $1 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $7 + local.get $0 + local.get $1 + i32.const 0 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 0 + i32.shl + i32.add i32.load8_u i32.store8 - local.get $3 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 local.get $5 + i32.const 0 + i32.shl + i32.add + local.get $7 i32.store8 - local.get $2 + local.get $5 i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 0 + i32.shl i32.add - local.set $2 + i32.load8_u offset=1 + local.get $0 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 i32.const 1 - i32.sub - local.set $3 - br $while-continue|0 + i32.add + local.set $4 + br $while-continue|2 end end end - local.get $0 + local.get $4 ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 0 - local.set $3 + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 loop $for-loop|0 - local.get $3 + local.get $6 local.get $1 - i32.lt_s - local.set $4 - local.get $4 + i32.gt_u + local.set $10 + local.get $10 if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 0 + i32.shl + i32.add local.get $0 - local.get $3 + local.get $6 + i32.const 1 + i32.sub i32.const 0 i32.shl i32.add i32.load8_u - local.set $5 - local.get $3 + i32.store8 + local.get $6 i32.const 1 i32.sub local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 0 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_u offset=1 + i32.store8 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $11 + local.get $4 + local.get $6 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $12 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 0 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store8 + local.get $0 + local.get $8 + i32.const 0 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store8 + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + i32.load8_u offset=1 + local.set $5 + local.get $0 + i32.load8_u offset=2 + local.set $6 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 local.get $0 + local.get $5 local.get $6 - i32.const 0 - i32.shl - i32.add + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store8 offset=1 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + local.set $6 + local.get $0 i32.load8_u - local.set $8 + local.set $5 local.get $5 - local.get $8 + local.get $6 i32.const 2 global.set $~argumentsLength local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 0 - i32.shl - i32.add - local.get $8 - i32.store8 - else - br $while-break|1 - end - br $while-continue|1 + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store8 + local.get $0 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store8 offset=2 end + local.get $0 + i32.load8_u + local.set $7 + local.get $0 + i32.load8_u offset=1 + local.set $6 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store8 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store8 offset=1 end end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 0 + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + local.get $4 + local.set $7 + i32.const 31 + local.get $7 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $8 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $10 + local.get $7 + i32.const 2 i32.shl i32.add - local.get $5 - i32.store8 - local.get $3 + global.get $~lib/util/sort/EMPTY + i32.store + local.get $7 i32.const 1 i32.add - local.set $3 - br $for-loop|0 + local.set $7 + br $for-loop|1 end end - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 + i32.const 0 + local.set $12 + local.get $4 + i32.const 0 i32.shl - local.set $3 - local.get $3 call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + local.set $13 + i32.const 0 + local.set $14 + local.get $0 i32.const 0 local.get $3 - call $~lib/memory/memory.fill - local.get $1 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $15 + local.get $15 i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s + i32.add + local.set $16 + local.get $16 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $6 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $15 + local.get $0 + local.get $14 + local.get $15 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $15 + local.get $3 + i32.lt_s local.set $6 local.get $6 if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end - end - local.get $7 + local.get $15 i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 0 - i32.shl i32.add - i32.load8_u - local.set $9 + local.set $7 local.get $0 + local.get $7 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $5 local.get $5 - i32.const 0 - i32.shl + local.get $7 + i32.sub + i32.const 1 i32.add - i32.load8_u - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH i32.lt_s if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl + local.get $3 + local.tee $18 + local.get $7 + global.get $~lib/util/sort/MIN_RUN_LENGTH i32.add - i32.load i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store + i32.sub + local.tee $19 + local.get $18 + local.get $19 + i32.lt_s + select + local.set $5 local.get $0 + local.get $7 local.get $5 - i32.const 0 - i32.shl - i32.add - local.get $9 - i32.store8 - local.get $0 - local.get $8 - i32.const 0 - i32.shl - i32.add - local.get $10 - i32.store8 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 - if - local.get $0 - i32.load8_u - local.set $10 - local.get $0 - local.get $0 - local.get $5 i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.store8 - local.get $0 + local.get $3 + local.get $14 + local.get $7 local.get $5 - i32.const 0 - i32.shl - i32.add - local.get $10 - i32.store8 - i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 - i32.const 1 - i32.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 + call $~lib/util/sort/nodePower + local.set $18 + local.get $12 + local.set $19 + loop $for-loop|3 + local.get $19 + local.get $18 + i32.gt_u + local.set $20 + local.get $20 if - local.get $0 - i32.load8_u - local.set $10 - local.get $0 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $11 local.get $10 - local.get $11 + local.get $19 i32.const 2 - global.set $~argumentsLength - local.get $2 + i32.shl + i32.add i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + local.set $21 + local.get $21 + global.get $~lib/util/sort/EMPTY + i32.ne if - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u + local.get $0 + local.get $21 + local.get $11 + local.get $19 i32.const 2 i32.shl i32.add i32.load i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $9 - i32.const 0 - i32.shl i32.add + local.get $15 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $21 + local.set $14 local.get $10 - i32.store8 - local.get $0 - local.get $11 - i32.store8 + local.get $19 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store end - local.get $9 + local.get $19 i32.const 1 - i32.shr_s - local.set $9 - br $while-continue|4 + i32.sub + local.set $19 + br $for-loop|3 end end + local.get $10 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $14 + i32.store + local.get $11 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $7 + local.set $14 local.get $5 + local.set $15 + local.get $18 + local.set $12 + br $while-continue|2 + end + end + local.get $12 + local.set $6 + loop $for-loop|4 + local.get $6 + i32.const 0 + i32.ne + local.set $19 + local.get $19 + if + local.get $10 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $20 + local.get $20 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $20 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 i32.const 1 i32.sub - local.set $5 - br $for-loop|2 + local.set $6 + br $for-loop|4 end end - local.get $4 + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 call $~lib/rt/tlsf/__free - local.get $0 - i32.load8_u offset=1 - local.set $12 - local.get $0 - local.get $0 - i32.load8_u - i32.store8 offset=1 - local.get $0 - local.get $12 - i32.store8 ) (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 i32.load offset=12 local.set $2 @@ -15011,34 +20614,16 @@ return end local.get $3 - local.set $6 local.get $2 - local.set $5 local.get $1 - local.set $4 - i32.const 0 - drop - 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 + call $~lib/util/sort/SORT local.get $0 ) (func $~lib/array/Array#flat (param $0 i32) (result i32) i32.const 0 i32.eqz drop - i32.const 13552 + i32.const 13616 i32.const 80 i32.const 477 i32.const 7 @@ -15422,7 +21007,7 @@ i32.const 0 i32.eqz drop - i32.const 13552 + i32.const 13616 i32.const 80 i32.const 477 i32.const 7 @@ -16062,7 +21647,7 @@ i32.const 32 local.get $0 call $~lib/rt/itcms/__visit - i32.const 13552 + i32.const 13616 local.get $0 call $~lib/rt/itcms/__visit i32.const 1152 @@ -16074,10 +21659,10 @@ i32.const 128 local.get $0 call $~lib/rt/itcms/__visit - i32.const 8752 + i32.const 8816 local.get $0 call $~lib/rt/itcms/__visit - i32.const 9808 + i32.const 9872 local.get $0 call $~lib/rt/itcms/__visit ) @@ -17126,8 +22711,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 30432 - i32.const 30480 + i32.const 30496 + i32.const 30544 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -17190,20 +22775,237 @@ else i32.const 0 end - drop - i32.const 7312 - br $~lib/util/sort/COMPARATOR|inlined.1 + drop + i32.const 7376 + br $~lib/util/sort/COMPARATOR|inlined.1 + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/extendRunRight<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end end - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - call $std/array/assertSorted + local.get $4 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $8 ) (func $std/array/isSorted<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -17372,6 +23174,223 @@ global.set $~lib/memory/__stack_pointer local.get $4 ) + (func $~lib/util/sort/extendRunRight> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) (func $std/array/isSorted> (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -17481,6 +23500,223 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/sort/extendRunRight<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) (func $std/array/isSorted<~lib/string/String|null> (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -17707,7 +23943,7 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 7792 local.tee $1 i32.store i32.const 0 @@ -17821,6 +24057,223 @@ global.set $~lib/memory/__stack_pointer local.get $4 ) + (func $~lib/util/sort/extendRunRight<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) (func $std/array/isSorted<~lib/string/String> (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -17957,7 +24410,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $9 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -17981,7 +24434,7 @@ local.get $4 call $std/array/Ref#toString else - i32.const 7728 + i32.const 7792 end local.set $9 global.get $~lib/memory/__stack_pointer @@ -17992,7 +24445,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 7792 local.tee $5 i32.store offset=4 local.get $2 @@ -18110,7 +24563,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $9 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -18134,7 +24587,7 @@ local.get $4 call $std/array/Ref#toString else - i32.const 7728 + i32.const 7792 end local.set $9 global.get $~lib/memory/__stack_pointer @@ -18145,7 +24598,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 7792 local.tee $5 i32.store offset=4 local.get $2 @@ -18247,7 +24700,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8016 + i32.const 8080 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -18272,7 +24725,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8016 + i32.const 8080 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -18297,7 +24750,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8016 + i32.const 8080 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -18322,7 +24775,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8016 + i32.const 8080 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -18347,7 +24800,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8016 + i32.const 8080 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -18372,7 +24825,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8016 + i32.const 8080 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -18413,7 +24866,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $9 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -18437,7 +24890,7 @@ local.get $4 call $~lib/array/Array#toString else - i32.const 7728 + i32.const 7792 end local.set $9 global.get $~lib/memory/__stack_pointer @@ -18448,7 +24901,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 7792 local.tee $5 i32.store offset=4 local.get $2 @@ -18550,7 +25003,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8016 + i32.const 8080 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -18575,7 +25028,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8016 + i32.const 8080 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -18616,7 +25069,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $9 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -18640,7 +25093,7 @@ local.get $4 call $~lib/array/Array#toString else - i32.const 7728 + i32.const 7792 end local.set $9 global.get $~lib/memory/__stack_pointer @@ -18651,7 +25104,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 7792 local.tee $5 i32.store offset=4 local.get $2 @@ -18753,7 +25206,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8016 + i32.const 8080 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -18778,7 +25231,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8016 + i32.const 8080 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -18819,7 +25272,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $9 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -18843,7 +25296,7 @@ local.get $4 call $~lib/array/Array#toString else - i32.const 7728 + i32.const 7792 end local.set $9 global.get $~lib/memory/__stack_pointer @@ -18854,7 +25307,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 7792 local.tee $5 i32.store offset=4 local.get $2 @@ -18956,7 +25409,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8016 + i32.const 8080 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -18997,7 +25450,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $9 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -19021,7 +25474,7 @@ local.get $4 call $~lib/array/Array<~lib/array/Array>#toString else - i32.const 7728 + i32.const 7792 end local.set $9 global.get $~lib/memory/__stack_pointer @@ -19032,7 +25485,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 7728 + i32.const 7792 local.tee $5 i32.store offset=4 local.get $2 @@ -19134,7 +25587,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8016 + i32.const 8080 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -19166,8 +25619,9 @@ (local $14 i32) (local $15 i32) (local $16 i32) + (local $17 i32) global.get $~lib/memory/__stack_pointer - i32.const 72 + i32.const 76 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -19198,6 +25652,9 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=72 i32.const 0 i32.const 0 i32.eq @@ -19246,11 +25703,11 @@ i32.const 0 i32.const 0 call $std/array/Ref#constructor - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array.isArray i32.eqz i32.eqz @@ -19265,11 +25722,11 @@ i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#constructor - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> i32.eqz i32.eqz @@ -19294,11 +25751,11 @@ unreachable end i32.const 640 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array.isArray<~lib/string/String> i32.eqz i32.eqz @@ -19311,11 +25768,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array.isArray<~lib/array/Array> i32.eqz if @@ -19346,11 +25803,11 @@ i32.const 6 i32.const 704 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19374,11 +25831,11 @@ i32.const 6 i32.const 736 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19402,11 +25859,11 @@ i32.const 6 i32.const 768 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19430,11 +25887,11 @@ i32.const 6 i32.const 800 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19458,11 +25915,11 @@ i32.const 6 i32.const 832 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19494,11 +25951,11 @@ i32.const 7 i32.const 912 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19522,11 +25979,11 @@ i32.const 7 i32.const 960 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19550,11 +26007,11 @@ i32.const 7 i32.const 1008 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19578,11 +26035,11 @@ i32.const 7 i32.const 1056 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19606,11 +26063,11 @@ i32.const 7 i32.const 1104 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19623,11 +26080,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -19641,11 +26098,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -19659,20 +26116,20 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 42 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -19687,11 +26144,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 1 i32.eq @@ -19705,11 +26162,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -19723,11 +26180,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop local.set $2 local.get $2 @@ -19743,11 +26200,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -19761,11 +26218,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -19779,20 +26236,20 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 1 i32.eq @@ -19806,11 +26263,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -19824,11 +26281,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -19843,20 +26300,20 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 44 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -19870,11 +26327,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -19888,11 +26345,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -19907,11 +26364,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -19926,20 +26383,20 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 45 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 3 i32.eq @@ -19953,11 +26410,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -19971,11 +26428,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -19990,11 +26447,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -20009,11 +26466,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -20144,21 +26601,21 @@ i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 local.get $2 call $~lib/array/Array#concat local.tee $0 i32.store offset=16 global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -20172,11 +26629,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 3 i32.eq @@ -20208,19 +26665,19 @@ i32.const 3 i32.const 1248 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#concat drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -20285,21 +26742,21 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 local.get $2 call $~lib/array/Array#concat local.tee $0 i32.store offset=16 global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -20448,11 +26905,11 @@ global.get $~lib/memory/__stack_pointer local.get $1 global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#concat local.tee $0 i32.store offset=16 @@ -20495,21 +26952,21 @@ i32.const 3 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5 i32.const 2 i32.const 3 i32.const 1360 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20534,21 +26991,21 @@ i32.const 3 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5 i32.const 2 i32.const 3 i32.const 1456 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20573,21 +27030,21 @@ i32.const 2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5 i32.const 2 i32.const 3 i32.const 1552 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20612,21 +27069,21 @@ i32.const 2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5 i32.const 2 i32.const 3 i32.const 1648 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20651,21 +27108,21 @@ i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5 i32.const 2 i32.const 3 i32.const 1744 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20690,21 +27147,21 @@ i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5 i32.const 2 i32.const 3 i32.const 1840 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20729,21 +27186,21 @@ i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5 i32.const 2 i32.const 3 i32.const 1936 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20768,21 +27225,21 @@ i32.const -2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5 i32.const 2 i32.const 3 i32.const 2032 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20807,21 +27264,21 @@ i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5 i32.const 2 i32.const 3 i32.const 2128 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20846,21 +27303,21 @@ i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5 i32.const 2 i32.const 3 i32.const 2224 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20885,21 +27342,21 @@ i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5 i32.const 2 i32.const 3 i32.const 2320 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20924,21 +27381,21 @@ i32.const -3 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5 i32.const 2 i32.const 3 i32.const 2416 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20951,20 +27408,20 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 42 call $~lib/array/Array#unshift drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 4 i32.eq @@ -20978,11 +27435,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -20996,11 +27453,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -21015,11 +27472,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -21034,11 +27491,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -21053,11 +27510,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -21072,20 +27529,20 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 41 call $~lib/array/Array#unshift drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 5 i32.eq @@ -21099,11 +27556,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -21117,11 +27574,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#__get i32.const 41 @@ -21136,11 +27593,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 call $~lib/array/Array#__get i32.const 42 @@ -21155,11 +27612,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#__get i32.const 43 @@ -21174,11 +27631,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 3 call $~lib/array/Array#__get i32.const 44 @@ -21193,11 +27650,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 4 call $~lib/array/Array#__get i32.const 45 @@ -21212,11 +27669,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#shift global.set $std/array/i global.get $std/array/i @@ -21232,11 +27689,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 4 i32.eq @@ -21250,11 +27707,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -21268,11 +27725,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -21287,11 +27744,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -21306,11 +27763,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -21325,11 +27782,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -21344,11 +27801,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop global.set $std/array/i global.get $std/array/i @@ -21364,11 +27821,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 3 i32.eq @@ -21382,11 +27839,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -21400,11 +27857,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -21419,11 +27876,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -21438,11 +27895,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -21477,11 +27934,11 @@ i32.const 3 i32.const 2512 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21506,11 +27963,11 @@ i32.const 3 i32.const 2544 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21535,11 +27992,11 @@ i32.const 3 i32.const 2576 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21584,11 +28041,11 @@ i32.const 3 i32.const 2624 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21613,11 +28070,11 @@ i32.const 3 i32.const 2656 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21642,11 +28099,11 @@ i32.const 3 i32.const 2688 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21662,11 +28119,11 @@ i32.const -1 i32.const -3 call $~lib/array/Array#slice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -21683,11 +28140,11 @@ i32.const 10 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#slice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -21701,19 +28158,19 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#reverse drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 3 i32.eq @@ -21727,11 +28184,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -21745,11 +28202,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#__get i32.const 44 @@ -21764,11 +28221,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -21783,11 +28240,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#__get i32.const 42 @@ -21802,29 +28259,29 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 44 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 44 i32.const 0 call $~lib/array/Array#indexOf @@ -21842,11 +28299,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 42 i32.const 0 call $~lib/array/Array#indexOf @@ -21864,11 +28321,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 45 i32.const 0 call $~lib/array/Array#indexOf @@ -21886,11 +28343,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 i32.const 100 call $~lib/array/Array#indexOf @@ -21908,11 +28365,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 i32.const -100 call $~lib/array/Array#indexOf @@ -21930,11 +28387,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 i32.const -2 call $~lib/array/Array#indexOf @@ -21952,11 +28409,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 i32.const -4 call $~lib/array/Array#indexOf @@ -21974,11 +28431,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 i32.const 0 call $~lib/array/Array#indexOf @@ -21996,11 +28453,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 i32.const 1 call $~lib/array/Array#indexOf @@ -22018,11 +28475,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 i32.const 2 call $~lib/array/Array#indexOf @@ -22044,11 +28501,11 @@ i32.const 9 i32.const 2720 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 f32.const nan:0x400000 i32.const 0 call $~lib/array/Array#indexOf @@ -22068,11 +28525,11 @@ i32.const 10 i32.const 2752 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 f64.const nan:0x8000000000000 i32.const 0 call $~lib/array/Array#indexOf @@ -22190,11 +28647,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 44 i32.const 0 call $~lib/array/Array#includes @@ -22212,11 +28669,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 42 i32.const 0 call $~lib/array/Array#includes @@ -22234,11 +28691,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 45 i32.const 0 call $~lib/array/Array#includes @@ -22256,11 +28713,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 i32.const 100 call $~lib/array/Array#includes @@ -22278,11 +28735,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 i32.const -100 call $~lib/array/Array#includes @@ -22300,11 +28757,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 i32.const -2 call $~lib/array/Array#includes @@ -22322,11 +28779,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 i32.const -4 call $~lib/array/Array#includes @@ -22344,11 +28801,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 i32.const 0 call $~lib/array/Array#includes @@ -22366,11 +28823,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 i32.const 1 call $~lib/array/Array#includes @@ -22388,11 +28845,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 43 i32.const 2 call $~lib/array/Array#includes @@ -22414,11 +28871,11 @@ i32.const 9 i32.const 2832 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 f32.const nan:0x400000 i32.const 0 call $~lib/array/Array#includes @@ -22436,11 +28893,11 @@ i32.const 10 i32.const 2864 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 f64.const nan:0x8000000000000 i32.const 0 call $~lib/array/Array#includes @@ -22454,21 +28911,21 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 i32.const 1 call $~lib/array/Array#splice drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 4 i32.eq @@ -22482,11 +28939,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $std/array/internalCapacity i32.const 8 i32.eq @@ -22500,11 +28957,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#__get i32.const 44 @@ -22519,11 +28976,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 call $~lib/array/Array#__get i32.const 42 @@ -22549,21 +29006,21 @@ i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#splice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5 i32.const 2 i32.const 3 i32.const 2944 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22581,11 +29038,11 @@ i32.const 3 i32.const 2992 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22609,21 +29066,21 @@ i32.const 0 i32.const 0 call $~lib/array/Array#splice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 i32.const 2 i32.const 3 i32.const 3072 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22641,11 +29098,11 @@ i32.const 3 i32.const 3104 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22669,21 +29126,21 @@ i32.const 2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#splice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 3 i32.const 2 i32.const 3 i32.const 3200 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22701,11 +29158,11 @@ i32.const 3 i32.const 3232 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22729,21 +29186,21 @@ i32.const 2 i32.const 2 call $~lib/array/Array#splice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 i32.const 2 i32.const 3 i32.const 3312 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22761,11 +29218,11 @@ i32.const 3 i32.const 3344 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22789,21 +29246,21 @@ i32.const 0 i32.const 1 call $~lib/array/Array#splice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 i32.const 2 i32.const 3 i32.const 3424 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22821,11 +29278,11 @@ i32.const 3 i32.const 3456 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22849,21 +29306,21 @@ i32.const -1 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#splice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 i32.const 2 i32.const 3 i32.const 3552 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22881,11 +29338,11 @@ i32.const 3 i32.const 3584 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22909,21 +29366,21 @@ i32.const -2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#splice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 i32.const 2 i32.const 3 i32.const 3680 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22941,11 +29398,11 @@ i32.const 3 i32.const 3712 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22969,21 +29426,21 @@ i32.const -2 i32.const 1 call $~lib/array/Array#splice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 i32.const 2 i32.const 3 i32.const 3792 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23001,11 +29458,11 @@ i32.const 3 i32.const 3824 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23029,21 +29486,21 @@ i32.const -7 i32.const 1 call $~lib/array/Array#splice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 i32.const 2 i32.const 3 i32.const 3920 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23061,11 +29518,11 @@ i32.const 3 i32.const 3952 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23089,21 +29546,21 @@ i32.const -2 i32.const -1 call $~lib/array/Array#splice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 i32.const 2 i32.const 3 i32.const 4048 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23121,11 +29578,11 @@ i32.const 3 i32.const 4080 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23149,21 +29606,21 @@ i32.const 1 i32.const -2 call $~lib/array/Array#splice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 i32.const 2 i32.const 3 i32.const 4176 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23181,11 +29638,11 @@ i32.const 3 i32.const 4208 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23209,21 +29666,21 @@ i32.const 4 i32.const 0 call $~lib/array/Array#splice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 i32.const 2 i32.const 3 i32.const 4304 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23241,11 +29698,11 @@ i32.const 3 i32.const 4336 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23269,21 +29726,21 @@ i32.const 7 i32.const 0 call $~lib/array/Array#splice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 i32.const 2 i32.const 3 i32.const 4432 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23301,11 +29758,11 @@ i32.const 3 i32.const 4464 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23329,21 +29786,21 @@ i32.const 7 i32.const 5 call $~lib/array/Array#splice - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 i32.const 2 i32.const 3 i32.const 4560 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23361,11 +29818,11 @@ i32.const 3 i32.const 4592 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23712,53 +30169,53 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 i32.const 0 call $~lib/array/Array#__set global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 i32.const 1 call $~lib/array/Array#__set global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 i32.const 2 call $~lib/array/Array#__set global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 3 i32.const 3 call $~lib/array/Array#__set global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 4864 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23774,17 +30231,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 4896 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23800,17 +30257,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 4928 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23826,17 +30283,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 4960 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23852,11 +30309,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -23870,17 +30327,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 4992 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23896,49 +30353,49 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5024 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -23954,11 +30411,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -23972,35 +30429,35 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 3 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5056 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#every local.set $4 local.get $4 @@ -24016,17 +30473,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5088 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#every local.set $4 local.get $4 @@ -24042,17 +30499,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5120 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#every local.set $4 local.get $4 @@ -24068,11 +30525,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -24086,17 +30543,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5152 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#every local.set $4 local.get $4 @@ -24112,49 +30569,49 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5184 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#every local.set $4 local.get $4 @@ -24170,11 +30627,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -24188,35 +30645,35 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 3 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5216 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#some local.set $4 local.get $4 @@ -24232,17 +30689,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5248 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#some local.set $4 local.get $4 @@ -24258,17 +30715,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5280 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#some local.set $4 local.get $4 @@ -24284,11 +30741,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -24302,17 +30759,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5312 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#some local.set $4 local.get $4 @@ -24328,49 +30785,49 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5344 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#some local.set $4 local.get $4 @@ -24386,11 +30843,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -24404,37 +30861,37 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 3 call $~lib/array/Array#push drop i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5376 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#forEach global.get $std/array/i i32.const 6 @@ -24451,17 +30908,17 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5408 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#forEach global.get $std/array/i i32.const 6 @@ -24476,11 +30933,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -24496,17 +30953,17 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5440 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#forEach global.get $std/array/i i32.const 406 @@ -24521,51 +30978,51 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5472 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#forEach global.get $std/array/i i32.const 1 @@ -24580,11 +31037,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -24598,42 +31055,42 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 3 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5504 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#forEach global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 100 i32.eq @@ -24656,11 +31113,11 @@ local.get $3 if global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop local.get $4 @@ -24671,54 +31128,54 @@ end end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 3 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5536 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#map local.tee $4 i32.store offset=24 @@ -24739,11 +31196,11 @@ i32.const 0 call $~lib/array/Array#__get global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#__get f32.convert_i32_s @@ -24760,17 +31217,17 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5568 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#map drop global.get $std/array/i @@ -24786,11 +31243,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -24806,17 +31263,17 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5600 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#map drop global.get $std/array/i @@ -24832,51 +31289,51 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5632 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#map drop global.get $std/array/i @@ -24892,11 +31349,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -24910,36 +31367,36 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 3 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5664 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#filter local.tee $4 i32.store offset=24 @@ -24959,17 +31416,17 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5696 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#filter drop global.get $std/array/i @@ -24985,11 +31442,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -25005,17 +31462,17 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5728 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#filter drop global.get $std/array/i @@ -25031,51 +31488,51 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5760 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/array/Array#filter drop global.get $std/array/i @@ -25091,11 +31548,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -25109,35 +31566,35 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 3 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5792 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -25154,17 +31611,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5824 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 4 call $~lib/array/Array#reduce global.set $std/array/i @@ -25181,17 +31638,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5856 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#reduce local.set $4 @@ -25210,17 +31667,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5888 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#reduce local.set $4 @@ -25239,17 +31696,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5920 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -25266,11 +31723,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -25284,17 +31741,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5952 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -25311,49 +31768,49 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 5984 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -25370,11 +31827,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -25388,35 +31845,35 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 3 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 6016 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -25433,17 +31890,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 6048 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 4 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -25460,17 +31917,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 6080 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#reduceRight local.set $4 @@ -25489,17 +31946,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 6112 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#reduceRight local.set $4 @@ -25518,17 +31975,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 6144 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -25545,11 +32002,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -25563,17 +32020,17 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 6176 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -25590,49 +32047,49 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 6208 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -25649,11 +32106,11 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -25667,38 +32124,38 @@ unreachable end global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 0 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 1 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 i32.const 3 call $~lib/array/Array#push drop @@ -25706,7 +32163,7 @@ i64.reinterpret_f64 call $~lib/math/NativeMath.seedRandom global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 3 i32.const 2 i32.const 9 i32.const 6480 @@ -25720,16 +32177,16 @@ call $~lib/array/Array#sort@varargs drop local.get $3 - i32.const 8 + i32.const 3 i32.const 2 i32.const 9 - i32.const 6576 + i32.const 6544 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25743,9 +32200,9 @@ end global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 3 - i32.const 10 - i32.const 6640 + i32.const 2 + i32.const 9 + i32.const 6576 call $~lib/rt/__newArray local.tee $4 i32.store offset=24 @@ -25753,26 +32210,62 @@ i32.const 0 global.set $~argumentsLength i32.const 0 - call $~lib/array/Array#sort@varargs + call $~lib/array/Array#sort@varargs drop local.get $4 i32.const 8 + i32.const 2 + i32.const 9 + i32.const 6640 + call $~lib/rt/__newArray + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=8 + local.get $17 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 957 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.const 3 i32.const 10 - i32.const 6768 + i32.const 6704 call $~lib/rt/__newArray - local.set $16 + local.tee $2 + i32.store offset=12 + local.get $2 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#sort@varargs + drop + local.get $2 + i32.const 8 + i32.const 3 + i32.const 10 + i32.const 6832 + call $~lib/rt/__newArray + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 957 + i32.const 961 i32.const 3 call $~lib/builtins/abort unreachable @@ -25781,34 +32274,34 @@ i32.const 5 i32.const 2 i32.const 3 - i32.const 6864 + i32.const 6928 call $~lib/rt/__newArray - local.tee $2 - i32.store offset=12 - local.get $2 + local.tee $0 + i32.store offset=16 + local.get $0 i32.const 0 global.set $~argumentsLength i32.const 0 call $~lib/array/Array#sort@varargs drop - local.get $2 + local.get $0 i32.const 5 i32.const 2 i32.const 3 - i32.const 6944 + i32.const 7008 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 961 + i32.const 965 i32.const 3 call $~lib/builtins/abort unreachable @@ -25817,34 +32310,34 @@ i32.const 5 i32.const 2 i32.const 7 - i32.const 6992 + i32.const 7056 call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 i32.const 0 global.set $~argumentsLength i32.const 0 call $~lib/array/Array#sort@varargs drop - local.get $0 + local.get $1 i32.const 5 i32.const 2 i32.const 7 - i32.const 7072 + i32.const 7136 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 965 + i32.const 969 i32.const 3 call $~lib/builtins/abort unreachable @@ -25853,292 +32346,292 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 7120 + i32.const 7184 call $~lib/rt/__newArray - local.tee $1 - i32.store offset=4 + local.tee $5 + i32.store offset=28 global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 i32.const 3 - i32.const 7152 + i32.const 7216 call $~lib/rt/__newArray - local.tee $6 + local.tee $7 i32.store offset=32 global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 3 - i32.const 7184 + i32.const 7248 call $~lib/rt/__newArray - local.tee $7 + local.tee $8 i32.store offset=36 global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 2 i32.const 3 - i32.const 7216 + i32.const 7280 call $~lib/rt/__newArray - local.tee $8 + local.tee $9 i32.store offset=40 global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 2 i32.const 3 - i32.const 7264 + i32.const 7328 call $~lib/rt/__newArray - local.tee $9 + local.tee $10 i32.store offset=44 global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createReverseOrderedArray - local.tee $5 - i32.store offset=28 - global.get $~lib/memory/__stack_pointer - i32.const 128 - call $std/array/createReverseOrderedArray - local.tee $10 + local.tee $6 i32.store offset=48 global.get $~lib/memory/__stack_pointer - i32.const 1024 + i32.const 128 call $std/array/createReverseOrderedArray local.tee $11 i32.store offset=52 global.get $~lib/memory/__stack_pointer - i32.const 10000 + i32.const 1024 call $std/array/createReverseOrderedArray local.tee $12 i32.store offset=56 global.get $~lib/memory/__stack_pointer - i32.const 512 - call $std/array/createRandomOrderedArray + i32.const 10000 + call $std/array/createReverseOrderedArray local.tee $13 i32.store offset=60 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 512 + call $std/array/createRandomOrderedArray + local.tee $14 + i32.store offset=64 + local.get $5 call $std/array/assertSortedDefault - local.get $6 + local.get $7 call $std/array/assertSortedDefault - local.get $6 + local.get $7 i32.const 1 i32.const 2 i32.const 3 - i32.const 7344 + i32.const 7408 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 985 + i32.const 989 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 call $std/array/assertSortedDefault - local.get $7 + local.get $8 i32.const 2 i32.const 2 i32.const 3 - i32.const 7376 + i32.const 7440 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 988 + i32.const 992 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 + local.get $9 call $std/array/assertSortedDefault - local.get $8 local.get $9 + local.get $10 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 991 + i32.const 995 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 call $std/array/assertSortedDefault - local.get $5 - local.get $9 + local.get $6 + local.get $10 i32.const 4 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 994 + i32.const 998 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $10 + local.get $11 call $std/array/assertSortedDefault + local.get $11 local.get $10 - local.get $9 i32.const 4 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 997 + i32.const 1001 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $11 + local.get $12 call $std/array/assertSortedDefault - local.get $11 - local.get $9 + local.get $12 + local.get $10 i32.const 4 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 1000 + i32.const 1004 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $12 + local.get $13 call $std/array/assertSortedDefault - local.get $12 - local.get $9 + local.get $13 + local.get $10 i32.const 4 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 1003 + i32.const 1007 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $13 + local.get $14 call $std/array/assertSortedDefault global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createRandomOrderedArray - local.tee $13 - i32.store offset=60 + local.tee $14 + i32.store offset=64 global.get $~lib/memory/__stack_pointer i32.const 257 call $std/array/createRandomOrderedArray - local.tee $12 - i32.store offset=56 - local.get $13 - i32.const 7408 - local.set $16 + local.tee $13 + i32.store offset=60 + local.get $14 + i32.const 7472 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $std/array/assertSorted - local.get $13 - i32.const 7440 - local.set $16 + local.get $14 + i32.const 7504 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $std/array/assertSorted - local.get $12 - i32.const 7472 - local.set $16 + local.get $13 + i32.const 7536 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $std/array/assertSorted - local.get $12 - i32.const 7504 - local.set $16 + local.get $13 + i32.const 7568 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer i32.const 2 call $std/array/createReverseOrderedNestedArray - local.tee $12 - i32.store offset=56 - local.get $12 - i32.const 7536 - local.set $16 + local.tee $13 + i32.store offset=60 + local.get $13 + i32.const 7600 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 512 call $std/array/createReverseOrderedElementsArray - local.tee $12 - i32.store offset=56 - local.get $12 - i32.const 7568 - local.set $16 + local.tee $13 + i32.store offset=60 + local.get $13 + i32.const 7632 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $std/array/assertSorted> global.get $~lib/memory/__stack_pointer i32.const 7 i32.const 2 i32.const 27 - i32.const 7760 + i32.const 7824 call $~lib/rt/__newArray - local.tee $13 - i32.store offset=60 + local.tee $14 + i32.store offset=64 global.get $~lib/memory/__stack_pointer i32.const 7 i32.const 2 i32.const 27 - i32.const 7808 + i32.const 7872 call $~lib/rt/__newArray - local.tee $11 - i32.store offset=52 - local.get $13 + local.tee $12 + i32.store offset=56 + local.get $14 i32.const 1 global.set $~argumentsLength i32.const 0 call $std/array/assertSorted<~lib/string/String|null>@varargs - local.get $13 - local.get $11 + local.get $14 + local.get $12 i32.const 0 call $std/array/isArraysEqual<~lib/string/String|null> i32.eqz if i32.const 0 i32.const 528 - i32.const 1040 + i32.const 1044 i32.const 3 call $~lib/builtins/abort unreachable @@ -26146,9 +32639,9 @@ global.get $~lib/memory/__stack_pointer i32.const 400 call $std/array/createRandomStringArray - local.tee $12 - i32.store offset=56 - local.get $12 + local.tee $13 + i32.store offset=60 + local.get $13 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -26156,37 +32649,37 @@ i32.const 2 i32.const 0 i32.const 31 - i32.const 7920 + i32.const 7984 call $~lib/rt/__newArray - local.set $16 - global.get $~lib/memory/__stack_pointer - local.get $16 - i32.store offset=64 - local.get $16 - i32.const 8016 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=68 - local.get $16 + local.get $17 + i32.const 8080 + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=72 + local.get $17 call $~lib/array/Array#join - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 8048 - local.set $16 + local.get $17 + i32.const 8112 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1049 + i32.const 1053 i32.const 3 call $~lib/builtins/abort unreachable @@ -26194,37 +32687,37 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 8096 + i32.const 8160 call $~lib/rt/__newArray - local.set $16 - global.get $~lib/memory/__stack_pointer - local.get $16 - i32.store offset=64 - local.get $16 - i32.const 7728 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=68 - local.get $16 + local.get $17 + i32.const 7792 + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=72 + local.get $17 call $~lib/array/Array#join - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 9904 - local.set $16 + local.get $17 + i32.const 9968 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1050 + i32.const 1054 i32.const 3 call $~lib/builtins/abort unreachable @@ -26232,37 +32725,37 @@ i32.const 3 i32.const 2 i32.const 7 - i32.const 9936 + i32.const 10000 call $~lib/rt/__newArray - local.set $16 - global.get $~lib/memory/__stack_pointer - local.get $16 - i32.store offset=64 - local.get $16 - i32.const 9968 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=68 - local.get $16 + local.get $17 + i32.const 10032 + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=72 + local.get $17 call $~lib/array/Array#join - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 9904 - local.set $16 + local.get $17 + i32.const 9968 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1051 + i32.const 1055 i32.const 3 call $~lib/builtins/abort unreachable @@ -26270,37 +32763,37 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 10000 + i32.const 10064 call $~lib/rt/__newArray - local.set $16 - global.get $~lib/memory/__stack_pointer - local.get $16 - i32.store offset=64 - local.get $16 - i32.const 10032 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=68 - local.get $16 + local.get $17 + i32.const 10096 + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=72 + local.get $17 call $~lib/array/Array#join - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 10064 - local.set $16 + local.get $17 + i32.const 10128 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1052 + i32.const 1056 i32.const 3 call $~lib/builtins/abort unreachable @@ -26308,37 +32801,37 @@ i32.const 6 i32.const 3 i32.const 10 - i32.const 10144 + i32.const 10208 call $~lib/rt/__newArray - local.set $16 - global.get $~lib/memory/__stack_pointer - local.get $16 - i32.store offset=64 - local.get $16 - i32.const 10224 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=68 - local.get $16 + local.get $17 + i32.const 10288 + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=72 + local.get $17 call $~lib/array/Array#join - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 11392 - local.set $16 + local.get $17 + i32.const 11456 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1053 + i32.const 1057 i32.const 3 call $~lib/builtins/abort unreachable @@ -26346,37 +32839,37 @@ i32.const 3 i32.const 2 i32.const 27 - i32.const 11536 + i32.const 11600 call $~lib/rt/__newArray - local.set $16 - global.get $~lib/memory/__stack_pointer - local.get $16 - i32.store offset=64 - local.get $16 - i32.const 7728 - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=68 - local.get $16 + local.get $17 + i32.const 7792 + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=72 + local.get $17 call $~lib/array/Array<~lib/string/String|null>#join - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 11504 - local.set $16 + local.get $17 + i32.const 11568 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1054 + i32.const 1058 i32.const 3 call $~lib/builtins/abort unreachable @@ -26388,57 +32881,57 @@ i32.const 11 i32.const 0 call $~lib/rt/__newArray - local.tee $12 - i32.store offset=56 + local.tee $13 + i32.store offset=60 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $13 i32.load offset=4 - local.tee $11 - i32.store offset=52 - local.get $12 + local.tee $12 + i32.store offset=56 + local.get $13 i32.const 0 i32.const 0 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $12 + local.get $13 i32.const 1 i32.const 0 call $~lib/array/Array#__uset - local.get $12 + local.get $13 i32.const 2 i32.const 0 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__uset + local.get $13 + local.tee $12 + i32.store offset=56 local.get $12 - local.tee $11 - i32.store offset=52 - local.get $11 - i32.const 8016 - local.set $16 - global.get $~lib/memory/__stack_pointer - local.get $16 - i32.store offset=68 - local.get $16 + i32.const 8080 + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store offset=72 + local.get $17 call $~lib/array/Array#join - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 11632 - local.set $16 + local.get $17 + i32.const 11696 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1056 + i32.const 1060 i32.const 3 call $~lib/builtins/abort unreachable @@ -26450,53 +32943,53 @@ i32.const 8 i32.const 0 call $~lib/rt/__newArray - local.tee $12 - i32.store offset=56 - global.get $~lib/memory/__stack_pointer - local.get $12 - i32.load offset=4 local.tee $13 i32.store offset=60 - local.get $12 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.load offset=4 + local.tee $14 + i32.store offset=64 + local.get $13 i32.const 0 i32.const 0 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $12 + local.get $13 i32.const 1 i32.const 0 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $12 - local.tee $13 - i32.store offset=60 local.get $13 - i32.const 8016 - local.set $16 + local.tee $14 + i32.store offset=64 + local.get $14 + i32.const 8080 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 - i32.store offset=68 - local.get $16 + local.get $17 + i32.store offset=72 + local.get $17 call $~lib/array/Array#join - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 11728 - local.set $16 + local.get $17 + i32.const 11792 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1059 + i32.const 1063 i32.const 3 call $~lib/builtins/abort unreachable @@ -26505,122 +32998,122 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 11824 + i32.const 11888 call $~lib/rt/__newArray - local.tee $11 - i32.store offset=52 + local.tee $12 + i32.store offset=56 global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 i32.const 3 - i32.const 11856 + i32.const 11920 call $~lib/rt/__newArray - local.tee $12 - i32.store offset=56 + local.tee $13 + i32.store offset=60 global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 3 - i32.const 11888 + i32.const 11952 call $~lib/rt/__newArray - local.tee $10 - i32.store offset=48 + local.tee $11 + i32.store offset=52 global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 2 i32.const 3 - i32.const 11920 + i32.const 11984 call $~lib/rt/__newArray - local.tee $5 - i32.store offset=28 - local.get $11 + local.tee $6 + i32.store offset=48 + local.get $12 call $~lib/array/Array#toString - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 7728 - local.set $16 + local.get $17 + i32.const 7792 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1069 + i32.const 1073 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $12 + local.get $13 call $~lib/array/Array#toString - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 11504 - local.set $16 + local.get $17 + i32.const 11568 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1070 + i32.const 1074 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $10 + local.get $11 call $~lib/array/Array#toString - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 11968 - local.set $16 + local.get $17 + i32.const 12032 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1071 + i32.const 1075 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 call $~lib/array/Array#toString - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 12000 - local.set $16 + local.get $17 + i32.const 12064 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1072 + i32.const 1076 i32.const 3 call $~lib/builtins/abort unreachable @@ -26628,31 +33121,31 @@ i32.const 3 i32.const 0 i32.const 32 - i32.const 12048 + i32.const 12112 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 - i32.store offset=64 - local.get $16 + local.get $17 + i32.store offset=68 + local.get $17 call $~lib/array/Array#toString - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 12080 - local.set $16 + local.get $17 + i32.const 12144 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1074 + i32.const 1078 i32.const 3 call $~lib/builtins/abort unreachable @@ -26660,31 +33153,31 @@ i32.const 3 i32.const 1 i32.const 33 - i32.const 12112 + i32.const 12176 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 - i32.store offset=64 - local.get $16 + local.get $17 + i32.store offset=68 + local.get $17 call $~lib/array/Array#toString - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 12144 - local.set $16 + local.get $17 + i32.const 12208 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1075 + i32.const 1079 i32.const 3 call $~lib/builtins/abort unreachable @@ -26692,31 +33185,31 @@ i32.const 3 i32.const 3 i32.const 34 - i32.const 12192 + i32.const 12256 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 - i32.store offset=64 - local.get $16 + local.get $17 + i32.store offset=68 + local.get $17 call $~lib/array/Array#toString - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 12240 - local.set $16 + local.get $17 + i32.const 12304 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1076 + i32.const 1080 i32.const 3 call $~lib/builtins/abort unreachable @@ -26724,31 +33217,31 @@ i32.const 4 i32.const 3 i32.const 35 - i32.const 12320 + i32.const 12384 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 - i32.store offset=64 - local.get $16 + local.get $17 + i32.store offset=68 + local.get $17 call $~lib/array/Array#toString - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 12384 - local.set $16 + local.get $17 + i32.const 12448 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1077 + i32.const 1081 i32.const 3 call $~lib/builtins/abort unreachable @@ -26757,29 +33250,29 @@ i32.const 7 i32.const 2 i32.const 27 - i32.const 12496 + i32.const 12560 call $~lib/rt/__newArray - local.tee $9 + local.tee $10 i32.store offset=44 - local.get $9 + local.get $10 call $~lib/array/Array<~lib/string/String|null>#toString - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 12544 - local.set $16 + local.get $17 + i32.const 12608 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1081 + i32.const 1085 i32.const 3 call $~lib/builtins/abort unreachable @@ -26787,31 +33280,31 @@ i32.const 4 i32.const 2 i32.const 27 - i32.const 12656 + i32.const 12720 call $~lib/rt/__newArray - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 - i32.store offset=64 - local.get $16 + local.get $17 + i32.store offset=68 + local.get $17 call $~lib/array/Array<~lib/string/String|null>#toString - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 12704 - local.set $16 + local.get $17 + i32.const 12768 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1082 + i32.const 1086 i32.const 3 call $~lib/builtins/abort unreachable @@ -26823,51 +33316,51 @@ i32.const 22 i32.const 0 call $~lib/rt/__newArray - local.tee $8 + local.tee $9 i32.store offset=40 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.load offset=4 - local.tee $13 - i32.store offset=60 - local.get $8 + local.tee $14 + i32.store offset=64 + local.get $9 i32.const 0 i32.const 2 i32.const 2 i32.const 3 - i32.const 12736 + i32.const 12800 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $8 + local.get $9 i32.const 1 i32.const 2 i32.const 2 i32.const 3 - i32.const 12768 + i32.const 12832 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $8 - local.tee $13 - i32.store offset=60 - local.get $13 + local.get $9 + local.tee $14 + i32.store offset=64 + local.get $14 call $~lib/array/Array<~lib/array/Array>#toString - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 12800 - local.set $16 + local.get $17 + i32.const 12864 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1085 + i32.const 1089 i32.const 3 call $~lib/builtins/abort unreachable @@ -26879,51 +33372,51 @@ i32.const 36 i32.const 0 call $~lib/rt/__newArray - local.tee $8 + local.tee $9 i32.store offset=40 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.load offset=4 - local.tee $7 + local.tee $8 i32.store offset=36 - local.get $8 + local.get $9 i32.const 0 i32.const 2 i32.const 0 i32.const 6 - i32.const 12848 + i32.const 12912 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $8 + local.get $9 i32.const 1 i32.const 2 i32.const 0 i32.const 6 - i32.const 12880 + i32.const 12944 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $8 - local.tee $7 + local.get $9 + local.tee $8 i32.store offset=36 - local.get $7 + local.get $8 call $~lib/array/Array<~lib/array/Array>#toString - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 12800 - local.set $16 + local.get $17 + i32.const 12864 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1088 + i32.const 1092 i32.const 3 call $~lib/builtins/abort unreachable @@ -26935,14 +33428,14 @@ i32.const 38 i32.const 0 call $~lib/rt/__newArray - local.tee $8 + local.tee $9 i32.store offset=40 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.load offset=4 - local.tee $6 + local.tee $7 i32.store offset=32 - local.get $8 + local.get $9 i32.const 0 global.get $~lib/memory/__stack_pointer i32.const 1 @@ -26950,45 +33443,45 @@ i32.const 37 i32.const 0 call $~lib/rt/__newArray - local.tee $1 - i32.store offset=4 + local.tee $5 + i32.store offset=28 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.load offset=4 - local.tee $0 - i32.store offset=16 - local.get $1 + local.tee $1 + i32.store offset=4 + local.get $5 i32.const 0 i32.const 1 i32.const 2 i32.const 7 - i32.const 12912 + i32.const 12976 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $1 + local.get $5 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__uset - local.get $8 - local.tee $6 + local.get $9 + local.tee $7 i32.store offset=32 - local.get $6 + local.get $7 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - i32.const 11504 - local.set $16 + local.get $17 + i32.const 11568 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1091 + i32.const 1095 i32.const 3 call $~lib/builtins/abort unreachable @@ -27000,54 +33493,54 @@ i32.const 22 i32.const 0 call $~lib/rt/__newArray - local.tee $6 + local.tee $7 i32.store offset=32 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.load offset=4 - local.tee $7 + local.tee $8 i32.store offset=36 - local.get $6 + local.get $7 i32.const 0 i32.const 1 i32.const 2 i32.const 3 - i32.const 12944 + i32.const 13008 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $6 + local.get $7 i32.const 1 i32.const 3 i32.const 2 i32.const 3 - i32.const 12976 + i32.const 13040 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $6 + local.get $7 i32.const 2 i32.const 3 i32.const 2 i32.const 3 - i32.const 13008 + i32.const 13072 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $6 + local.get $7 i32.const 3 i32.const 3 i32.const 2 i32.const 3 - i32.const 13040 + i32.const 13104 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $6 - local.tee $7 + local.get $7 + local.tee $8 i32.store offset=36 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 call $~lib/array/Array<~lib/array/Array>#flat - local.tee $6 + local.tee $7 i32.store offset=32 - local.get $6 + local.get $7 call $~lib/array/Array#get:length i32.const 10 i32.eq @@ -27055,38 +33548,38 @@ if i32.const 0 i32.const 528 - i32.const 1098 + i32.const 1102 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $13 + local.set $14 loop $for-loop|1 - local.get $13 + local.get $14 i32.const 10 i32.lt_s - local.set $9 - local.get $9 + local.set $10 + local.get $10 if - local.get $6 - local.get $13 + local.get $7 + local.get $14 call $~lib/array/Array#__get - local.get $13 + local.get $14 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1100 + i32.const 1104 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $13 + local.get $14 i32.const 1 i32.add - local.set $13 + local.set $14 br $for-loop|1 end end @@ -27097,62 +33590,62 @@ i32.const 39 i32.const 0 call $~lib/rt/__newArray - local.tee $13 - i32.store offset=60 + local.tee $14 + i32.store offset=64 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $14 i32.load offset=4 - local.tee $9 + local.tee $10 i32.store offset=44 - local.get $13 + local.get $14 i32.const 0 i32.const 1 i32.const 2 i32.const 27 - i32.const 13104 + i32.const 13168 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset - local.get $13 + local.get $14 i32.const 1 i32.const 3 i32.const 2 i32.const 27 - i32.const 13200 + i32.const 13264 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset - local.get $13 + local.get $14 i32.const 2 i32.const 3 i32.const 2 i32.const 27 - i32.const 13328 + i32.const 13392 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset - local.get $13 + local.get $14 i32.const 3 i32.const 1 i32.const 2 i32.const 27 - i32.const 13392 + i32.const 13456 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset - local.get $13 - local.tee $9 + local.get $14 + local.tee $10 i32.store offset=44 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat - local.tee $13 - i32.store offset=60 + local.tee $14 + i32.store offset=64 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 2 i32.const 27 - i32.const 13424 + i32.const 13488 call $~lib/rt/__newArray - local.tee $10 - i32.store offset=48 - local.get $13 + local.tee $11 + i32.store offset=52 + local.get $14 call $~lib/array/Array<~lib/string/String|null>#get:length i32.const 8 i32.eq @@ -27160,51 +33653,51 @@ if i32.const 0 i32.const 528 - i32.const 1106 + i32.const 1110 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $5 + local.set $6 loop $for-loop|2 - local.get $5 - local.get $10 + local.get $6 + local.get $11 call $~lib/array/Array<~lib/string/String|null>#get:length i32.lt_s - local.set $12 - local.get $12 + local.set $13 + local.get $13 if - local.get $13 - local.get $5 + local.get $14 + local.get $6 call $~lib/array/Array<~lib/string/String|null>#__get - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 - local.get $10 - local.get $5 + local.get $17 + local.get $11 + local.get $6 call $~lib/array/Array<~lib/string/String|null>#__get - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store offset=8 - local.get $16 + local.get $17 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1108 + i32.const 1112 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 1 i32.add - local.set $5 + local.set $6 br $for-loop|2 end end @@ -27215,39 +33708,39 @@ i32.const 22 i32.const 0 call $~lib/rt/__newArray - local.tee $5 - i32.store offset=28 + local.tee $6 + i32.store offset=48 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.load offset=4 - local.tee $12 - i32.store offset=56 - local.get $5 + local.tee $13 + i32.store offset=60 + local.get $6 i32.const 0 i32.const 0 i32.const 2 i32.const 3 - i32.const 13488 + i32.const 13552 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $5 + local.get $6 i32.const 1 i32.const 0 i32.const 2 i32.const 3 - i32.const 13520 + i32.const 13584 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $5 - local.tee $12 - i32.store offset=56 - local.get $12 + local.get $6 + local.tee $13 + i32.store offset=60 + local.get $13 call $~lib/array/Array<~lib/array/Array>#flat - local.set $16 + local.set $17 global.get $~lib/memory/__stack_pointer - local.get $16 + local.get $17 i32.store - local.get $16 + local.get $17 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -27255,7 +33748,7 @@ if i32.const 0 i32.const 528 - i32.const 1112 + i32.const 1116 i32.const 3 call $~lib/builtins/abort unreachable @@ -27266,7 +33759,7 @@ global.set $~lib/memory/__stack_pointer call $~lib/rt/itcms/__collect global.get $~lib/memory/__stack_pointer - i32.const 72 + i32.const 76 i32.add global.set $~lib/memory/__stack_pointer ) @@ -27778,7 +34271,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8016 + i32.const 8080 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -29052,7 +35545,7 @@ i32.const 4 i32.eq drop - i32.const 6544 + i32.const 6512 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $1 @@ -29096,7 +35589,7 @@ i32.const 4 i32.eq drop - i32.const 6736 + i32.const 6800 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $1 @@ -29143,7 +35636,7 @@ i32.const 0 end drop - i32.const 6912 + i32.const 6976 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $1 @@ -29190,7 +35683,7 @@ i32.const 0 end drop - i32.const 7040 + i32.const 7104 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $1 @@ -29466,7 +35959,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -29483,12 +35975,12 @@ i32.le_s if local.get $0 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return end local.get $0 @@ -29526,172 +36018,18 @@ i32.store end local.get $0 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return end local.get $3 - local.set $6 local.get $2 - local.set $5 - local.get $1 - local.set $4 - i32.const 1 - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/sort/insertionSort<~lib/array/Array> - local.get $0 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - ) - (func $~lib/array/Array<~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 320 - i32.const 80 - i32.const 99 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.store - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 4672 - i32.const 80 - i32.const 103 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/array/Array>#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 25 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - i32.const 0 - call $~lib/array/Array>#set:buffer - local.get $0 - i32.const 0 - call $~lib/array/Array>#set:dataStart - local.get $0 - i32.const 0 - call $~lib/array/Array>#set:byteLength - local.get $0 - i32.const 0 - call $~lib/array/Array>#set:length_ - local.get $1 - i32.const 1073741820 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 64 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.tee $2 - i32.const 8 - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - i32.const 2 - i32.shl - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $5 - i32.store offset=4 - local.get $5 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill - local.get $0 - local.get $5 - call $~lib/array/Array>#set:buffer - local.get $0 - local.get $5 - call $~lib/array/Array>#set:dataStart - local.get $0 - local.get $4 - call $~lib/array/Array>#set:byteLength - local.get $0 - local.get $1 - call $~lib/array/Array>#set:length_ + call $~lib/util/sort/SORT<~lib/array/Array> local.get $0 local.set $6 global.get $~lib/memory/__stack_pointer @@ -29700,132 +36038,7 @@ global.set $~lib/memory/__stack_pointer local.get $6 ) - (func $std/array/Proxy#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.const 24 - call $~lib/rt/itcms/__new - local.tee $0 - i32.store - end - local.get $0 - local.get $1 - call $std/array/Proxy#set:x - local.get $0 - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - ) - (func $~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load offset=4 - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load - local.tee $5 - i32.store offset=4 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store - end - local.get $0 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - return - end - local.get $3 - local.set $6 - local.get $2 - local.set $5 - local.get $1 - local.set $4 - i32.const 1 - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/sort/insertionSort> - local.get $0 - local.set $7 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $7 - ) - (func $~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer @@ -29881,13 +36094,133 @@ global.set $~lib/memory/__stack_pointer local.get $3 ) - (func $~lib/array/Array<~lib/string/String|null>#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 25 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $~lib/array/Array>#set:buffer + local.get $0 + i32.const 0 + call $~lib/array/Array>#set:dataStart + local.get $0 + i32.const 0 + call $~lib/array/Array>#set:byteLength + local.get $0 + i32.const 0 + call $~lib/array/Array>#set:length_ + local.get $1 + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 64 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + local.get $5 + i32.const 0 + local.get $4 + call $~lib/memory/memory.fill + local.get $0 + local.get $5 + call $~lib/array/Array>#set:buffer + local.get $0 + local.get $5 + call $~lib/array/Array>#set:dataStart + local.get $0 + local.get $4 + call $~lib/array/Array>#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array>#set:length_ + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $std/array/Proxy#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + local.get $1 + call $std/array/Proxy#set:x + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -29904,12 +36237,12 @@ i32.le_s if local.get $0 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return end local.get $0 @@ -29947,33 +36280,166 @@ i32.store end local.get $0 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return end local.get $3 - local.set $6 local.get $2 - local.set $5 local.get $1 - local.set $4 + call $~lib/util/sort/SORT> + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 99 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store i32.const 1 drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/sort/insertionSort<~lib/string/String|null> + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 4672 + i32.const 80 + i32.const 103 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/array/Array<~lib/string/String|null>#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - local.set $7 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $5 + i32.store offset=4 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + i32.store offset=4 + local.get $3 + local.get $4 + i32.store + end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT<~lib/string/String|null> + local.get $0 + local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 ) (func $~lib/array/Array<~lib/string/String|null>#__get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -30127,7 +36593,7 @@ call $~lib/string/String#get:length i32.ge_u if - i32.const 7728 + i32.const 7792 local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30190,7 +36656,7 @@ i32.const 0 i32.eq if - i32.const 7728 + i32.const 7792 local.set $6 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30229,7 +36695,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -30246,12 +36711,12 @@ i32.le_s if local.get $0 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return end local.get $0 @@ -30289,33 +36754,25 @@ i32.store end local.get $0 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return end local.get $3 - local.set $6 local.get $2 - local.set $5 local.get $1 - local.set $4 - i32.const 1 - drop - local.get $6 - local.get $5 - local.get $4 - call $~lib/util/sort/insertionSort<~lib/string/String> + call $~lib/util/sort/SORT<~lib/string/String> local.get $0 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 ) (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -30456,7 +36913,7 @@ local.get $10 i32.eqz if - i32.const 7728 + i32.const 7792 local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30534,7 +36991,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30546,8 +37003,8 @@ local.get $3 i32.eqz if - i32.const 7952 - i32.const 7984 + i32.const 8016 + i32.const 8048 local.get $0 i32.load8_u select @@ -30606,8 +37063,8 @@ i32.const 1 i32.shl i32.add - i32.const 7952 - i32.const 7984 + i32.const 8016 + i32.const 8048 local.get $9 select local.get $5 @@ -30657,8 +37114,8 @@ i32.const 1 i32.shl i32.add - i32.const 7952 - i32.const 7984 + i32.const 8016 + i32.const 8048 local.get $9 select local.get $5 @@ -30720,8 +37177,8 @@ i32.gt_s end if - i32.const 8128 - i32.const 8256 + i32.const 8192 + i32.const 8320 i32.const 373 i32.const 5 call $~lib/builtins/abort @@ -30730,7 +37187,7 @@ local.get $0 i32.eqz if - i32.const 8320 + i32.const 8384 local.set $8 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -30886,7 +37343,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31056,8 +37513,8 @@ i32.gt_s end if - i32.const 8128 - i32.const 8256 + i32.const 8192 + i32.const 8320 i32.const 350 i32.const 5 call $~lib/builtins/abort @@ -31066,7 +37523,7 @@ local.get $0 i32.eqz if - i32.const 8320 + i32.const 8384 local.set $7 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31197,7 +37654,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31357,7 +37814,7 @@ f64.const 0 f64.eq if - i32.const 10256 + i32.const 10320 local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31377,7 +37834,7 @@ local.get $0 f64.ne if - i32.const 10288 + i32.const 10352 local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31386,8 +37843,8 @@ local.get $3 return end - i32.const 10320 - i32.const 10368 + i32.const 10384 + i32.const 10432 local.get $0 f64.const 0 f64.lt @@ -31400,7 +37857,7 @@ local.get $3 return end - i32.const 10400 + i32.const 10464 local.get $0 call $~lib/util/number/dtoa_core i32.const 1 @@ -31413,7 +37870,7 @@ local.tee $2 i32.store local.get $2 - i32.const 10400 + i32.const 10464 local.get $1 call $~lib/memory/memory.copy local.get $2 @@ -31450,7 +37907,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31615,7 +38072,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -31636,7 +38093,7 @@ if (result i32) local.get $4 else - i32.const 7728 + i32.const 7792 end local.set $12 global.get $~lib/memory/__stack_pointer @@ -31823,7 +38280,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -31993,7 +38450,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -32165,8 +38622,8 @@ i32.gt_s end if - i32.const 8128 - i32.const 8256 + i32.const 8192 + i32.const 8320 i32.const 401 i32.const 5 call $~lib/builtins/abort @@ -32177,7 +38634,7 @@ i64.ne i32.eqz if - i32.const 8320 + i32.const 8384 local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -32342,7 +38799,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -32515,8 +38972,8 @@ i32.gt_s end if - i32.const 8128 - i32.const 8256 + i32.const 8192 + i32.const 8320 i32.const 431 i32.const 5 call $~lib/builtins/abort @@ -32527,7 +38984,7 @@ i64.ne i32.eqz if - i32.const 8320 + i32.const 8384 local.set $10 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -32718,7 +39175,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -32890,7 +39347,7 @@ i32.const 0 i32.lt_s if - i32.const 7728 + i32.const 7792 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -35232,7 +41689,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8016 + i32.const 8080 local.tee $1 i32.store end @@ -35277,7 +41734,7 @@ i32.const 0 end drop - i32.const 13616 + i32.const 13680 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $1 @@ -35312,7 +41769,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8016 + i32.const 8080 local.tee $1 i32.store end @@ -35352,7 +41809,7 @@ drop i32.const 1 drop - i32.const 13648 + i32.const 13712 br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.1 end local.tee $1 @@ -35387,7 +41844,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8016 + i32.const 8080 local.tee $1 i32.store end diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index ba303662a9..22ff198433 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -3012,9 +3012,8 @@ i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 57590 + i32.extend16_s + i32.const -7946 i32.ne if i32.const 0 @@ -3028,8 +3027,7 @@ i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 22752 i32.ne if @@ -3044,9 +3042,8 @@ i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 40792 + i32.extend16_s + i32.const -24744 i32.ne if i32.const 0 @@ -3060,9 +3057,8 @@ i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 33439 + i32.extend16_s + i32.const -32097 i32.ne if i32.const 0 @@ -3076,8 +3072,7 @@ i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 25986 i32.ne if @@ -3092,8 +3087,7 @@ i32.const 5 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 17253 i32.ne if @@ -3108,8 +3102,7 @@ i32.const 6 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 24387 i32.ne if @@ -3124,9 +3117,8 @@ i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 63200 + i32.extend16_s + i32.const -2336 i32.ne if i32.const 0 @@ -3140,9 +3132,8 @@ i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 57432 + i32.extend16_s + i32.const -8104 i32.ne if i32.const 0 @@ -3156,8 +3147,7 @@ i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 22687 i32.ne if @@ -3172,9 +3162,8 @@ i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 40834 + i32.extend16_s + i32.const -24702 i32.ne if i32.const 0 @@ -3188,9 +3177,8 @@ i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 33381 + i32.extend16_s + i32.const -32155 i32.ne if i32.const 0 @@ -3204,8 +3192,7 @@ i32.const 5 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 25923 i32.ne if @@ -3220,8 +3207,7 @@ i32.const 6 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 17247 i32.ne if @@ -3998,9 +3984,8 @@ i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 52176 + i32.extend16_s + i32.const -13360 i32.ne if i32.const 0 @@ -4018,8 +4003,7 @@ i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 14689 i32.ne if diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index dce4a4e111..87a0ba14a8 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -2014,10 +2014,9 @@ i32.const 0 else local.get $0 - i32.load8_u + i32.load8_s local.get $1 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -3420,10 +3419,9 @@ i32.const 0 else local.get $1 - i32.load8_u + i32.load8_s local.get $2 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -3668,10 +3666,9 @@ i32.const 0 else local.get $3 - i32.load8_u + i32.load8_s local.get $1 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -3753,10 +3750,9 @@ i32.const 0 else local.get $3 - i32.load8_u + i32.load8_s local.get $1 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find1 @@ -3875,10 +3871,9 @@ i32.const 0 else local.get $3 - i32.load8_u + i32.load8_s local.get $1 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find4 @@ -3977,10 +3972,9 @@ i32.const 0 else local.get $3 - i32.load8_u + i32.load8_s local.get $1 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find7 @@ -4333,10 +4327,9 @@ i32.const 0 else local.get $16 - i32.load8_u + i32.load8_s local.get $2 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find11 @@ -4415,10 +4408,9 @@ i32.const 0 else local.get $0 - i32.load8_u + i32.load8_s local.get $4 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find14 @@ -4509,10 +4501,9 @@ i32.const 0 else local.get $0 - i32.load8_u + i32.load8_s local.get $4 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -4853,10 +4844,9 @@ i32.const 0 else local.get $16 - i32.load8_u + i32.load8_s local.get $2 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find20 @@ -4951,10 +4941,9 @@ i32.const 0 else local.get $16 - i32.load8_u + i32.load8_s local.get $2 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find23 @@ -5056,10 +5045,9 @@ i32.const 0 else local.get $16 - i32.load8_u + i32.load8_s local.get $2 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find26 @@ -5141,10 +5129,9 @@ i32.const 0 else local.get $16 - i32.load8_u + i32.load8_s local.get $2 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find29 @@ -5223,10 +5210,9 @@ i32.const 0 else local.get $16 - i32.load8_u + i32.load8_s local.get $2 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find32 @@ -7675,10 +7661,9 @@ i32.const 0 else local.get $0 - i32.load16_u + i32.load16_s local.get $1 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -7800,10 +7785,9 @@ i32.const 0 else local.get $1 - i32.load16_u + i32.load16_s local.get $2 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -8017,10 +8001,9 @@ i32.const 0 else local.get $3 - i32.load16_u + i32.load16_s local.get $1 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -8102,10 +8085,9 @@ i32.const 0 else local.get $3 - i32.load16_u + i32.load16_s local.get $1 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find1 @@ -8224,10 +8206,9 @@ i32.const 0 else local.get $3 - i32.load16_u + i32.load16_s local.get $1 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find4 @@ -8326,10 +8307,9 @@ i32.const 0 else local.get $3 - i32.load16_u + i32.load16_s local.get $1 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find7 @@ -8686,10 +8666,9 @@ i32.const 0 else local.get $16 - i32.load16_u + i32.load16_s local.get $2 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find11 @@ -8768,10 +8747,9 @@ i32.const 0 else local.get $0 - i32.load16_u + i32.load16_s local.get $4 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find14 @@ -8862,10 +8840,9 @@ i32.const 0 else local.get $0 - i32.load16_u + i32.load16_s local.get $4 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -9206,10 +9183,9 @@ i32.const 0 else local.get $16 - i32.load16_u + i32.load16_s local.get $2 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find20 @@ -9304,10 +9280,9 @@ i32.const 0 else local.get $16 - i32.load16_u + i32.load16_s local.get $2 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find23 @@ -9409,10 +9384,9 @@ i32.const 0 else local.get $16 - i32.load16_u + i32.load16_s local.get $2 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find26 @@ -9494,10 +9468,9 @@ i32.const 0 else local.get $16 - i32.load16_u + i32.load16_s local.get $2 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find29 @@ -9576,10 +9549,9 @@ i32.const 0 else local.get $16 - i32.load16_u + i32.load16_s local.get $2 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find32 @@ -22453,10 +22425,9 @@ i32.const 0 else local.get $1 - i32.load8_u + i32.load8_s local.get $3 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -23225,10 +23196,9 @@ i32.const 0 else local.get $1 - i32.load16_u + i32.load16_s local.get $3 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index 2e5c82ed14..911b8938bf 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -56589,8 +56589,7 @@ i32.const 1 i32.const 3 call $~lib/math/ipow32 - i32.const 255 - i32.and + i32.extend8_s i32.const 1 i32.ne if @@ -56604,9 +56603,8 @@ i32.const -2 i32.const 3 call $~lib/math/ipow32 - i32.const 255 - i32.and - i32.const 248 + i32.extend8_s + i32.const -8 i32.ne if i32.const 0 diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index a995ee1b72..2e71a2df2a 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -2006,10 +2006,9 @@ i32.const 0 else local.get $2 - i32.load8_u + i32.load8_s local.get $1 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -3270,10 +3269,9 @@ i32.const 0 else local.get $1 - i32.load8_u + i32.load8_s local.get $2 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -3461,10 +3459,9 @@ i32.const 0 else local.get $1 - i32.load8_u + i32.load8_s local.get $0 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -3542,10 +3539,9 @@ i32.const 0 else local.get $1 - i32.load8_u + i32.load8_s local.get $0 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/set/Set#find1 @@ -3648,10 +3644,9 @@ i32.const 0 else local.get $1 - i32.load8_u + i32.load8_s local.get $0 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/set/Set#find4 @@ -3730,10 +3725,9 @@ i32.const 0 else local.get $1 - i32.load8_u + i32.load8_s local.get $0 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/set/Set#find7 @@ -3993,10 +3987,9 @@ i32.const 0 else local.get $0 - i32.load8_u + i32.load8_s local.get $6 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/set/Set#find11 @@ -4105,10 +4098,9 @@ i32.const 0 else local.get $0 - i32.load8_u + i32.load8_s local.get $3 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/set/Set#find14 @@ -4187,10 +4179,9 @@ i32.const 0 else local.get $0 - i32.load8_u + i32.load8_s local.get $3 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/set/Set#find17 @@ -4292,10 +4283,9 @@ i32.const 0 else local.get $0 - i32.load8_u + i32.load8_s local.get $3 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/set/Set#find20 @@ -4373,10 +4363,9 @@ i32.const 0 else local.get $0 - i32.load8_u + i32.load8_s local.get $3 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/set/Set#find23 @@ -4455,10 +4444,9 @@ i32.const 0 else local.get $0 - i32.load8_u + i32.load8_s local.get $3 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/set/Set#find26 @@ -6358,10 +6346,9 @@ i32.const 0 else local.get $2 - i32.load16_u + i32.load16_s local.get $1 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -6563,10 +6550,9 @@ i32.const 0 else local.get $1 - i32.load16_u + i32.load16_s local.get $2 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -6723,10 +6709,9 @@ i32.const 0 else local.get $1 - i32.load16_u + i32.load16_s local.get $0 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -6804,10 +6789,9 @@ i32.const 0 else local.get $1 - i32.load16_u + i32.load16_s local.get $0 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/set/Set#find1 @@ -6910,10 +6894,9 @@ i32.const 0 else local.get $1 - i32.load16_u + i32.load16_s local.get $0 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/set/Set#find4 @@ -6992,10 +6975,9 @@ i32.const 0 else local.get $1 - i32.load16_u + i32.load16_s local.get $0 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/set/Set#find7 @@ -7257,10 +7239,9 @@ i32.const 0 else local.get $0 - i32.load16_u + i32.load16_s local.get $6 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/set/Set#find11 @@ -7369,10 +7350,9 @@ i32.const 0 else local.get $0 - i32.load16_u + i32.load16_s local.get $3 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/set/Set#find14 @@ -7451,10 +7431,9 @@ i32.const 0 else local.get $0 - i32.load16_u + i32.load16_s local.get $3 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/set/Set#find17 @@ -7556,10 +7535,9 @@ i32.const 0 else local.get $0 - i32.load16_u + i32.load16_s local.get $3 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/set/Set#find20 @@ -7637,10 +7615,9 @@ i32.const 0 else local.get $0 - i32.load16_u + i32.load16_s local.get $3 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/set/Set#find23 @@ -7719,10 +7696,9 @@ i32.const 0 else local.get $0 - i32.load16_u + i32.load16_s local.get $3 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/set/Set#find26 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 2ed4585d84..94957948be 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3,16 +3,18 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i64_i64_=>_i32 (func (param i64 i64) (result i32))) (type $i64_i32_i32_=>_i32 (func (param i64 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $f32_i32_i32_=>_i32 (func (param f32 i32 i32) (result i32))) - (type $f64_i32_i32_=>_i32 (func (param f64 i32 i32) (result i32))) - (type $i64_i64_=>_i32 (func (param i64 i64) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) + (type $f32_i32_i32_=>_i32 (func (param f32 i32 i32) (result i32))) + (type $f64_i32_i32_=>_i32 (func (param f64 i32 i32) (result i32))) + (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) + (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) (type $i64_i64_i32_i32_=>_i64 (func (param i64 i64 i32 i32) (result i64))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $f32_f32_i32_i32_=>_f32 (func (param f32 f32 i32 i32) (result f32))) @@ -626,7 +628,7 @@ (data (i32.const 15420) "B\08\00\00\00\00\00\00\02\t") (data (i32.const 15788) "\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00B\00\00\00\00\00\00\00\82\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02\02") (table $0 144 funcref) - (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0) + (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots @@ -3023,408 +3025,873 @@ local.get $2 f64.store ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 f64) - (local $6 i32) + (local $6 f64) (local $7 f64) (local $8 i32) local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - local.set $4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.get $2 + local.get $1 + i32.sub + i32.const 1 i32.add - local.tee $6 - i32.const 0 + local.tee $8 + i32.const 1 + i32.and local.get $3 - call $~lib/memory/memory.fill - local.get $1 + local.get $8 + local.get $3 + i32.sub i32.const 1 + i32.and i32.sub - local.set $4 + local.get $3 + i32.eqz + select + i32.add + local.set $8 loop $for-loop|0 - local.get $4 - i32.const 0 - i32.gt_s + local.get $2 + local.get $8 + i32.ge_s if + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + local.set $5 + local.get $3 + f64.load offset=8 + local.tee $7 + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 local.get $4 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $7 + local.set $5 + end + local.get $8 + i32.const 1 + i32.sub local.set $3 loop $while-continue|1 + local.get $1 local.get $3 - i32.const 1 - i32.and - local.get $6 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq + i32.le_s if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $7 + f64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end end end local.get $0 local.get $3 - i32.const 1 - i32.shr_s - local.tee $3 i32.const 3 i32.shl i32.add - f64.load - local.set $5 + local.get $5 + f64.store offset=16 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end local.get $0 - local.get $4 + local.get $3 i32.const 3 i32.shl i32.add - f64.load - local.set $7 + local.get $6 + f64.store offset=8 + local.get $8 i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 + i32.add + local.set $8 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f64) + (local $6 f64) + (local $7 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $6 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 + i32.const 3 i32.shl i32.add - local.tee $8 - local.get $8 + local.tee $7 + f64.load offset=8 + local.get $7 + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 i32.load - i32.const 1 + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 i32.shl - i32.xor - i32.store + i32.add + local.tee $3 + f64.load + local.set $5 + local.get $3 local.get $0 - local.get $4 + local.get $2 i32.const 3 i32.shl i32.add + local.tee $3 + f64.load + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 local.get $5 f64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) local.get $0 - local.get $3 + local.get $4 i32.const 3 i32.shl i32.add - local.get $7 - f64.store + local.tee $1 + f64.load offset=8 + local.get $1 + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f64) + (local $10 f64) + (local $11 i32) + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_u + if local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.tee $2 + i32.const 3 + i32.shl + local.tee $8 + i32.add + local.get $0 + local.get $8 + i32.add + f64.load + f64.store br $for-loop|0 end end - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 - i32.const 2 - i32.ge_s + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 3 + i32.shl + i32.add local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + f64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_u + if + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add f64.load - local.set $5 - local.get $0 - local.get $0 + local.set $9 local.get $4 + local.get $2 i32.const 3 i32.shl i32.add - local.tee $1 f64.load - f64.store + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 local.get $5 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + f64.store + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select f64.store + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 + i32.const 0 + i32.ge_s + i32.add + local.set $2 + local.get $1 i32.const 1 + i32.add local.set $1 - loop $while-continue|3 - local.get $4 - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 f64) + (local $11 f64) + (local $12 i32) + (local $13 i32) + (local $14 f64) + (local $15 i32) + (local $16 i64) + local.get $1 + i32.const 1 + i32.sub + local.set $9 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + end local.get $0 - f64.load - local.set $5 + f64.load offset=8 + local.set $14 + local.get $0 + f64.load offset=16 + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $14 + local.get $10 + local.get $14 + local.get $10 + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + f64.store offset=8 local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add f64.load - local.set $7 + local.set $11 i32.const 2 global.set $~argumentsLength - local.get $5 - local.get $7 + local.get $11 + local.get $10 + local.get $14 + local.get $1 + select + local.tee $10 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $11 + local.get $10 + local.get $1 + select + f64.store + local.get $0 + local.get $10 + local.get $11 + local.get $1 + select + f64.store offset=16 + end + local.get $0 + f64.load + local.set $11 + local.get $0 + f64.load offset=8 + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $11 + local.get $10 + local.get $11 + local.get $10 + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + f64.store + local.get $0 + local.get $10 + local.get $11 + local.get $1 + select + f64.store offset=8 + end + return + end + local.get $0 + i32.const 0 + local.get $9 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $6 + i32.const 2 + i32.shl + local.tee $4 + local.set $7 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $6 + i32.lt_u + if + local.get $12 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|1 + end + end + local.get $1 + i32.const 3 + i32.shl + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 + local.get $0 + i32.const 0 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 32 + i32.lt_s + if + local.get $0 + i32.const 0 + local.get $9 + i32.const 31 + local.get $9 + i32.const 31 + i32.lt_s + select + local.tee $1 + local.get $4 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $9 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $7 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 + i32.lt_s + if + local.get $0 + local.get $6 + local.get $9 + local.get $6 + i32.const 31 + i32.add + local.tee $4 + local.get $4 + local.get $9 + i32.gt_s + select + local.tee $7 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $16 + i64.div_u + local.get $6 + local.get $7 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $16 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $4 + loop $for-loop|3 + local.get $4 + local.get $5 + i32.lt_u + if + local.get $12 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.const -1 + i32.ne + if local.get $0 - local.get $1 - i32.const 3 + local.get $8 + local.get $13 + local.get $5 + i32.const 2 i32.shl + local.tee $3 i32.add - local.get $5 - f64.store - local.get $0 - local.get $7 - f64.store + i32.load + i32.const 1 + i32.add + local.get $1 + local.get $15 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $3 + local.get $12 + i32.add + i32.const -1 + i32.store + local.get $8 + local.set $3 end - local.get $1 + local.get $5 i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 + i32.sub + local.set $5 + br $for-loop|3 end end + local.get $12 local.get $4 + i32.const 2 + i32.shl + local.tee $5 + i32.add + local.get $3 + i32.store + local.get $5 + local.get $13 + i32.add + local.get $1 + i32.store + local.get $6 + local.set $3 + local.get $7 + local.set $1 + local.get $4 + local.set $5 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $5 + if + local.get $12 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $13 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $9 + local.get $15 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $5 i32.const 1 i32.sub - local.set $4 - br $for-loop|2 + local.set $5 + br $for-loop|4 end end - local.get $6 + local.get $15 + call $~lib/rt/tlsf/__free + local.get $13 + call $~lib/rt/tlsf/__free + local.get $12 call $~lib/rt/tlsf/__free - local.get $0 - f64.load offset=8 - local.set $5 - local.get $0 - local.get $0 - f64.load - f64.store offset=8 - local.get $0 - local.get $5 - f64.store ) (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 f64) - (local $8 i32) + (local $4 f64) + (local $5 f64) block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $0 - local.tee $3 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $2 + local.tee $3 i32.const 1 i32.le_u br_if $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $3 + local.get $0 i32.load offset=4 - local.set $0 - local.get $2 + local.set $2 + local.get $3 i32.const 2 i32.eq if - local.get $0 + local.get $2 f64.load offset=8 - local.set $6 - local.get $0 + local.set $4 + local.get $2 f64.load - local.set $7 + local.set $5 i32.const 2 global.set $~argumentsLength - local.get $6 - local.get $7 + local.get $4 + local.get $5 local.get $1 i32.load call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if - local.get $0 - local.get $7 + local.get $2 + local.get $5 f64.store offset=8 - local.get $0 - local.get $6 + local.get $2 + local.get $4 f64.store end br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $2 - local.tee $4 - i32.const 256 - i32.lt_s - if - local.get $0 - local.set $2 - local.get $1 - local.set $5 - loop $for-loop|0 - local.get $4 - local.get $8 - i32.gt_s - if - local.get $2 - local.get $8 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - local.get $8 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - local.get $5 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $7 - f64.store - br $while-continue|1 - end - end - end - local.get $2 - local.get $0 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|0 - end - end - else - local.get $0 - local.get $4 - local.get $1 - call $~lib/util/sort/weakHeapSort - end + local.get $3 + local.get $1 + call $~lib/util/sort/SORT end - local.get $3 + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) (local $2 i64) @@ -5613,26 +6080,48 @@ f64.gt ) (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend8_s + i32.const 2 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend8_s + i32.eqz + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.eqz ) (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend16_s + i32.const 2 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend16_s + i32.eqz + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 2 i32.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and @@ -5677,6 +6166,12 @@ f64.eq ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend8_s + i32.const 4 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -5684,6 +6179,12 @@ i32.eq ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend16_s + i32.const 4 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and @@ -5715,8 +6216,7 @@ i32.extend8_s i32.const 2 i32.rem_s - i32.const 255 - i32.and + i32.extend8_s i32.eqz ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -5730,8 +6230,7 @@ i32.extend16_s i32.const 2 i32.rem_s - i32.const 65535 - i32.and + i32.extend16_s i32.eqz ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) @@ -6122,7 +6621,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_u + i32.load8_s i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $0 @@ -6170,7 +6669,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_u + i32.load8_s i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.01 @@ -6221,8 +6720,8 @@ local.tee $0 local.get $3 i32.add - i32.load8_u - i32.const 255 + i32.load8_s + i32.const -1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 local.get $0 @@ -6272,7 +6771,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 @@ -6323,7 +6822,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 @@ -6374,7 +6873,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 @@ -6425,7 +6924,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 @@ -6476,7 +6975,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_u + i32.load8_s i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 @@ -6534,7 +7033,7 @@ local.get $0 local.get $1 i32.add - i32.load8_u + i32.load8_s i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 @@ -6600,7 +7099,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $2 @@ -6662,7 +7161,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 11 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 @@ -6727,8 +7226,8 @@ local.get $1 local.get $2 i32.add - i32.load8_u - i32.const 255 + i32.load8_s + i32.const -1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 local.get $2 @@ -6792,7 +7291,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 @@ -6845,7 +7344,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 @@ -6898,7 +7397,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 @@ -6951,7 +7450,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 @@ -7004,7 +7503,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 @@ -7052,7 +7551,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 @@ -7100,7 +7599,7 @@ local.get $1 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 @@ -7158,7 +7657,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 @@ -7209,7 +7708,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 @@ -7258,7 +7757,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 @@ -7309,7 +7808,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 @@ -7360,7 +7859,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 @@ -7411,7 +7910,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 @@ -7462,7 +7961,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 @@ -7513,7 +8012,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_u + i32.load8_s i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 @@ -10637,7 +11136,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $0 @@ -10688,7 +11187,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 @@ -10742,8 +11241,8 @@ i32.const 1 i32.shl i32.add - i32.load16_u - i32.const 65535 + i32.load16_s + i32.const -1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 local.get $0 @@ -10796,7 +11295,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 @@ -10851,7 +11350,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 @@ -10906,7 +11405,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 @@ -10961,7 +11460,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 @@ -11016,7 +11515,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 @@ -11078,7 +11577,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 @@ -11150,7 +11649,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $2 @@ -11218,7 +11717,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 11 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 @@ -11289,8 +11788,8 @@ i32.const 1 i32.shl i32.add - i32.load16_u - i32.const 65535 + i32.load16_s + i32.const -1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.011 local.get $2 @@ -11360,7 +11859,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 @@ -11417,7 +11916,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 @@ -11474,7 +11973,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 @@ -11531,7 +12030,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 @@ -11588,7 +12087,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 @@ -11640,7 +12139,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 @@ -11692,7 +12191,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 @@ -11752,7 +12251,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 @@ -11806,7 +12305,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 @@ -11858,7 +12357,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 @@ -11912,7 +12411,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 @@ -11966,7 +12465,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 @@ -12020,7 +12519,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 @@ -12075,7 +12574,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 @@ -12130,7 +12629,7 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 @@ -28820,1686 +29319,5797 @@ end end ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - local.set $4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.get $2 + local.get $1 + i32.sub + i32.const 1 i32.add local.tee $5 - i32.const 0 + i32.const 1 + i32.and local.get $3 - call $~lib/memory/memory.fill - local.get $1 + local.get $5 + local.get $3 + i32.sub i32.const 1 + i32.and i32.sub - local.set $4 + local.get $3 + i32.eqz + select + i32.add + local.set $7 loop $for-loop|0 - local.get $4 - i32.const 0 - i32.gt_s + local.get $2 + local.get $7 + i32.ge_s if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $5 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end - end local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $7 + local.get $7 i32.add + local.tee $5 i32.load8_s local.set $3 - local.get $0 - local.get $4 - i32.add - i32.load8_s - local.set $6 + local.get $5 + i32.load8_s offset=1 + local.tee $6 + local.set $5 i32.const 2 global.set $~argumentsLength local.get $3 local.get $6 - local.get $2 + local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.le_s if - local.get $5 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $4 - i32.add local.get $3 - i32.store8 - local.get $0 - local.get $7 - i32.add + local.set $5 local.get $6 - i32.store8 + local.set $3 end - local.get $4 + local.get $7 i32.const 1 i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 - i32.const 2 - i32.ge_s - if - local.get $0 - i32.load8_s - local.set $1 - local.get $0 - local.get $0 - local.get $4 - i32.add - local.tee $3 - i32.load8_s - i32.store8 - local.get $3 - local.get $1 - i32.store8 - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and + local.set $6 + loop $while-continue|1 local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.gt_s + local.get $6 + i32.le_s if - local.get $3 - local.set $1 - br $while-continue|3 + block $while-break|1 + local.get $0 + local.get $6 + i32.add + i32.load8_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $6 + i32.add + local.get $8 + i32.store8 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end end end - loop $while-continue|4 + local.get $0 + local.get $6 + i32.add + local.get $3 + i32.store8 offset=2 + loop $while-continue|2 local.get $1 - i32.const 0 - i32.gt_s + local.get $6 + i32.le_s if - local.get $0 - i32.load8_s - local.set $3 - local.get $0 - local.get $1 - i32.add - i32.load8_s - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl + block $while-break|2 + local.get $0 + local.get $6 i32.add - local.tee $7 - local.get $7 + i32.load8_s + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $4 i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 local.get $0 - local.get $1 + local.get $6 i32.add local.get $3 - i32.store8 - local.get $0 + i32.store8 offset=1 local.get $6 - i32.store8 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 end end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 + local.get $0 + local.get $6 + i32.add + local.get $5 + i32.store8 offset=1 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 end end - local.get $5 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load8_s offset=1 - local.set $1 - local.get $0 - local.get $0 - i32.load8_s - i32.store8 offset=1 - local.get $0 - local.get $1 - i32.store8 ) - (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $0 - local.tee $4 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.le_s - br_if $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $4 - i32.load offset=4 - local.set $0 - local.get $2 - i32.const 2 - i32.eq - if - local.get $0 - i32.load8_s offset=1 - local.set $3 - local.get $0 - i32.load8_s - local.set $2 - i32.const 2 - global.set $~argumentsLength - local.get $3 + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.add + i32.load8_s + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $2 - i32.store8 offset=1 + local.get $4 + i32.gt_s + if (result i32) local.get $0 + local.get $4 + i32.add + local.tee $5 + i32.load8_s offset=1 + local.get $5 + i32.load8_s + i32.const 2 + global.set $~argumentsLength local.get $3 - i32.store8 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 end - br $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 end - local.get $2 - local.tee $3 - i32.const 256 - i32.lt_s - if - local.get $0 - local.set $2 + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.load8_s + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.load8_s + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $1 + i32.load8_s offset=1 + local.get $1 + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $4 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.tee $8 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load8_s + i32.store8 + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.add + local.get $0 + local.get $6 + i32.add + i32.load8_s offset=1 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_u + if + local.get $4 + local.get $6 + i32.add + i32.load8_s + local.set $9 + local.get $2 + local.get $4 + i32.add + i32.load8_s + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.add + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + i32.store8 + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select + i32.store8 + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 + i32.const 0 + i32.ge_s + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $13 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.load8_s offset=1 + local.set $5 + local.get $0 + i32.load8_s offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $3 + local.get $5 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store8 offset=1 + local.get $0 + i32.load8_s + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $5 + local.get $1 + select + local.tee $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $7 + local.get $3 + local.get $1 + select + i32.store8 + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store8 offset=2 + end + local.get $0 + i32.load8_s + local.set $7 + local.get $0 + i32.load8_s offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $7 + local.get $3 + local.get $7 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store8 + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store8 offset=1 + end + return + end + local.get $0 + i32.const 0 + local.get $13 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $7 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $4 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $10 + local.get $0 + i32.const 0 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + local.get $0 + i32.const 0 + local.get $13 + i32.const 31 + local.get $13 + i32.const 31 + i32.lt_s + select + local.tee $1 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $13 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $4 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 + i32.lt_s + if + local.get $0 + local.get $4 + local.get $13 + local.get $4 + i32.const 31 + i32.add + local.tee $7 + local.get $7 + local.get $13 + i32.gt_s + select + local.tee $5 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $4 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $4 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $6 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $0 + local.get $8 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + local.tee $3 + i32.add + i32.load + i32.const 1 + i32.add + local.get $1 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $3 + local.get $12 + i32.add + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|3 + end + end + local.get $12 + local.get $7 + i32.const 2 + i32.shl + local.tee $6 + i32.add + local.get $3 + i32.store + local.get $6 + local.get $11 + i32.add + local.get $1 + i32.store + local.get $4 + local.set $3 + local.get $5 + local.set $1 + local.get $7 + local.set $6 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $6 + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $13 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 + end + end + local.get $10 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $12 + call $~lib/rt/tlsf/__free + ) + (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.le_s + br_if $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + local.get $3 + i32.load8_s offset=1 + local.set $2 + local.get $3 + i32.load8_s + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $4 + i32.store8 offset=1 + local.get $3 + local.get $2 + i32.store8 + end + br $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 + end + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + end + local.get $0 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.extend8_s + local.get $1 + i32.extend8_s + i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.extend8_s + local.tee $1 + local.get $0 + i32.extend8_s + local.tee $0 + i32.gt_s + local.get $0 + local.get $1 + i32.gt_s + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.eqz + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.add + local.tee $5 + i32.load8_u + local.set $3 + local.get $5 + i32.load8_u offset=1 + local.tee $6 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.add + i32.load8_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $6 + i32.add + local.get $8 + i32.store8 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.add + local.get $3 + i32.store8 offset=2 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.add + i32.load8_u + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $6 + i32.add + local.get $3 + i32.store8 offset=1 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.add + local.get $5 + i32.store8 offset=1 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.add + i32.load8_u + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $5 + i32.load8_u offset=1 + local.get $5 + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.load8_u + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $1 + i32.load8_u offset=1 + local.get $1 + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $4 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.tee $8 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load8_u + i32.store8 + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.add + local.get $0 + local.get $6 + i32.add + i32.load8_u offset=1 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_u + if + local.get $4 + local.get $6 + i32.add + i32.load8_u + local.set $9 + local.get $2 + local.get $4 + i32.add + i32.load8_u + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.add + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + i32.store8 + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select + i32.store8 + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 + i32.const 0 + i32.ge_s + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $13 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.load8_u offset=1 + local.set $5 + local.get $0 + i32.load8_u offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $3 + local.get $5 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store8 offset=1 + local.get $0 + i32.load8_u + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $5 + local.get $1 + select + local.tee $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $7 + local.get $3 + local.get $1 + select + i32.store8 + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store8 offset=2 + end + local.get $0 + i32.load8_u + local.set $7 + local.get $0 + i32.load8_u offset=1 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $7 + local.get $3 + local.get $7 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store8 + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store8 offset=1 + end + return + end + local.get $0 + i32.const 0 + local.get $13 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $7 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $4 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $10 + local.get $0 + i32.const 0 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + local.get $0 + i32.const 0 + local.get $13 + i32.const 31 + local.get $13 + i32.const 31 + i32.lt_s + select + local.tee $1 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $13 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $4 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 + i32.lt_s + if + local.get $0 + local.get $4 + local.get $13 + local.get $4 + i32.const 31 + i32.add + local.tee $7 + local.get $7 + local.get $13 + i32.gt_s + select + local.tee $5 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $4 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $4 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $6 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $0 + local.get $8 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + local.tee $3 + i32.add + i32.load + i32.const 1 + i32.add + local.get $1 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $3 + local.get $12 + i32.add + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|3 + end + end + local.get $12 + local.get $7 + i32.const 2 + i32.shl + local.tee $6 + i32.add + local.get $3 + i32.store + local.get $6 + local.get $11 + i32.add + local.get $1 + i32.store + local.get $4 + local.set $3 + local.get $5 + local.set $1 + local.get $7 + local.set $6 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $6 + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $13 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 + end + end + local.get $10 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $12 + call $~lib/rt/tlsf/__free + ) + (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.le_s + br_if $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + local.get $3 + i32.load8_u offset=1 + local.set $2 + local.get $3 + i32.load8_u + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $4 + i32.store8 offset=1 + local.get $3 + local.get $2 + i32.store8 + end + br $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 + end + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + end + local.get $0 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + local.tee $0 + local.get $1 + i32.const 255 + i32.and + local.tee $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u + i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 255 + i32.and + local.tee $1 + local.get $0 + i32.const 255 + i32.and + local.tee $0 + i32.gt_u + local.get $0 + local.get $1 + i32.gt_u + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.eqz + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_s + local.set $3 + local.get $5 + i32.load16_s offset=2 + local.tee $6 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.store16 offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.store16 offset=4 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.store16 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 offset=2 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_s offset=2 + local.get $5 + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_s offset=2 + local.get $1 + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $4 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.tee $8 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load16_s + i32.store16 + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s offset=2 + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_u + if + local.get $4 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $9 + local.get $4 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + i32.store16 + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select + i32.store16 + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 + i32.const 0 + i32.ge_s + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $13 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.load16_s offset=2 + local.set $5 + local.get $0 + i32.load16_s offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $3 + local.get $5 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store16 offset=2 + local.get $0 + i32.load16_s + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $5 + local.get $1 + select + local.tee $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $7 + local.get $3 + local.get $1 + select + i32.store16 + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store16 offset=4 + end + local.get $0 + i32.load16_s + local.set $7 + local.get $0 + i32.load16_s offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $7 + local.get $3 + local.get $7 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store16 + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store16 offset=2 + end + return + end + local.get $0 + i32.const 0 + local.get $13 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $7 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $4 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $10 + local.get $0 + i32.const 0 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + local.get $0 + i32.const 0 + local.get $13 + i32.const 31 + local.get $13 + i32.const 31 + i32.lt_s + select + local.tee $1 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $13 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $4 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 + i32.lt_s + if + local.get $0 + local.get $4 + local.get $13 + local.get $4 + i32.const 31 + i32.add + local.tee $7 + local.get $7 + local.get $13 + i32.gt_s + select + local.tee $5 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $4 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $4 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $6 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $0 + local.get $8 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + local.tee $3 + i32.add + i32.load + i32.const 1 + i32.add + local.get $1 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $3 + local.get $12 + i32.add + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|3 + end + end + local.get $12 + local.get $7 + i32.const 2 + i32.shl + local.tee $6 + i32.add + local.get $3 + i32.store + local.get $6 + local.get $11 + i32.add + local.get $1 + i32.store + local.get $4 + local.set $3 + local.get $5 + local.set $1 + local.get $7 + local.set $6 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $6 + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $13 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 + end + end + local.get $10 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $12 + call $~lib/rt/tlsf/__free + ) + (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + br_if $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + local.get $3 + i32.load16_s offset=2 + local.set $2 + local.get $3 + i32.load16_s + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $4 + i32.store16 offset=2 + local.get $3 + local.get $2 + i32.store16 + end + br $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 + end + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + end + local.get $0 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.extend16_s + local.get $1 + i32.extend16_s + i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.extend16_s + local.tee $1 + local.get $0 + i32.extend16_s + local.tee $0 + i32.gt_s + local.get $0 + local.get $1 + i32.gt_s + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.eqz + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u + local.set $3 + local.get $5 + i32.load16_u offset=2 + local.tee $6 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.store16 offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.store16 offset=4 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.store16 offset=2 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $5 + i32.store16 offset=2 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u offset=2 + local.get $5 + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_u offset=2 + local.get $1 + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $4 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.tee $8 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load16_u + i32.store16 + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_u + if + local.get $4 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $9 + local.get $4 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + i32.store16 + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select + i32.store16 + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 + i32.const 0 + i32.ge_s + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $13 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.load16_u offset=2 + local.set $5 + local.get $0 + i32.load16_u offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $3 + local.get $5 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store16 offset=2 + local.get $0 + i32.load16_u + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $5 + local.get $1 + select + local.tee $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $7 + local.get $3 + local.get $1 + select + i32.store16 + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store16 offset=4 + end + local.get $0 + i32.load16_u + local.set $7 + local.get $0 + i32.load16_u offset=2 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $7 + local.get $3 + local.get $7 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store16 + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store16 offset=2 + end + return + end + local.get $0 + i32.const 0 + local.get $13 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $7 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $4 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $10 + local.get $0 + i32.const 0 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + local.get $0 + i32.const 0 + local.get $13 + i32.const 31 + local.get $13 + i32.const 31 + i32.lt_s + select + local.tee $1 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $13 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $4 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 + i32.lt_s + if + local.get $0 + local.get $4 + local.get $13 + local.get $4 + i32.const 31 + i32.add + local.tee $7 + local.get $7 + local.get $13 + i32.gt_s + select + local.tee $5 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $4 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $4 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $6 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.const -1 + i32.ne + if + local.get $0 + local.get $8 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + local.tee $3 + i32.add + i32.load + i32.const 1 + i32.add + local.get $1 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $3 + local.get $12 + i32.add + i32.const -1 + i32.store + local.get $8 + local.set $3 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|3 + end + end + local.get $12 + local.get $7 + i32.const 2 + i32.shl + local.tee $6 + i32.add + local.get $3 + i32.store + local.get $6 + local.get $11 + i32.add + local.get $1 + i32.store + local.get $4 + local.set $3 + local.get $5 + local.set $1 + local.get $7 + local.set $6 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $6 + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $13 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 + end + end + local.get $10 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $12 + call $~lib/rt/tlsf/__free + ) + (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + br_if $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + local.get $3 + i32.load16_u offset=2 + local.set $2 + local.get $3 + i32.load16_u + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + local.get $4 local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $4 + i32.store16 offset=2 + local.get $3 + local.get $2 + i32.store16 + end + br $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 + end + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + end + local.get $0 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + local.tee $0 + local.get $1 + i32.const 65535 + i32.and + local.tee $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u + i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.const 65535 + i32.and + local.tee $1 + local.get $0 + i32.const 65535 + i32.and + local.tee $0 + i32.gt_u + local.get $0 + local.get $1 + i32.gt_u + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.eqz + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.set $3 + local.get $5 + i32.load offset=4 + local.tee $6 local.set $5 - loop $for-loop|0 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $4 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_u + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $9 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + i32.store + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select + i32.store + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 + i32.const 0 + i32.ge_s + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $13 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $3 + local.get $5 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store offset=4 + local.get $0 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $5 + local.get $1 + select + local.tee $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $7 + local.get $3 + local.get $1 + select + i32.store + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $7 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $7 local.get $3 - local.get $6 + local.get $7 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store offset=4 + end + return + end + local.get $0 + i32.const 0 + local.get $13 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $4 + i32.const 2 + i32.shl + local.tee $7 + local.set $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $4 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + i32.const 2 + i32.shl + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $10 + local.get $0 + i32.const 0 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 + i32.const 1 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + local.get $0 + i32.const 0 + local.get $13 + i32.const 31 + local.get $13 + i32.const 31 + i32.lt_s + select + local.tee $1 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $13 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 + local.get $4 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 + i32.lt_s + if + local.get $0 + local.get $4 + local.get $13 + local.get $4 + i32.const 31 + i32.add + local.tee $7 + local.get $7 + local.get $13 i32.gt_s + select + local.tee $5 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort + end + local.get $3 + local.get $4 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $4 + local.get $5 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $6 + local.get $7 + i32.gt_u if - local.get $2 + local.get $12 local.get $6 + i32.const 2 + i32.shl i32.add - i32.load8_s - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 + i32.load + local.tee $8 + i32.const -1 + i32.ne + if local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $0 - local.get $2 - i32.add - i32.load8_s - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - local.get $1 - i32.const 1 - i32.add - i32.add - local.get $8 - i32.store8 - br $while-continue|1 - end - end + local.get $8 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + local.tee $3 + i32.add + i32.load + i32.const 1 + i32.add + local.get $1 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $3 + local.get $12 + i32.add + i32.const -1 + i32.store + local.get $8 + local.set $3 end - local.get $2 - local.get $0 - i32.const 1 - i32.add - i32.add - local.get $7 - i32.store8 local.get $6 i32.const 1 - i32.add + i32.sub local.set $6 - br $for-loop|0 + br $for-loop|3 end end - else - local.get $0 + local.get $12 + local.get $7 + i32.const 2 + i32.shl + local.tee $6 + i32.add local.get $3 + i32.store + local.get $6 + local.get $11 + i32.add local.get $1 - call $~lib/util/sort/weakHeapSort + i32.store + local.get $4 + local.set $3 + local.get $5 + local.set $1 + local.get $7 + local.set $6 + br $while-continue|2 end end - local.get $4 + loop $for-loop|4 + local.get $6 + if + local.get $12 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $13 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 + end + end + local.get $10 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $12 + call $~lib/rt/tlsf/__free ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + br_if $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + local.get $3 + i32.load offset=4 + local.set $2 + local.get $3 + i32.load + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $4 + i32.store offset=4 + local.get $3 + local.get $2 + i32.store + end + br $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 + end + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + end + local.get $0 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.extend8_s local.get $1 - i32.extend8_s i32.sub ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.extend8_s - local.tee $1 + (func $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.extend8_s - local.tee $0 - i32.gt_s + local.get $1 + i32.lt_s local.get $0 local.get $1 i32.gt_s i32.sub ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) local.get $1 - i32.const 31 + local.get $2 + local.get $1 + i32.sub + i32.const 1 i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - local.set $4 - global.get $~lib/rt/tlsf/ROOT + local.tee $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 i32.eqz + select + i32.add + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $7 + i32.ge_s + if + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.set $3 + local.get $5 + i32.load offset=4 + local.tee $6 + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $3 + local.set $5 + local.get $6 + local.set $3 + end + local.get $7 + i32.const 1 + i32.sub + local.set $6 + loop $while-continue|1 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $6 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.add + local.set $7 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq if - call $~lib/rt/tlsf/initialize + local.get $1 + return end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $5 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 local.get $1 i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $4 - i32.const 0 - i32.gt_s - if + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $5 - local.get $3 - i32.const 6 - i32.shr_u + i32.gt_s + if (result i32) + local.get $0 + local.get $4 i32.const 2 i32.shl i32.add + local.tee $5 + i32.load offset=4 + local.get $5 i32.load + i32.const 2 + global.set $~argumentsLength local.get $3 - i32.const 1 - i32.shr_s + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 i32.shr_u + else + i32.const 0 + end + if + local.get $4 i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end + i32.add + local.set $4 + br $while-continue|0 end - local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $7 - i32.add - i32.load8_u - local.set $3 - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 i32.lt_s if - local.get $5 - local.get $4 - i32.const 5 - i32.shr_u + local.get $0 + local.get $1 i32.const 2 i32.shl i32.add - local.tee $8 - local.get $8 + local.tee $3 i32.load - i32.const 1 - local.get $4 + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 i32.shl - i32.xor + i32.add + local.tee $3 + i32.load i32.store - local.get $0 - local.get $4 + local.get $1 + i32.const 1 i32.add + local.set $1 local.get $3 - i32.store8 - local.get $0 - local.get $7 - i32.add - local.get $6 - i32.store8 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 end - end - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 - i32.const 2 - i32.ge_s - if - local.get $0 - i32.load8_u - local.set $1 - local.get $0 - local.get $0 + else + loop $while-continue|2 + local.get $2 local.get $4 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $3 - local.get $1 - i32.store8 - i32.const 1 - local.set $1 - loop $while-continue|3 + i32.gt_s + if (result i32) + local.get $0 local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u i32.const 2 i32.shl i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and + local.tee $1 + i32.load offset=4 local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 i32.const 1 - i32.shl i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load8_u - local.set $3 - local.get $0 - local.get $1 - i32.add - i32.load8_u - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.add - local.get $3 - i32.store8 - local.get $0 - local.get $6 - i32.store8 - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end + local.set $4 + br $while-continue|2 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 end end - local.get $5 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load8_u offset=1 - local.set $1 - local.get $0 - local.get $0 - i32.load8_u - i32.store8 offset=1 - local.get $0 - local.get $1 - i32.store8 + local.get $4 ) - (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $0 - local.tee $4 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.le_s - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $4 - i32.load offset=4 - local.set $0 + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 local.get $2 - i32.const 2 - i32.eq + i32.lt_u if + local.get $4 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + i32.add local.get $0 - i32.load8_u offset=1 - local.set $3 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add local.get $0 - i32.load8_u - local.set $2 + local.get $6 i32.const 2 - global.set $~argumentsLength - local.get $3 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_u + if + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $9 + local.get $4 local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 + local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + i32.store + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select + i32.store + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 i32.const 0 - i32.lt_s - if - local.get $0 - local.get $2 - i32.store8 offset=1 - local.get $0 - local.get $3 - i32.store8 - end - br $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $2 - local.tee $3 - i32.const 256 - i32.lt_s - if - local.get $0 + i32.ge_s + i32.add local.set $2 local.get $1 - local.set $5 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s - if + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $13 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $5 + local.get $3 + local.get $5 + local.get $3 local.get $2 - local.get $6 - i32.add - i32.load8_u + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store offset=4 + local.get $0 + i32.load local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $0 - local.get $2 - i32.add - i32.load8_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - local.get $1 - i32.const 1 - i32.add - i32.add - local.get $8 - i32.store8 - br $while-continue|1 - end - end - end + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $5 + local.get $1 + select + local.tee $3 local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 local.get $0 - i32.const 1 - i32.add - i32.add local.get $7 - i32.store8 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 + local.get $3 + local.get $1 + select + i32.store + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store offset=8 end + local.get $0 + i32.load + local.set $7 + local.get $0 + i32.load offset=4 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $7 + local.get $3 + local.get $7 + local.get $3 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i32.store + local.get $0 + local.get $3 + local.get $7 + local.get $1 + select + i32.store offset=4 end - else - local.get $0 - local.get $3 - local.get $1 - call $~lib/util/sort/weakHeapSort + return end + local.get $0 + i32.const 0 + local.get $13 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return end - local.get $4 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - local.tee $0 - local.get $1 - i32.const 255 - i32.and - local.tee $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 255 - i32.and - local.tee $1 - local.get $0 - i32.const 255 - i32.and - local.tee $0 - i32.gt_u - local.get $0 + i32.const 33 local.get $1 - i32.gt_u + i32.clz i32.sub - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u + local.tee $4 i32.const 2 i32.shl - local.tee $3 - local.set $4 + local.tee $7 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $5 + local.set $12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $11 i32.const 0 - local.get $3 - call $~lib/memory/memory.fill + local.set $7 + loop $for-loop|1 + local.get $4 + local.get $7 + i32.gt_u + if + local.get $12 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + i32.const 2 + i32.shl + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $10 + local.get $0 + i32.const 0 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $4 + i32.add + local.tee $7 + i32.const 32 + i32.lt_s + if + local.get $0 i32.const 0 - i32.gt_s + local.get $13 + i32.const 31 + local.get $13 + i32.const 31 + i32.lt_s + select + local.tee $1 + local.get $7 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $13 + i32.lt_s if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $5 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end - end local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $7 + local.get $1 i32.const 1 - i32.shl i32.add - i32.load16_s - local.set $3 - local.get $0 + local.tee $4 + local.get $13 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $5 local.get $4 + i32.sub i32.const 1 - i32.shl i32.add - i32.load16_s - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 + local.tee $8 + i32.const 32 i32.lt_s if - local.get $5 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store local.get $0 local.get $4 - i32.const 1 - i32.shl + local.get $13 + local.get $4 + i32.const 31 i32.add - local.get $3 - i32.store16 - local.get $0 + local.tee $7 local.get $7 - i32.const 1 - i32.shl - i32.add - local.get $6 - i32.store16 + local.get $13 + i32.gt_s + select + local.tee $5 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort end + local.get $3 local.get $4 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $13 i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 - i32.const 2 - i32.ge_s - if - local.get $0 - i32.load16_s - local.set $1 - local.get $0 - local.get $0 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u local.get $4 - i32.const 1 - i32.shl + local.get $5 i32.add - local.tee $3 - i32.load16_s - i32.store16 - local.get $3 - local.get $1 - i32.store16 i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $7 + loop $for-loop|3 + local.get $6 + local.get $7 + i32.gt_u if - local.get $0 - i32.load16_s - local.set $3 - local.get $0 - local.get $1 - i32.const 1 + local.get $12 + local.get $6 + i32.const 2 i32.shl i32.add - i32.load16_s - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + local.tee $8 + i32.const -1 + i32.ne if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u + local.get $0 + local.get $8 + local.get $11 + local.get $6 i32.const 2 i32.shl + local.tee $3 i32.add - local.tee $7 - local.get $7 i32.load i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 1 - i32.shl i32.add + local.get $1 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns local.get $3 - i32.store16 - local.get $0 - local.get $6 - i32.store16 + local.get $12 + i32.add + i32.const -1 + i32.store + local.get $8 + local.set $3 end - local.get $1 + local.get $6 i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 + i32.sub + local.set $6 + br $for-loop|3 end end + local.get $12 + local.get $7 + i32.const 2 + i32.shl + local.tee $6 + i32.add + local.get $3 + i32.store + local.get $6 + local.get $11 + i32.add + local.get $1 + i32.store local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 + local.set $3 + local.get $5 + local.set $1 + local.get $7 + local.set $6 + br $while-continue|2 end end - local.get $5 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load16_s offset=2 - local.set $1 - local.get $0 - local.get $0 - i32.load16_s - i32.store16 offset=2 - local.get $0 - local.get $1 - i32.store16 - ) - (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $0 - local.tee $4 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $4 - i32.load offset=4 - local.set $0 - local.get $2 - i32.const 2 - i32.eq + loop $for-loop|4 + local.get $6 if - local.get $0 - i32.load16_s offset=2 - local.set $3 - local.get $0 - i32.load16_s - local.set $2 + local.get $12 + local.get $6 i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $2 - local.get $1 + i32.shl + i32.add i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + local.tee $1 + i32.const -1 + i32.ne if local.get $0 + local.get $1 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $13 + local.get $10 local.get $2 - i32.store16 offset=2 - local.get $0 - local.get $3 - i32.store16 + call $~lib/util/sort/mergeRuns end - br $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 end - local.get $2 - local.tee $3 - i32.const 256 - i32.lt_s - if - local.get $0 - local.set $2 - local.get $1 - local.set $5 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $2 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $2 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - local.get $1 - i32.const 1 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $8 - i32.store16 - br $while-continue|1 - end - end - end - local.get $2 - local.get $0 - i32.const 1 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - else - local.get $0 + end + local.get $10 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $12 + call $~lib/rt/tlsf/__free + ) + (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + br_if $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + local.get $3 + i32.load offset=4 + local.set $2 local.get $3 + i32.load + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + local.get $4 local.get $1 - call $~lib/util/sort/weakHeapSort + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $4 + i32.store offset=4 + local.get $3 + local.get $2 + i32.store + end + br $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 end + local.get $3 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT end - local.get $4 + local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.extend16_s local.get $1 - i32.extend16_s + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u i32.sub ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.extend16_s - local.tee $1 + (func $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.extend16_s - local.tee $0 - i32.gt_s + local.get $1 + i32.lt_u local.get $0 local.get $1 - i32.gt_s + i32.gt_u i32.sub ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i64) (local $8 i32) local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - local.set $4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.get $2 + local.get $1 + i32.sub + i32.const 1 i32.add - local.tee $5 - i32.const 0 + local.tee $8 + i32.const 1 + i32.and local.get $3 - call $~lib/memory/memory.fill - local.get $1 + local.get $8 + local.get $3 + i32.sub i32.const 1 + i32.and i32.sub - local.set $4 + local.get $3 + i32.eqz + select + i32.add + local.set $8 loop $for-loop|0 - local.get $4 - i32.const 0 - i32.gt_s + local.get $2 + local.get $8 + i32.ge_s if + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 + local.get $3 + i64.load offset=8 + local.tee $7 + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 local.get $4 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $7 + local.set $5 + end + local.get $8 + i32.const 1 + i32.sub local.set $3 loop $while-continue|1 + local.get $1 local.get $3 - i32.const 1 - i32.and - local.get $5 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq + i32.le_s if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end end end local.get $0 local.get $3 - i32.const 1 - i32.shr_s - local.tee $7 - i32.const 1 + i32.const 3 i32.shl i32.add - i32.load16_u - local.set $3 + local.get $5 + i64.store offset=16 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end local.get $0 - local.get $4 - i32.const 1 + local.get $3 + i32.const 3 i32.shl i32.add - i32.load16_u - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 local.get $6 + i64.store offset=8 + local.get $8 + i32.const 2 + i32.add + local.set $8 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 + i32.const 3 i32.shl i32.add - local.tee $8 - local.get $8 + local.tee $7 + i64.load offset=8 + local.get $7 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store - local.get $0 + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if local.get $4 i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 i32.shl i32.add + local.tee $3 + i64.load + local.set $5 local.get $3 - i32.store16 local.get $0 - local.get $7 - i32.const 1 + local.get $2 + i32.const 3 i32.shl i32.add - local.get $6 - i32.store16 + local.tee $3 + i64.load + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 end + end + else + loop $while-continue|2 + local.get $2 local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + i64.load offset=8 + local.get $1 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end - local.get $1 + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i64) + (local $11 i32) + local.get $3 + local.get $2 i32.const 1 i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 - i32.const 2 - i32.ge_s + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_u if - local.get $0 - i32.load16_u - local.set $1 - local.get $0 - local.get $0 local.get $4 + local.get $2 i32.const 1 + i32.sub + local.tee $2 + i32.const 3 i32.shl + local.tee $8 i32.add - local.tee $3 - i32.load16_u - i32.store16 - local.get $3 - local.get $1 - i32.store16 - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load16_u - local.set $3 - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.store16 - local.get $0 - local.get $6 - i32.store16 - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end - end + local.get $0 + local.get $8 + i32.add + i64.load + i64.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u + if local.get $4 - i32.const 1 + local.get $7 + local.get $6 i32.sub - local.set $4 - br $for-loop|2 + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + i64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 end end - local.get $5 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load16_u offset=2 - local.set $1 - local.get $0 - local.get $0 - i32.load16_u - i32.store16 offset=2 - local.get $0 - local.get $1 - i32.store16 - ) - (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $0 - local.tee $4 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 + loop $for-loop|2 + local.get $1 + local.get $3 i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $4 - i32.load offset=4 - local.set $0 - local.get $2 - i32.const 2 - i32.eq if - local.get $0 - i32.load16_u offset=2 - local.set $3 - local.get $0 - i32.load16_u - local.set $2 + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $9 + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 i32.const 2 global.set $~argumentsLength - local.get $3 - local.get $2 + local.get $0 local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 + local.get $5 i32.load - call_indirect $0 (type $i32_i32_=>_i32) + call_indirect $0 (type $i64_i64_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + i64.store + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select + i64.store + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 i32.const 0 - i32.lt_s - if - local.get $0 - local.get $2 - i32.store16 offset=2 - local.get $0 - local.get $3 - i32.store16 - end - br $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $2 - local.tee $3 - i32.const 256 - i32.lt_s - if - local.get $0 + i32.ge_s + i32.add local.set $2 local.get $1 - local.set $5 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $2 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $2 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - local.get $1 - i32.const 1 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $8 - i32.store16 - br $while-continue|1 - end - end - end - local.get $2 - local.get $0 - i32.const 1 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - else - local.get $0 - local.get $3 - local.get $1 - call $~lib/util/sort/weakHeapSort + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 end end - local.get $4 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and - local.tee $0 - local.get $1 - i32.const 65535 - i32.and - local.tee $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 65535 - i32.and - local.tee $1 - local.get $0 - i32.const 65535 - i32.and - local.tee $0 - i32.gt_u - local.get $0 - local.get $1 - i32.gt_u - i32.sub ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i64) + (local $10 i32) + (local $11 i64) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i32) local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u + i32.const 1 + i32.sub + local.set $10 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i64.load offset=8 + local.set $14 + local.get $0 + i64.load offset=16 + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $14 + local.get $9 + local.get $14 + local.get $9 + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i64.store offset=8 + local.get $0 + i64.load + local.set $11 + i32.const 2 + global.set $~argumentsLength + local.get $11 + local.get $9 + local.get $14 + local.get $1 + select + local.tee $9 + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $11 + local.get $9 + local.get $1 + select + i64.store + local.get $0 + local.get $9 + local.get $11 + local.get $1 + select + i64.store offset=16 + end + local.get $0 + i64.load + local.set $11 + local.get $0 + i64.load offset=8 + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $11 + local.get $9 + local.get $11 + local.get $9 + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i64.store + local.get $0 + local.get $9 + local.get $11 + local.get $1 + select + i64.store offset=8 + end + return + end + local.get $0 + i32.const 0 + local.get $10 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $6 i32.const 2 i32.shl - local.tee $3 - local.set $4 + local.tee $4 + local.set $7 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -30510,1676 +35120,1767 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $5 + local.set $13 i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub local.set $4 - loop $for-loop|0 + loop $for-loop|1 local.get $4 - i32.const 0 - i32.gt_s + local.get $6 + i32.lt_u if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $5 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $3 - local.get $0 + local.get $12 local.get $4 i32.const 2 i32.shl i32.add - i32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - end + i32.const -1 + i32.store local.get $4 i32.const 1 - i32.sub + i32.add local.set $4 - br $for-loop|0 + br $for-loop|1 end end local.get $1 + i32.const 3 + i32.shl + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 + local.get $0 + i32.const 0 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 + i32.add + local.tee $4 + i32.const 32 + i32.lt_s + if + local.get $0 + i32.const 0 + local.get $10 + i32.const 31 + local.get $10 + i32.const 31 + i32.lt_s + select + local.tee $1 local.get $4 - i32.const 2 - i32.ge_s + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $10 + i32.lt_s if local.get $0 - i32.load - local.set $1 - local.get $0 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $3 local.get $1 - i32.store i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl + i32.add + local.tee $6 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $7 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 + i32.lt_s + if + local.get $0 + local.get $6 + local.get $10 + local.get $6 + i32.const 31 i32.add - local.tee $3 + local.tee $4 + local.get $4 + local.get $10 i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end + select + local.tee $7 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $6 + local.get $7 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $4 + loop $for-loop|3 + local.get $4 + local.get $5 + i32.lt_u if - local.get $0 - i32.load - local.set $3 - local.get $0 - local.get $1 + local.get $12 + local.get $5 i32.const 2 i32.shl i32.add i32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + local.tee $8 + i32.const -1 + i32.ne if + local.get $0 + local.get $8 + local.get $13 local.get $5 - local.get $1 - i32.const 5 - i32.shr_u i32.const 2 i32.shl + local.tee $3 i32.add - local.tee $7 - local.get $7 i32.load i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 2 - i32.shl i32.add + local.get $1 + local.get $15 + local.get $2 + call $~lib/util/sort/mergeRuns local.get $3 + local.get $12 + i32.add + i32.const -1 i32.store - local.get $0 - local.get $6 - i32.store + local.get $8 + local.set $3 end - local.get $1 + local.get $5 i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 + i32.sub + local.set $5 + br $for-loop|3 end end + local.get $12 + local.get $4 + i32.const 2 + i32.shl + local.tee $5 + i32.add + local.get $3 + i32.store + local.get $5 + local.get $13 + i32.add + local.get $1 + i32.store + local.get $6 + local.set $3 + local.get $7 + local.set $1 local.get $4 + local.set $5 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $5 + if + local.get $12 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $13 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $10 + local.get $15 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $5 i32.const 1 i32.sub - local.set $4 - br $for-loop|2 + local.set $5 + br $for-loop|4 end end - local.get $5 + local.get $15 + call $~lib/rt/tlsf/__free + local.get $13 + call $~lib/rt/tlsf/__free + local.get $12 call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $1 - i32.store ) - (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 + (local $4 i64) + (local $5 i64) + block $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 local.get $0 - local.tee $4 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.tee $2 + local.tee $3 i32.const 1 i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $4 + br_if $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $0 i32.load offset=4 - local.set $0 - local.get $2 + local.set $2 + local.get $3 i32.const 2 i32.eq if - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load - local.set $2 + local.get $2 + i64.load offset=8 + local.set $4 + local.get $2 + i64.load + local.set $5 i32.const 2 global.set $~argumentsLength - local.get $3 - local.get $2 + local.get $4 + local.get $5 local.get $1 i32.load - call_indirect $0 (type $i32_i32_=>_i32) + call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 i32.lt_s if - local.get $0 local.get $2 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store + local.get $5 + i64.store offset=8 + local.get $2 + local.get $4 + i64.store end - br $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 + br $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 end local.get $2 - local.tee $3 - i32.const 256 - i32.lt_s - if - local.get $0 - local.set $2 - local.get $1 - local.set $5 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $2 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - br $while-continue|1 - end - end - end - local.get $2 - local.get $0 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - else - local.get $0 - local.get $3 - local.get $1 - call $~lib/util/sort/weakHeapSort - end + local.get $3 + local.get $1 + call $~lib/util/sort/SORT end - local.get $4 + local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + local.get $0 + local.get $1 + i64.gt_s local.get $0 local.get $1 + i64.lt_s i32.sub ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 local.get $1 - i32.lt_s + i64.lt_s local.get $0 local.get $1 - i32.gt_s + i64.gt_s i32.sub ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i64) (local $8 i32) local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $3 - local.set $4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.get $2 + local.get $1 + i32.sub + i32.const 1 i32.add - local.tee $5 - i32.const 0 + local.tee $8 + i32.const 1 + i32.and local.get $3 - call $~lib/memory/memory.fill - local.get $1 + local.get $8 + local.get $3 + i32.sub i32.const 1 + i32.and i32.sub - local.set $4 + local.get $3 + i32.eqz + select + i32.add + local.set $8 loop $for-loop|0 - local.get $4 - i32.const 0 - i32.gt_s + local.get $2 + local.get $8 + i32.ge_s if + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 + local.get $3 + i64.load offset=8 + local.tee $7 + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 local.get $4 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $7 + local.set $5 + end + local.get $8 + i32.const 1 + i32.sub local.set $3 loop $while-continue|1 + local.get $1 local.get $3 - i32.const 1 - i32.and - local.get $5 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq + i32.le_s if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store offset=16 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end end end local.get $0 local.get $3 - i32.const 1 - i32.shr_s - local.tee $7 - i32.const 2 + i32.const 3 i32.shl i32.add - i32.load - local.set $3 + local.get $5 + i64.store offset=16 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $5 + i64.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + end local.get $0 - local.get $4 - i32.const 2 + local.get $3 + i32.const 3 i32.shl i32.add - i32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 local.get $6 + i64.store offset=8 + local.get $8 + i32.const 2 + i32.add + local.set $8 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 local.get $4 - i32.const 5 - i32.shr_u + i32.const 3 + i32.shl + i32.add + local.tee $7 + i64.load offset=8 + local.get $7 + i64.load i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 i32.shl i32.add - local.tee $8 - local.get $8 - i32.load + local.tee $3 + i64.load + i64.store + local.get $1 i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store + i32.add + local.set $1 + local.get $3 + local.get $5 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) local.get $0 local.get $4 - i32.const 2 + i32.const 3 i32.shl i32.add - local.get $3 - i32.store - local.get $0 - local.get $7 + local.tee $1 + i64.load offset=8 + local.get $1 + i64.load i32.const 2 - i32.shl + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 i32.add - local.get $6 - i32.store + local.set $4 + br $while-continue|2 end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i64) + (local $11 i32) + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_u + if local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 + local.tee $2 + i32.const 3 + i32.shl + local.tee $8 + i32.add + local.get $0 + local.get $8 + i32.add + i64.load + i64.store br $for-loop|0 end end - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 - i32.const 2 - i32.ge_s + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 3 + i32.shl + i32.add local.get $0 - i32.load - local.set $1 - local.get $0 - local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + i64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_u + if + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $9 local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $10 i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 3 i32.shl i32.add - local.tee $3 + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 + local.get $5 i32.load - i32.store - local.get $3 + call_indirect $0 (type $i64_i64_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + i64.store + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select + i64.store + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 + i32.const 0 + i32.ge_s + i32.add + local.set $2 local.get $1 - i32.store i32.const 1 + i32.add local.set $1 - loop $while-continue|3 - local.get $4 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load - local.set $3 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $6 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.store - local.get $0 - local.get $6 - i32.store - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end - end - local.get $4 - i32.const 1 - i32.sub - local.set $4 br $for-loop|2 end end - local.get $5 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $1 - i32.store ) - (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $0 - local.tee $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $4 - i32.load offset=4 - local.set $0 - local.get $2 - i32.const 2 - i32.eq - if - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load - local.set $2 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $2 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $2 - local.tee $3 - i32.const 256 - i32.lt_s - if - local.get $0 - local.set $2 - local.get $1 - local.set $5 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $2 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $6 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $8 - local.get $5 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - br $while-continue|1 - end - end + (local $9 i64) + (local $10 i32) + (local $11 i64) + (local $12 i32) + (local $13 i32) + (local $14 i64) + (local $15 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $10 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 end + local.get $0 + i64.load offset=8 + local.set $14 + local.get $0 + i64.load offset=16 + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $14 + local.get $9 + local.get $14 + local.get $9 local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i64.store offset=8 local.get $0 - i32.const 1 - i32.add + i64.load + local.set $11 i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 + global.set $~argumentsLength + local.get $11 + local.get $9 + local.get $14 + local.get $1 + select + local.tee $9 + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $11 + local.get $9 + local.get $1 + select + i64.store + local.get $0 + local.get $9 + local.get $11 + local.get $1 + select + i64.store offset=16 end + local.get $0 + i64.load + local.set $11 + local.get $0 + i64.load offset=8 + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $11 + local.get $9 + local.get $11 + local.get $9 + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i64.store + local.get $0 + local.get $9 + local.get $11 + local.get $1 + select + i64.store offset=8 end - else - local.get $0 - local.get $3 - local.get $1 - call $~lib/util/sort/weakHeapSort + return end + local.get $0 + i32.const 0 + local.get $10 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return end - local.get $4 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.lt_u - local.get $0 + i32.const 33 local.get $1 - i32.gt_u + i32.clz i32.sub - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i64) - (local $8 i32) - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u + local.tee $6 i32.const 2 i32.shl - local.tee $3 + local.tee $4 + local.set $7 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $13 + i32.const 0 local.set $4 + loop $for-loop|1 + local.get $4 + local.get $6 + i32.lt_u + if + local.get $12 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|1 + end + end + local.get $1 + i32.const 3 + i32.shl + local.set $1 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $1 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $6 + local.set $15 + local.get $0 i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 + local.get $10 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $4 + i32.add + local.tee $4 + i32.const 32 + i32.lt_s + if + local.get $0 i32.const 0 - i32.gt_s + local.get $10 + i32.const 31 + local.get $10 + i32.const 31 + i32.lt_s + select + local.tee $1 + local.get $4 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $10 + i32.lt_s if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $6 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end - end local.get $0 - local.get $3 + local.get $1 i32.const 1 - i32.shr_s - local.tee $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 - local.get $0 - local.get $4 - i32.const 3 - i32.shl i32.add - i64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 + local.tee $6 + local.get $10 local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 + call $~lib/util/sort/extendRunRight + local.tee $7 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 i32.lt_s if + local.get $0 local.get $6 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl + local.get $10 + local.get $6 + i32.const 31 i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store - local.get $0 + local.tee $4 local.get $4 - i32.const 3 - i32.shl - i32.add - local.get $5 - i64.store - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $7 - i64.store + local.get $10 + i32.gt_s + select + local.tee $7 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort end - local.get $4 + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $10 i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 - i32.const 2 - i32.ge_s - if - local.get $0 - i64.load - local.set $5 - local.get $0 - local.get $0 - local.get $4 - i32.const 3 - i32.shl i32.add - local.tee $1 - i64.load - i64.store - local.get $1 - local.get $5 - i64.store + i64.extend_i32_u + local.tee $9 + i64.div_u + local.get $6 + local.get $7 + i32.add i32.const 1 - local.set $1 - loop $while-continue|3 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $4 + loop $for-loop|3 local.get $4 - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s + local.get $5 + i32.lt_u if - local.get $0 - i64.load - local.set $5 - local.get $0 - local.get $1 - i32.const 3 + local.get $12 + local.get $5 + i32.const 2 i32.shl i32.add - i64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 - local.get $2 i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.lt_s + local.tee $8 + i32.const -1 + i32.ne if - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u + local.get $0 + local.get $8 + local.get $13 + local.get $5 i32.const 2 i32.shl - i32.add local.tee $3 - local.get $3 + i32.add i32.load i32.const 1 + i32.add local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 3 - i32.shl + local.get $15 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $3 + local.get $12 i32.add - local.get $5 - i64.store - local.get $0 - local.get $7 - i64.store + i32.const -1 + i32.store + local.get $8 + local.set $3 end - local.get $1 + local.get $5 i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 + i32.sub + local.set $5 + br $for-loop|3 end end + local.get $12 + local.get $4 + i32.const 2 + i32.shl + local.tee $5 + i32.add + local.get $3 + i32.store + local.get $5 + local.get $13 + i32.add + local.get $1 + i32.store + local.get $6 + local.set $3 + local.get $7 + local.set $1 local.get $4 + local.set $5 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $5 + if + local.get $12 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $13 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $10 + local.get $15 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $5 i32.const 1 i32.sub - local.set $4 - br $for-loop|2 + local.set $5 + br $for-loop|4 end end - local.get $6 + local.get $15 + call $~lib/rt/tlsf/__free + local.get $13 + call $~lib/rt/tlsf/__free + local.get $12 call $~lib/rt/tlsf/__free - local.get $0 - i64.load offset=8 - local.set $5 - local.get $0 - local.get $0 - i64.load - i64.store offset=8 - local.get $0 - local.get $5 - i64.store ) - (func $~lib/typedarray/Int64Array#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 + (local $4 i64) + (local $5 i64) + block $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 local.get $0 - local.tee $3 i32.load offset=8 i32.const 3 i32.shr_u - local.tee $2 + local.tee $3 i32.const 1 i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $3 + br_if $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 + local.get $0 i32.load offset=4 - local.set $0 - local.get $2 + local.set $2 + local.get $3 i32.const 2 i32.eq if - local.get $0 + local.get $2 i64.load offset=8 - local.set $6 - local.get $0 + local.set $4 + local.get $2 i64.load - local.set $7 + local.set $5 i32.const 2 global.set $~argumentsLength - local.get $6 - local.get $7 + local.get $4 + local.get $5 local.get $1 i32.load call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 i32.lt_s if - local.get $0 - local.get $7 + local.get $2 + local.get $5 i64.store offset=8 - local.get $0 - local.get $6 + local.get $2 + local.get $4 i64.store end - br $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 + br $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 end local.get $2 - local.tee $4 - i32.const 256 - i32.lt_s + local.get $3 + local.get $1 + call $~lib/util/sort/SORT + end + local.get $0 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + local.get $0 + local.get $1 + i64.gt_u + local.get $0 + local.get $1 + i64.lt_u + i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + local.get $0 + local.get $1 + i64.lt_u + local.get $0 + local.get $1 + i64.gt_u + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 f32) + (local $6 f32) + (local $7 f32) + (local $8 i32) + local.get $1 + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 1 + i32.and + local.get $3 + local.get $8 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.eqz + select + i32.add + local.set $8 + loop $for-loop|0 + local.get $2 + local.get $8 + i32.ge_s if local.get $0 - local.set $2 - local.get $1 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load local.set $5 - loop $for-loop|0 - local.get $4 - local.get $8 - i32.gt_s + local.get $3 + f32.load offset=4 + local.tee $7 + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 + local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $5 + local.set $6 + local.get $7 + local.set $5 + end + local.get $8 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $1 + local.get $3 + i32.le_s if - local.get $2 - local.get $8 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $6 - local.get $8 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 + block $while-break|1 local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $5 + local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - local.get $5 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $7 - i64.store - br $while-continue|1 - end - end + i32.le_s + br_if $while-break|1 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $7 + f32.store offset=8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store offset=8 + loop $while-continue|2 + local.get $1 + local.get $3 + i32.le_s + if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store offset=4 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 end - local.get $2 - local.get $0 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $6 - i64.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|0 end end - else local.get $0 - local.get $4 - local.get $1 - call $~lib/util/sort/weakHeapSort + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $6 + f32.store offset=4 + local.get $8 + i32.const 2 + i32.add + local.set $8 + br $for-loop|0 end end - local.get $3 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) - local.get $0 - local.get $1 - i64.gt_s - local.get $0 + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f32) + (local $6 f32) + (local $7 i32) local.get $1 - i64.lt_s - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (result i32) + local.get $2 + i32.eq + if + local.get $1 + return + end local.get $0 local.get $1 - i64.lt_s + i32.const 2 + i32.shl + i32.add + f32.load local.get $0 local.get $1 - i64.gt_s - i32.sub - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i64) - (local $8 i32) - local.get $1 - i32.const 31 + i32.const 1 i32.add - i32.const 5 - i32.shr_u + local.tee $4 i32.const 2 i32.shl - local.tee $3 - local.set $4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 i32.add - local.tee $6 - i32.const 0 + f32.load + i32.const 2 + global.set $~argumentsLength local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $4 - i32.const 0 - i32.gt_s - if + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $6 - local.get $3 - i32.const 6 - i32.shr_u + i32.gt_s + if (result i32) + local.get $0 + local.get $4 i32.const 2 i32.shl i32.add - i32.load + local.tee $7 + f32.load offset=4 + local.get $7 + f32.load + i32.const 2 + global.set $~argumentsLength local.get $3 - i32.const 1 - i32.shr_s + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 i32.shr_u + else + i32.const 0 + end + if + local.get $4 i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end + i32.add + local.set $4 + br $while-continue|0 end - local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $5 - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 i32.lt_s if - local.get $6 - local.get $4 - i32.const 5 - i32.shr_u + local.get $0 + local.get $1 i32.const 2 i32.shl i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store + local.tee $3 + f32.load + local.set $5 + local.get $3 local.get $0 - local.get $4 - i32.const 3 + local.get $2 + i32.const 2 i32.shl i32.add - local.get $5 - i64.store - local.get $0 - local.get $3 - i32.const 3 - i32.shl + local.tee $3 + f32.load + f32.store + local.get $1 + i32.const 1 i32.add - local.get $7 - i64.store + local.set $1 + local.get $3 + local.get $5 + f32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 end - end - local.get $1 - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 - local.get $4 - i32.const 2 - i32.ge_s - if - local.get $0 - i64.load - local.set $5 - local.get $0 - local.get $0 + else + loop $while-continue|2 + local.get $2 local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - i64.load - i64.store - local.get $1 - local.get $5 - i64.store - i32.const 1 - local.set $1 - loop $while-continue|3 + i32.gt_s + if (result i32) + local.get $0 local.get $4 - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u i32.const 2 i32.shl i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and + local.tee $1 + f32.load offset=4 local.get $1 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 i32.const 1 - i32.shl i32.add - local.tee $3 - i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i64.load - local.set $5 - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $3 - local.get $3 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $5 - i64.store - local.get $0 - local.get $7 - i64.store - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end + local.set $4 + br $while-continue|2 end - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|2 end end - local.get $6 - call $~lib/rt/tlsf/__free - local.get $0 - i64.load offset=8 - local.set $5 - local.get $0 - local.get $0 - i64.load - i64.store offset=8 - local.get $0 - local.get $5 - i64.store + local.get $4 ) - (func $~lib/typedarray/Uint64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $0 - local.tee $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $3 - i32.load offset=4 - local.set $0 + (local $9 f32) + (local $10 f32) + (local $11 i32) + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 local.get $2 - i32.const 2 - i32.eq + i32.lt_u if + local.get $4 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + i32.add local.get $0 - i64.load offset=8 - local.set $6 + local.get $8 + i32.add + f32.load + f32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_u + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add local.get $0 - i64.load - local.set $7 + local.get $6 i32.const 2 - global.set $~argumentsLength + i32.shl + i32.add + f32.load offset=4 + f32.store local.get $6 - local.get $7 - local.get $1 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $7 - i64.store offset=8 - local.get $0 - local.get $6 - i64.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 end - local.get $2 - local.tee $4 - i32.const 256 - i32.lt_s + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_u if - local.get $0 - local.set $2 - local.get $1 - local.set $5 - loop $for-loop|0 - local.get $4 - local.get $8 - i32.gt_s - if - local.get $2 - local.get $8 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $6 - local.get $8 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - local.get $5 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $7 - i64.store - br $while-continue|1 - end - end - end - local.get $2 - local.get $0 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $6 - i64.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|0 - end - end - else - local.get $0 local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $9 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $9 + local.get $10 + local.get $9 + local.get $10 + local.get $5 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + local.tee $8 + i32.const 31 + i32.shr_u + local.tee $11 + select + f32.store + local.get $7 + local.get $10 + local.get $9 + local.get $11 + select + f32.store + local.get $6 + local.get $11 + i32.sub + local.set $6 + local.get $2 + local.get $8 + i32.const 0 + i32.ge_s + i32.add + local.set $2 local.get $1 - call $~lib/util/sort/weakHeapSort + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 end end - local.get $3 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) - local.get $0 - local.get $1 - i64.gt_u - local.get $0 - local.get $1 - i64.lt_u - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i64) (result i32) - local.get $0 - local.get $1 - i64.lt_u - local.get $0 - local.get $1 - i64.gt_u - i32.sub ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 f32) + (local $5 i32) (local $6 i32) - (local $7 f32) + (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 f32) + (local $11 f32) + (local $12 i32) + (local $13 i32) + (local $14 f32) + (local $15 i32) + (local $16 i64) local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u + i32.const 1 + i32.sub + local.set $9 + local.get $1 + i32.const 128 + i32.le_s + if + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + f32.load offset=4 + local.set $14 + local.get $0 + f32.load offset=8 + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $14 + local.get $10 + local.get $14 + local.get $10 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + f32.store offset=4 + local.get $0 + f32.load + local.set $11 + i32.const 2 + global.set $~argumentsLength + local.get $11 + local.get $10 + local.get $14 + local.get $1 + select + local.tee $10 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $11 + local.get $10 + local.get $1 + select + f32.store + local.get $0 + local.get $10 + local.get $11 + local.get $1 + select + f32.store offset=8 + end + local.get $0 + f32.load + local.set $11 + local.get $0 + f32.load offset=4 + local.set $10 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $11 + local.get $10 + local.get $11 + local.get $10 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + f32.store + local.get $0 + local.get $10 + local.get $11 + local.get $1 + select + f32.store offset=4 + end + return + end + local.get $0 + i32.const 0 + local.get $9 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + i32.const 33 + local.get $1 + i32.clz + i32.sub + local.tee $6 i32.const 2 i32.shl - local.tee $3 - local.set $4 + local.tee $4 + local.set $7 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $7 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $12 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -32190,382 +36891,293 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $6 + local.set $13 i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub local.set $4 - loop $for-loop|0 + loop $for-loop|1 local.get $4 - i32.const 0 - i32.gt_s + local.get $6 + i32.lt_u if - local.get $4 - local.set $3 - loop $while-continue|1 - local.get $3 - i32.const 1 - i32.and - local.get $6 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $3 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $3 - i32.const 1 - i32.shr_s - local.set $3 - br $while-continue|1 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shr_s - local.tee $3 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $5 - local.get $0 + local.get $12 local.get $4 i32.const 2 i32.shl i32.add - f32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $6 - local.get $4 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $4 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.get $5 - f32.store - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $7 - f32.store - end + i32.const -1 + i32.store local.get $4 i32.const 1 - i32.sub + i32.add local.set $4 - br $for-loop|0 + br $for-loop|1 end end local.get $1 + i32.const 2 + i32.shl + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.set $15 + local.get $0 + i32.const 0 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $1 i32.const 1 - i32.sub - local.set $4 - loop $for-loop|2 + i32.add + local.tee $4 + i32.const 32 + i32.lt_s + if + local.get $0 + i32.const 0 + local.get $9 + i32.const 31 + local.get $9 + i32.const 31 + i32.lt_s + select + local.tee $1 local.get $4 - i32.const 2 - i32.ge_s + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $1 + local.get $9 + i32.lt_s if local.get $0 - f32.load - local.set $5 - local.get $0 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - f32.load - f32.store local.get $1 - local.get $5 - f32.store i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $4 + i32.add + local.tee $6 + local.get $9 + local.get $2 + call $~lib/util/sort/extendRunRight + local.tee $7 + local.get $6 + i32.sub + i32.const 1 + i32.add + local.tee $8 + i32.const 32 + i32.lt_s + if + local.get $0 local.get $6 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl + local.get $9 + local.get $6 + i32.const 31 i32.add - local.tee $3 + local.tee $4 + local.get $4 + local.get $9 i32.gt_s - if - local.get $3 - local.set $1 - br $while-continue|3 - end + select + local.tee $7 + local.get $8 + local.get $2 + call $~lib/util/sort/insertionSort end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s + local.get $3 + local.get $6 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $9 + i32.const 1 + i32.add + i64.extend_i32_u + local.tee $16 + i64.div_u + local.get $6 + local.get $7 + i32.add + i32.const 1 + i32.add + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $16 + i64.div_u + i64.xor + i32.wrap_i64 + i32.clz + local.set $4 + loop $for-loop|3 + local.get $4 + local.get $5 + i32.lt_u if - local.get $0 - f32.load - local.set $5 - local.get $0 - local.get $1 + local.get $12 + local.get $5 i32.const 2 i32.shl i32.add - f32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $7 - local.get $2 i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s + local.tee $8 + i32.const -1 + i32.ne if - local.get $6 - local.get $1 - i32.const 5 - i32.shr_u + local.get $0 + local.get $8 + local.get $13 + local.get $5 i32.const 2 i32.shl - i32.add local.tee $3 - local.get $3 + i32.add i32.load i32.const 1 + i32.add local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 2 - i32.shl + local.get $15 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $3 + local.get $12 i32.add - local.get $5 - f32.store - local.get $0 - local.get $7 - f32.store + i32.const -1 + i32.store + local.get $8 + local.set $3 end - local.get $1 + local.get $5 i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 + i32.sub + local.set $5 + br $for-loop|3 end end + local.get $12 + local.get $4 + i32.const 2 + i32.shl + local.tee $5 + i32.add + local.get $3 + i32.store + local.get $5 + local.get $13 + i32.add + local.get $1 + i32.store + local.get $6 + local.set $3 + local.get $7 + local.set $1 local.get $4 + local.set $5 + br $while-continue|2 + end + end + loop $for-loop|4 + local.get $5 + if + local.get $12 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + i32.const -1 + i32.ne + if + local.get $0 + local.get $1 + local.get $13 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $9 + local.get $15 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $5 i32.const 1 i32.sub - local.set $4 - br $for-loop|2 + local.set $5 + br $for-loop|4 end end - local.get $6 + local.get $15 + call $~lib/rt/tlsf/__free + local.get $13 + call $~lib/rt/tlsf/__free + local.get $12 call $~lib/rt/tlsf/__free - local.get $0 - f32.load offset=4 - local.set $5 - local.get $0 - local.get $0 - f32.load - f32.store offset=4 - local.get $0 - local.get $5 - f32.store ) (func $~lib/typedarray/Float32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f32) - (local $7 f32) - (local $8 i32) + (local $4 f32) + (local $5 f32) block $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $0 - local.tee $3 i32.load offset=8 i32.const 2 i32.shr_u - local.tee $2 + local.tee $3 i32.const 1 i32.le_u br_if $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $3 + local.get $0 i32.load offset=4 - local.set $0 - local.get $2 + local.set $2 + local.get $3 i32.const 2 i32.eq if - local.get $0 + local.get $2 f32.load offset=4 - local.set $6 - local.get $0 + local.set $4 + local.get $2 f32.load - local.set $7 + local.set $5 i32.const 2 global.set $~argumentsLength - local.get $6 - local.get $7 + local.get $4 + local.get $5 local.get $1 i32.load call_indirect $0 (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if - local.get $0 - local.get $7 + local.get $2 + local.get $5 f32.store offset=4 - local.get $0 - local.get $6 + local.get $2 + local.get $4 f32.store end br $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $2 - local.tee $4 - i32.const 256 - i32.lt_s - if - local.get $0 - local.set $2 - local.get $1 - local.set $5 - loop $for-loop|0 - local.get $4 - local.get $8 - i32.gt_s - if - local.get $2 - local.get $8 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $6 - local.get $8 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - local.get $5 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - f32.store - br $while-continue|1 - end - end - end - local.get $2 - local.get $0 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - f32.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|0 - end - end - else - local.get $0 - local.get $4 - local.get $1 - call $~lib/util/sort/weakHeapSort - end + local.get $3 + local.get $1 + call $~lib/util/sort/SORT end - local.get $3 + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) (local $2 i32) @@ -32824,7 +37436,447 @@ end local.get $1 i32.const 0 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 6 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 3984 + i32.store offset=4 + local.get $4 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $2 + i32.load offset=8 + local.set $5 + local.get $1 + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $8 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.lt_s + if + local.get $3 + local.get $8 + i32.add + i32.load8_u + local.set $7 + i32.const 3 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $2 + i32.const 3984 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $0 + local.get $6 + i32.add + local.get $7 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 + local.get $6 + local.get $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 + i32.store + local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.tee $4 + i32.const 4016 + i32.store offset=4 + local.get $4 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i64.const 0 + i64.store + local.get $2 + i32.load offset=8 + local.set $5 + local.get $1 + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.set $8 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.lt_s + if + local.get $3 + local.get $8 + i32.add + i32.load8_u + local.set $7 + i32.const 3 + global.set $~argumentsLength + local.get $7 + local.get $3 + local.get $2 + i32.const 4016 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $0 + local.get $6 + i32.add + local.get $7 + i32.store8 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $1 + local.get $6 + local.get $0 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 i32.ne if @@ -32837,7 +37889,7 @@ end local.get $1 i32.const 1 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 i32.ne if @@ -32850,7 +37902,7 @@ end local.get $1 i32.const 2 - call $~lib/typedarray/Int8Array#__get + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 5 i32.ne if @@ -32874,7 +37926,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> (local $0 i32) (local $1 i32) (local $2 i32) @@ -32902,32 +37954,32 @@ i32.store offset=8 local.get $1 i32.const 6 - call $~lib/typedarray/Uint8Array#constructor + call $~lib/typedarray/Int16Array#constructor local.tee $2 i32.store local.get $2 i32.const 0 i32.const 1 - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Int16Array#__set local.get $2 i32.const 1 i32.const 2 - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Int16Array#__set local.get $2 i32.const 2 i32.const 3 - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Int16Array#__set local.get $2 i32.const 3 i32.const 4 - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Int16Array#__set local.get $2 i32.const 5 i32.const 5 - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer local.tee $4 - i32.const 3984 + i32.const 4048 i32.store offset=4 local.get $4 i32.const 8 @@ -32943,15 +37995,19 @@ i64.store local.get $2 i32.load offset=8 + i32.const 1 + i32.shr_u local.set $5 local.get $1 i32.const 12 - i32.const 4 + i32.const 6 call $~lib/rt/itcms/__new local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $5 + i32.const 1 + i32.shl i32.const 0 call $~lib/rt/itcms/__new local.tee $6 @@ -32964,245 +38020,29 @@ local.get $5 i32.lt_s if - local.get $3 local.get $8 - i32.add - i32.load8_u - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $3 - local.get $2 - i32.const 3984 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) - if - local.get $0 - local.get $6 - i32.add - local.get $7 - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end local.get $3 i32.const 1 + i32.shl i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $1 - local.get $6 - local.get $0 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - i32.const 32336 - i32.const 32384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $2 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - global.get $~lib/memory/__stack_pointer - local.tee $4 - i32.const 4016 - i32.store offset=4 - local.get $4 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $2 - i32.load offset=8 - local.set $5 - local.get $1 - i32.const 12 - i32.const 5 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 0 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - local.get $2 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $3 - local.get $5 - i32.lt_s - if - local.get $3 - local.get $8 - i32.add - i32.load8_u + i32.load16_s local.set $7 i32.const 3 global.set $~argumentsLength local.get $7 local.get $3 local.get $2 - i32.const 4016 + i32.const 4048 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $0 local.get $6 + local.get $0 + i32.const 1 + i32.shl i32.add local.get $7 - i32.store8 + i32.store16 local.get $0 i32.const 1 i32.add @@ -33218,6 +38058,9 @@ local.get $1 local.get $6 local.get $0 + i32.const 1 + i32.shl + local.tee $3 call $~lib/rt/itcms/__renew local.tee $2 i32.store @@ -33225,7 +38068,7 @@ local.get $2 call $~lib/rt/itcms/__link local.get $1 - local.get $0 + local.get $3 i32.store offset=8 local.get $1 local.get $2 @@ -33252,6 +38095,8 @@ end local.get $1 i32.load offset=8 + i32.const 1 + i32.shr_u i32.const 3 i32.ne if @@ -33264,7 +38109,7 @@ end local.get $1 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Int16Array#__get i32.const 3 i32.ne if @@ -33277,7 +38122,7 @@ end local.get $1 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Int16Array#__get i32.const 4 i32.ne if @@ -33290,7 +38135,7 @@ end local.get $1 i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Int16Array#__get i32.const 5 i32.ne if @@ -33314,7 +38159,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> (local $0 i32) (local $1 i32) (local $2 i32) @@ -33342,32 +38187,32 @@ i32.store offset=8 local.get $1 i32.const 6 - call $~lib/typedarray/Int16Array#constructor + call $~lib/typedarray/Uint16Array#constructor local.tee $2 i32.store local.get $2 i32.const 0 i32.const 1 - call $~lib/typedarray/Int16Array#__set + call $~lib/typedarray/Uint16Array#__set local.get $2 i32.const 1 i32.const 2 - call $~lib/typedarray/Int16Array#__set + call $~lib/typedarray/Uint16Array#__set local.get $2 i32.const 2 i32.const 3 - call $~lib/typedarray/Int16Array#__set + call $~lib/typedarray/Uint16Array#__set local.get $2 i32.const 3 i32.const 4 - call $~lib/typedarray/Int16Array#__set + call $~lib/typedarray/Uint16Array#__set local.get $2 i32.const 5 i32.const 5 - call $~lib/typedarray/Int16Array#__set + call $~lib/typedarray/Uint16Array#__set global.get $~lib/memory/__stack_pointer local.tee $4 - i32.const 4048 + i32.const 4080 i32.store offset=4 local.get $4 i32.const 8 @@ -33388,7 +38233,7 @@ local.set $5 local.get $1 i32.const 12 - i32.const 6 + i32.const 7 call $~lib/rt/itcms/__new local.tee $1 i32.store @@ -33413,14 +38258,14 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u local.set $7 i32.const 3 global.set $~argumentsLength local.get $7 local.get $3 local.get $2 - i32.const 4048 + i32.const 4080 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if @@ -33497,7 +38342,7 @@ end local.get $1 i32.const 0 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 3 i32.ne if @@ -33510,7 +38355,7 @@ end local.get $1 i32.const 1 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 4 i32.ne if @@ -33523,7 +38368,7 @@ end local.get $1 i32.const 2 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 5 i32.ne if @@ -33547,7 +38392,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> (local $0 i32) (local $1 i32) (local $2 i32) @@ -33575,32 +38420,32 @@ i32.store offset=8 local.get $1 i32.const 6 - call $~lib/typedarray/Uint16Array#constructor + call $~lib/typedarray/Int32Array#constructor local.tee $2 i32.store local.get $2 i32.const 0 i32.const 1 - call $~lib/typedarray/Uint16Array#__set + call $~lib/typedarray/Int32Array#__set local.get $2 i32.const 1 i32.const 2 - call $~lib/typedarray/Uint16Array#__set + call $~lib/typedarray/Int32Array#__set local.get $2 i32.const 2 i32.const 3 - call $~lib/typedarray/Uint16Array#__set + call $~lib/typedarray/Int32Array#__set local.get $2 i32.const 3 i32.const 4 - call $~lib/typedarray/Uint16Array#__set + call $~lib/typedarray/Int32Array#__set local.get $2 i32.const 5 i32.const 5 - call $~lib/typedarray/Uint16Array#__set + call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer local.tee $4 - i32.const 4080 + i32.const 4112 i32.store offset=4 local.get $4 i32.const 8 @@ -33616,18 +38461,18 @@ i64.store local.get $2 i32.load offset=8 - i32.const 1 + i32.const 2 i32.shr_u local.set $5 local.get $1 i32.const 12 - i32.const 7 + i32.const 8 call $~lib/rt/itcms/__new local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $5 - i32.const 1 + i32.const 2 i32.shl i32.const 0 call $~lib/rt/itcms/__new @@ -33643,27 +38488,27 @@ if local.get $8 local.get $3 - i32.const 1 + i32.const 2 i32.shl i32.add - i32.load16_u + i32.load local.set $7 i32.const 3 global.set $~argumentsLength local.get $7 local.get $3 local.get $2 - i32.const 4080 + i32.const 4112 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if local.get $6 local.get $0 - i32.const 1 + i32.const 2 i32.shl i32.add local.get $7 - i32.store16 + i32.store local.get $0 i32.const 1 i32.add @@ -33679,7 +38524,7 @@ local.get $1 local.get $6 local.get $0 - i32.const 1 + i32.const 2 i32.shl local.tee $3 call $~lib/rt/itcms/__renew @@ -33716,7 +38561,7 @@ end local.get $1 i32.load offset=8 - i32.const 1 + i32.const 2 i32.shr_u i32.const 3 i32.ne @@ -33730,7 +38575,7 @@ end local.get $1 i32.const 0 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 3 i32.ne if @@ -33743,7 +38588,7 @@ end local.get $1 i32.const 1 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 4 i32.ne if @@ -33756,7 +38601,7 @@ end local.get $1 i32.const 2 - call $~lib/typedarray/Uint16Array#__get + call $~lib/typedarray/Int32Array#__get i32.const 5 i32.ne if @@ -33780,7 +38625,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> (local $0 i32) (local $1 i32) (local $2 i32) @@ -33808,32 +38653,32 @@ i32.store offset=8 local.get $1 i32.const 6 - call $~lib/typedarray/Int32Array#constructor + call $~lib/typedarray/Uint32Array#constructor local.tee $2 i32.store local.get $2 i32.const 0 i32.const 1 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint32Array#__set local.get $2 i32.const 1 i32.const 2 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint32Array#__set local.get $2 i32.const 2 i32.const 3 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint32Array#__set local.get $2 i32.const 3 i32.const 4 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint32Array#__set local.get $2 i32.const 5 i32.const 5 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint32Array#__set global.get $~lib/memory/__stack_pointer local.tee $4 - i32.const 4112 + i32.const 4144 i32.store offset=4 local.get $4 i32.const 8 @@ -33854,7 +38699,7 @@ local.set $5 local.get $1 i32.const 12 - i32.const 8 + i32.const 9 call $~lib/rt/itcms/__new local.tee $1 i32.store @@ -33886,7 +38731,7 @@ local.get $7 local.get $3 local.get $2 - i32.const 4112 + i32.const 4144 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if @@ -33963,7 +38808,7 @@ end local.get $1 i32.const 0 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 3 i32.ne if @@ -33976,7 +38821,7 @@ end local.get $1 i32.const 1 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 4 i32.ne if @@ -33989,7 +38834,7 @@ end local.get $1 i32.const 2 - call $~lib/typedarray/Int32Array#__get + call $~lib/typedarray/Uint32Array#__get i32.const 5 i32.ne if @@ -34013,7 +38858,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> (local $0 i32) (local $1 i32) (local $2 i32) @@ -34021,7 +38866,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) + (local $7 i64) (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -34041,32 +38886,32 @@ i32.store offset=8 local.get $1 i32.const 6 - call $~lib/typedarray/Uint32Array#constructor + call $~lib/typedarray/Int64Array#constructor local.tee $2 i32.store local.get $2 i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set + i64.const 1 + call $~lib/typedarray/Int64Array#__set local.get $2 i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set + i64.const 2 + call $~lib/typedarray/Int64Array#__set local.get $2 i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set + i64.const 3 + call $~lib/typedarray/Int64Array#__set local.get $2 i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set + i64.const 4 + call $~lib/typedarray/Int64Array#__set local.get $2 i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set + i64.const 5 + call $~lib/typedarray/Int64Array#__set global.get $~lib/memory/__stack_pointer local.tee $4 - i32.const 4144 + i32.const 4176 i32.store offset=4 local.get $4 i32.const 8 @@ -34082,18 +38927,18 @@ i64.store local.get $2 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u local.set $5 local.get $1 i32.const 12 - i32.const 9 + i32.const 10 call $~lib/rt/itcms/__new local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $5 - i32.const 2 + i32.const 3 i32.shl i32.const 0 call $~lib/rt/itcms/__new @@ -34109,27 +38954,27 @@ if local.get $8 local.get $3 - i32.const 2 + i32.const 3 i32.shl i32.add - i32.load + i64.load local.set $7 i32.const 3 global.set $~argumentsLength local.get $7 local.get $3 local.get $2 - i32.const 4144 + i32.const 4176 i32.load - call_indirect $0 (type $i32_i32_i32_=>_i32) + call_indirect $0 (type $i64_i32_i32_=>_i32) if local.get $6 local.get $0 - i32.const 2 + i32.const 3 i32.shl i32.add local.get $7 - i32.store + i64.store local.get $0 i32.const 1 i32.add @@ -34145,7 +38990,7 @@ local.get $1 local.get $6 local.get $0 - i32.const 2 + i32.const 3 i32.shl local.tee $3 call $~lib/rt/itcms/__renew @@ -34182,7 +39027,7 @@ end local.get $1 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u i32.const 3 i32.ne @@ -34196,9 +39041,9 @@ end local.get $1 i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 3 - i32.ne + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.ne if i32.const 0 i32.const 1568 @@ -34209,9 +39054,9 @@ end local.get $1 i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.ne + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne if i32.const 0 i32.const 1568 @@ -34222,9 +39067,9 @@ end local.get $1 i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 - i32.ne + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.ne if i32.const 0 i32.const 1568 @@ -34246,7 +39091,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> (local $0 i32) (local $1 i32) (local $2 i32) @@ -34274,32 +39119,32 @@ i32.store offset=8 local.get $1 i32.const 6 - call $~lib/typedarray/Int64Array#constructor + call $~lib/typedarray/Uint64Array#constructor local.tee $2 i32.store local.get $2 i32.const 0 i64.const 1 - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Uint64Array#__set local.get $2 i32.const 1 i64.const 2 - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Uint64Array#__set local.get $2 i32.const 2 i64.const 3 - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Uint64Array#__set local.get $2 i32.const 3 i64.const 4 - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Uint64Array#__set local.get $2 i32.const 5 i64.const 5 - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Uint64Array#__set global.get $~lib/memory/__stack_pointer local.tee $4 - i32.const 4176 + i32.const 4208 i32.store offset=4 local.get $4 i32.const 8 @@ -34320,7 +39165,7 @@ local.set $5 local.get $1 i32.const 12 - i32.const 10 + i32.const 11 call $~lib/rt/itcms/__new local.tee $1 i32.store @@ -34352,7 +39197,7 @@ local.get $7 local.get $3 local.get $2 - i32.const 4176 + i32.const 4208 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) if @@ -34429,7 +39274,7 @@ end local.get $1 i32.const 0 - call $~lib/typedarray/Int64Array#__get + call $~lib/typedarray/Uint64Array#__get i64.const 3 i64.ne if @@ -34442,7 +39287,7 @@ end local.get $1 i32.const 1 - call $~lib/typedarray/Int64Array#__get + call $~lib/typedarray/Uint64Array#__get i64.const 4 i64.ne if @@ -34455,7 +39300,7 @@ end local.get $1 i32.const 2 - call $~lib/typedarray/Int64Array#__get + call $~lib/typedarray/Uint64Array#__get i64.const 5 i64.ne if @@ -34479,7 +39324,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> (local $0 i32) (local $1 i32) (local $2 i32) @@ -34487,7 +39332,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i64) + (local $7 f32) (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -34507,32 +39352,32 @@ i32.store offset=8 local.get $1 i32.const 6 - call $~lib/typedarray/Uint64Array#constructor + call $~lib/typedarray/Float32Array#constructor local.tee $2 i32.store local.get $2 i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set + f32.const 1 + call $~lib/typedarray/Float32Array#__set local.get $2 i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set + f32.const 2 + call $~lib/typedarray/Float32Array#__set local.get $2 i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set + f32.const 3 + call $~lib/typedarray/Float32Array#__set local.get $2 i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set + f32.const 4 + call $~lib/typedarray/Float32Array#__set local.get $2 i32.const 5 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set + f32.const 5 + call $~lib/typedarray/Float32Array#__set global.get $~lib/memory/__stack_pointer local.tee $4 - i32.const 4208 + i32.const 4240 i32.store offset=4 local.get $4 i32.const 8 @@ -34548,18 +39393,18 @@ i64.store local.get $2 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u local.set $5 local.get $1 i32.const 12 - i32.const 11 + i32.const 12 call $~lib/rt/itcms/__new local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $5 - i32.const 3 + i32.const 2 i32.shl i32.const 0 call $~lib/rt/itcms/__new @@ -34575,27 +39420,27 @@ if local.get $8 local.get $3 - i32.const 3 + i32.const 2 i32.shl i32.add - i64.load + f32.load local.set $7 i32.const 3 global.set $~argumentsLength local.get $7 local.get $3 local.get $2 - i32.const 4208 + i32.const 4240 i32.load - call_indirect $0 (type $i64_i32_i32_=>_i32) + call_indirect $0 (type $f32_i32_i32_=>_i32) if local.get $6 local.get $0 - i32.const 3 + i32.const 2 i32.shl i32.add local.get $7 - i64.store + f32.store local.get $0 i32.const 1 i32.add @@ -34611,7 +39456,7 @@ local.get $1 local.get $6 local.get $0 - i32.const 3 + i32.const 2 i32.shl local.tee $3 call $~lib/rt/itcms/__renew @@ -34648,7 +39493,7 @@ end local.get $1 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u i32.const 3 i32.ne @@ -34662,9 +39507,9 @@ end local.get $1 i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 3 - i64.ne + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.ne if i32.const 0 i32.const 1568 @@ -34675,9 +39520,9 @@ end local.get $1 i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.ne if i32.const 0 i32.const 1568 @@ -34688,9 +39533,9 @@ end local.get $1 i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne if i32.const 0 i32.const 1568 @@ -34712,7 +39557,7 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> (local $0 i32) (local $1 i32) (local $2 i32) @@ -34720,7 +39565,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) + (local $7 f64) (local $8 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -34740,32 +39585,32 @@ i32.store offset=8 local.get $1 i32.const 6 - call $~lib/typedarray/Float32Array#constructor + call $~lib/typedarray/Float64Array#constructor local.tee $2 i32.store local.get $2 i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set + f64.const 1 + call $~lib/typedarray/Float64Array#__set local.get $2 i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set + f64.const 2 + call $~lib/typedarray/Float64Array#__set local.get $2 i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set + f64.const 3 + call $~lib/typedarray/Float64Array#__set local.get $2 i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set + f64.const 4 + call $~lib/typedarray/Float64Array#__set local.get $2 i32.const 5 - f32.const 5 - call $~lib/typedarray/Float32Array#__set + f64.const 5 + call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer local.tee $4 - i32.const 4240 + i32.const 4272 i32.store offset=4 local.get $4 i32.const 8 @@ -34781,18 +39626,18 @@ i64.store local.get $2 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u local.set $5 local.get $1 i32.const 12 - i32.const 12 + i32.const 13 call $~lib/rt/itcms/__new local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $5 - i32.const 2 + i32.const 3 i32.shl i32.const 0 call $~lib/rt/itcms/__new @@ -34808,27 +39653,27 @@ if local.get $8 local.get $3 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load + f64.load local.set $7 i32.const 3 global.set $~argumentsLength local.get $7 local.get $3 local.get $2 - i32.const 4240 + i32.const 4272 i32.load - call_indirect $0 (type $f32_i32_i32_=>_i32) + call_indirect $0 (type $f64_i32_i32_=>_i32) if local.get $6 local.get $0 - i32.const 2 + i32.const 3 i32.shl i32.add local.get $7 - f32.store + f64.store local.get $0 i32.const 1 i32.add @@ -34844,7 +39689,7 @@ local.get $1 local.get $6 local.get $0 - i32.const 2 + i32.const 3 i32.shl local.tee $3 call $~lib/rt/itcms/__renew @@ -34881,7 +39726,7 @@ end local.get $1 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u i32.const 3 i32.ne @@ -34895,9 +39740,9 @@ end local.get $1 i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 3 - f32.ne + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.ne if i32.const 0 i32.const 1568 @@ -34908,9 +39753,9 @@ end local.get $1 i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.ne if i32.const 0 i32.const 1568 @@ -34921,9 +39766,9 @@ end local.get $1 i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.ne if i32.const 0 i32.const 1568 @@ -34945,240 +39790,77 @@ call $~lib/builtins/abort unreachable ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 f64) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 6 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - i32.store - local.get $2 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $2 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $2 - i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $3 + i32.const 6448 + i32.store + local.get $0 + i32.extend8_s + i32.const 6448 + local.get $1 + call $~lib/array/Array#__get + i32.extend8_s + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 513 i32.const 5 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - global.get $~lib/memory/__stack_pointer - local.tee $4 - i32.const 4272 - i32.store offset=4 - local.get $4 - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $1 - i64.const 0 - i64.store - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $5 - local.get $1 - i32.const 12 - i32.const 13 - call $~lib/rt/itcms/__new - local.tee $1 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.const 3 - i32.shl + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne + if i32.const 0 - call $~lib/rt/itcms/__new - local.tee $6 - i32.store offset=4 - local.get $2 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $3 - local.get $5 - i32.lt_s - if - local.get $8 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $3 - local.get $2 - i32.const 4272 - i32.load - call_indirect $0 (type $f64_i32_i32_=>_i32) - if - local.get $6 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $7 - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $1 - local.get $6 - local.get $0 - i32.const 3 - i32.shl - local.tee $3 - call $~lib/rt/itcms/__renew - local.tee $2 - i32.store - local.get $1 - local.get $2 - call $~lib/rt/itcms/__link - local.get $1 - local.get $3 - i32.store offset=8 - local.get $1 - local.get $2 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 + i32.const 1568 + i32.const 514 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 3 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.ne - if - i32.const 0 - i32.const 1568 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - return + i32.const 1568 + i32.const 515 + i32.const 5 + call $~lib/builtins/abort + unreachable end - i32.const 32336 - i32.const 32384 - i32.const 1 + global.get $std/typedarray/forEachCallCount i32.const 1 - call $~lib/builtins/abort - unreachable + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -35251,6 +39933,76 @@ global.set $~lib/memory/__stack_pointer ) (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15924 + i32.lt_s + if + i32.const 32336 + i32.const 32384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $3 + i32.const 0 + i32.store + local.get $3 + i32.const 6448 + i32.store + local.get $0 + i32.extend16_s + i32.const 6448 + local.get $1 + call $~lib/array/Array#__get + i32.extend16_s + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 513 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 514 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 515 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -45520,8 +50272,7 @@ block $folding-inner2 block $folding-inner1 local.get $9 - i32.const 255 - i32.and + i32.extend8_s i32.const 6 i32.ne br_if $folding-inner1 @@ -45759,8 +50510,7 @@ end end local.get $9 - i32.const 65535 - i32.and + i32.extend16_s i32.const 6 i32.ne br_if $folding-inner1 @@ -46962,8 +51712,7 @@ end end local.get $0 - i32.const 255 - i32.and + i32.extend8_s i32.const 6 i32.ne br_if $folding-inner5 @@ -47203,8 +51952,7 @@ end end local.get $0 - i32.const 65535 - i32.and + i32.extend16_s i32.const 6 i32.ne br_if $folding-inner5 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index e137c9bc55..33578b4d74 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -6,16 +6,18 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i64_i32_i32_=>_i32 (func (param i64 i32 i32) (result i32))) (type $i64_i64_=>_i32 (func (param i64 i64) (result i32))) + (type $i64_i32_i32_=>_i32 (func (param i64 i32 i32) (result i32))) + (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) + (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f32_i32_i32_=>_i32 (func (param f32 i32 i32) (result i32))) (type $f64_i32_i32_=>_i32 (func (param f64 i32 i32) (result i32))) + (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) + (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $i64_i64_i32_i32_=>_i64 (func (param i64 i64 i32 i32) (result i64))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i32_i64_=>_i64 (func (param i32 i32 i64) (result i64))) (type $f32_f32_i32_i32_=>_f32 (func (param f32 f32 i32 i32) (result f32))) @@ -26,6 +28,7 @@ (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) (type $i32_i32_f32_=>_f32 (func (param i32 i32 f32) (result f32))) (type $i32_i32_f64_=>_f64 (func (param i32 i32 f64) (result f64))) @@ -43,7 +46,6 @@ (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) @@ -74,6 +76,9 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/util/sort/INSERTION_SORT_THRESHOLD i32 (i32.const 128)) + (global $~lib/util/sort/EMPTY i32 (i32.const -1)) + (global $~lib/util/sort/MIN_RUN_LENGTH i32 (i32.const 32)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) @@ -3471,73 +3476,123 @@ local.get $2 f64.store ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 f64) - (local $9 i32) + (local $9 f64) + (local $10 f64) + (local $11 f64) + (local $12 i32) + (local $13 i32) i32.const 0 - local.set $3 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 if local.get $0 - local.get $3 + local.get $6 i32.const 3 i32.shl i32.add f64.load - local.set $5 - local.get $3 + local.set $8 + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 i32.const 1 i32.sub - local.set $6 + local.set $12 block $while-break|1 loop $while-continue|1 - local.get $6 - i32.const 0 + local.get $12 + local.get $1 i32.ge_s - local.set $7 - local.get $7 + local.set $13 + local.get $13 if local.get $0 - local.get $6 + local.get $12 i32.const 3 i32.shl i32.add f64.load local.set $8 - local.get $5 local.get $8 + local.get $11 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 - i32.lt_s + i32.gt_s if local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add + local.get $12 i32.const 3 i32.shl i32.add local.get $8 - f64.store + f64.store offset=16 + local.get $12 + i32.const 1 + i32.sub + local.set $12 else br $while-break|1 end @@ -3546,311 +3601,856 @@ end end local.get $0 - local.get $6 - i32.const 1 + local.get $12 + i32.const 3 + i32.shl i32.add + local.get $11 + f64.store offset=16 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $8 + f64.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 i32.const 3 i32.shl i32.add - local.get $5 - f64.store - local.get $3 - i32.const 1 + local.get $10 + f64.store offset=8 + local.get $6 + i32.const 2 i32.add - local.set $3 + local.set $6 br $for-loop|0 end end ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 i32) - (local $12 f64) + (local $7 f64) local.get $1 - i32.const 31 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 3 + i32.shl i32.add - i32.const 5 - i32.shr_u - i32.const 2 + f64.load + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 i32.shl - local.set $3 + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength local.get $3 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $0 + local.get $4 + i32.const 3 i32.shl i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 i32.load - local.get $7 - i32.const 1 - i32.shr_s + call_indirect $0 (type $f64_f64_=>_i32) i32.const 31 - i32.and i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end + i32.add + local.set $4 + br $while-continue|0 end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $9 - local.get $0 + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 i32.lt_s + local.set $6 + local.get $6 if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 + local.get $0 + local.get $1 + i32.const 3 i32.shl i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 + f64.load + local.set $7 + local.get $0 + local.get $1 + i32.const 3 i32.shl i32.add - i32.load - i32.const 1 + local.get $0 local.get $5 - i32.const 31 - i32.and + i32.const 3 i32.shl - i32.xor - i32.store + i32.add + f64.load + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 local.get $0 local.get $5 i32.const 3 i32.shl i32.add - local.get $9 + local.get $7 f64.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) local.get $0 - local.get $8 + local.get $4 i32.const 3 i32.shl i32.add - local.get $10 - f64.store + f64.load offset=8 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 end - local.get $5 - i32.const 1 - i32.sub local.set $5 - br $for-loop|0 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end + local.get $4 + ) + (func $~lib/util/sort/nodePower (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i64) local.get $1 - i32.const 1 + local.get $0 i32.sub + i32.const 1 + i32.add + i64.extend_i32_u local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 + local.get $3 + local.get $0 + i32.const 1 + i32.shl + i32.sub + local.set $6 + local.get $2 + local.get $6 + i32.add + local.set $7 + local.get $4 + local.get $6 + i32.add + i32.const 1 + i32.add + local.set $8 + local.get $7 + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $5 + i64.div_u + local.set $9 + local.get $8 + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $5 + i64.div_u + local.set $10 + local.get $9 + local.get $10 + i64.xor + i32.wrap_i64 + i32.clz + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 f64) + (local $12 f64) + (local $13 i32) + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add local.get $0 - f64.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 + local.get $6 + i32.const 1 + i32.sub i32.const 3 i32.shl i32.add f64.load f64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 3 + i32.shl + i32.add local.get $0 - local.get $5 + local.get $7 i32.const 3 i32.shl i32.add - local.get $10 + f64.load offset=8 f64.store + local.get $7 i32.const 1 - local.set $8 - loop $while-continue|3 - local.get $8 - i32.const 1 - i32.shl - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $8 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $7 - local.get $5 - i32.lt_s - local.set $11 - local.get $11 - if - local.get $7 - local.set $8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $8 - i32.const 0 - i32.gt_s - local.set $11 - local.get $11 - if + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $7 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $11 + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $12 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + f64.store + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + f64.store + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 f64) + (local $7 f64) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + f64.load offset=8 + local.set $6 + local.get $0 + f64.load offset=16 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + local.set $5 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + f64.store offset=8 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + local.set $7 + local.get $0 + f64.load + local.set $6 + local.get $6 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + local.set $5 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + f64.store + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + f64.store offset=16 + end local.get $0 f64.load - local.set $10 + local.set $7 local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $9 - local.get $10 - local.get $9 + f64.load offset=8 + local.set $6 + local.get $7 + local.get $6 i32.const 2 global.set $~argumentsLength local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + f64.store + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + f64.store offset=8 + end + end + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + local.get $4 + local.set $5 + i32.const 31 + local.get $5 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $8 + i32.lt_u + local.set $12 + local.get $12 + if + local.get $10 + local.get $5 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + i32.const 0 + local.set $13 + local.get $4 + i32.const 3 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $14 + i32.const 0 + local.set $15 + local.get $0 + i32.const 0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $16 + local.get $16 + i32.const 1 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $12 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $5 + local.get $12 + local.get $5 + i32.lt_s + select + local.set $16 + local.get $0 + local.get $15 + local.get $16 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $16 + local.get $3 + i32.lt_s + local.set $12 + local.get $12 + if + local.get $16 + i32.const 1 + i32.add + local.set $5 + local.get $0 + local.get $5 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $18 + local.get $18 + local.get $5 + i32.sub + i32.const 1 + i32.add + local.set $19 + local.get $19 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $20 + local.get $5 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.add + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $18 + local.get $0 + local.get $5 + local.get $18 + local.get $19 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $3 + local.get $15 + local.get $5 + local.get $18 + call $~lib/util/sort/nodePower + local.set $20 + local.get $13 + local.set $21 + loop $for-loop|3 + local.get $21 + local.get $20 + i32.gt_u + local.set $22 + local.get $22 + if + local.get $10 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $23 + local.get $23 + global.get $~lib/util/sort/EMPTY + i32.ne if - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u + local.get $0 + local.get $23 + local.get $11 + local.get $21 i32.const 2 i32.shl i32.add i32.load i32.const 1 - local.get $8 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $8 - i32.const 3 - i32.shl i32.add + local.get $16 + local.get $14 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $23 + local.set $15 local.get $10 - f64.store - local.get $0 - local.get $9 - f64.store + local.get $21 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store end - local.get $8 + local.get $21 i32.const 1 - i32.shr_s - local.set $8 - br $while-continue|4 + i32.sub + local.set $21 + br $for-loop|3 end end + local.get $10 + local.get $20 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $11 + local.get $20 + i32.const 2 + i32.shl + i32.add + local.get $16 + i32.store local.get $5 + local.set $15 + local.get $18 + local.set $16 + local.get $20 + local.set $13 + br $while-continue|2 + end + end + local.get $13 + local.set $12 + loop $for-loop|4 + local.get $12 + i32.const 0 + i32.ne + local.set $21 + local.get $21 + if + local.get $10 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $22 + local.get $22 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $22 + local.get $11 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $14 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $12 i32.const 1 i32.sub - local.set $5 - br $for-loop|2 + local.set $12 + br $for-loop|4 end end - local.get $4 + local.get $14 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 call $~lib/rt/tlsf/__free - local.get $0 - f64.load offset=8 - local.set $12 - local.get $0 - local.get $0 - f64.load - f64.store offset=8 - local.get $0 - local.get $12 - f64.store ) (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3859,9 +4459,6 @@ (local $5 i32) (local $6 f64) (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 i32) block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 local.set $3 @@ -3911,27 +4508,9 @@ br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $5 - local.set $10 local.get $4 - local.set $9 local.get $2 - local.set $8 - i32.const 0 - drop - 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 + call $~lib/util/sort/SORT local.get $3 end ) @@ -32766,73 +33345,123 @@ end end ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) i32.const 0 - local.set $3 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 if local.get $0 - local.get $3 + local.get $6 i32.const 0 i32.shl i32.add i32.load8_s - local.set $5 - local.get $3 + local.set $8 + local.get $0 + local.get $6 + i32.const 0 + i32.shl + i32.add + i32.load8_s offset=1 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 i32.const 1 i32.sub - local.set $6 + local.set $12 block $while-break|1 loop $while-continue|1 - local.get $6 - i32.const 0 + local.get $12 + local.get $1 i32.ge_s - local.set $7 - local.get $7 + local.set $13 + local.get $13 if local.get $0 - local.get $6 + local.get $12 i32.const 0 i32.shl i32.add i32.load8_s local.set $8 - local.get $5 local.get $8 + local.get $11 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.gt_s if local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add + local.get $12 i32.const 0 i32.shl i32.add local.get $8 - i32.store8 + i32.store8 offset=2 + local.get $12 + i32.const 1 + i32.sub + local.set $12 else br $while-break|1 end @@ -32841,311 +33470,804 @@ end end local.get $0 - local.get $6 - i32.const 1 + local.get $12 + i32.const 0 + i32.shl i32.add + local.get $11 + i32.store8 offset=2 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 0 + i32.shl + i32.add + local.get $8 + i32.store8 offset=1 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 i32.const 0 i32.shl i32.add - local.get $5 - i32.store8 - local.get $3 - i32.const 1 + local.get $10 + i32.store8 offset=1 + local.get $6 + i32.const 2 i32.add - local.set $3 + local.set $6 br $for-loop|0 end end ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 - local.get $3 - call $~lib/rt/tlsf/__alloc + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 local.set $4 + local.get $0 local.get $4 i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 + i32.shl + i32.add + i32.load8_s + local.get $0 + local.get $4 i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and + i32.add + local.tee $4 + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 + i32.const 0 + i32.shl + i32.add + i32.load8_s offset=1 + local.get $0 + local.get $4 + i32.const 0 i32.shl i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 i32.load - local.get $7 - i32.const 1 - i32.shr_s + call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 - i32.and i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end + i32.add + local.set $4 + br $while-continue|0 end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $9 - local.get $0 + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 i32.lt_s + local.set $6 + local.get $6 if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 + local.get $0 + local.get $1 + i32.const 0 i32.shl i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 + i32.load8_s + local.set $7 + local.get $0 + local.get $1 + i32.const 0 i32.shl i32.add - i32.load - i32.const 1 + local.get $0 local.get $5 - i32.const 31 - i32.and + i32.const 0 i32.shl - i32.xor - i32.store + i32.add + i32.load8_s + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 local.get $0 local.get $5 i32.const 0 i32.shl i32.add - local.get $9 + local.get $7 i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) local.get $0 - local.get $8 + local.get $4 i32.const 0 i32.shl i32.add - local.get $10 - i32.store8 + i32.load8_s offset=1 + local.get $0 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 end - local.get $5 - i32.const 1 - i32.sub local.set $5 - br $for-loop|0 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end - local.get $1 + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $2 i32.const 1 i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 0 + i32.shl + i32.add local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 0 + i32.shl + i32.add i32.load8_s - local.set $10 - local.get $0 + i32.store8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 0 + i32.shl + i32.add local.get $0 - local.get $5 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_s offset=1 + i32.store8 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $11 + local.get $4 + local.get $6 i32.const 0 i32.shl i32.add i32.load8_s + local.set $12 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 0 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select i32.store8 local.get $0 - local.get $5 + local.get $8 i32.const 0 i32.shl i32.add - local.get $10 + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select i32.store8 + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 - i32.const 1 - i32.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 - if + i32.add + local.set $8 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + i32.load8_s offset=1 + local.set $5 + local.get $0 + i32.load8_s offset=2 + local.set $6 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store8 offset=1 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + local.set $6 + local.get $0 + i32.load8_s + local.set $5 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store8 + local.get $0 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store8 offset=2 + end local.get $0 i32.load8_s - local.set $10 + local.set $7 local.get $0 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $11 - local.get $10 - local.get $11 + i32.load8_s offset=1 + local.set $6 + local.get $7 + local.get $6 i32.const 2 global.set $~argumentsLength local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store8 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store8 offset=1 + end + end + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + local.get $4 + local.set $7 + i32.const 31 + local.get $7 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $8 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $10 + local.get $7 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + i32.const 0 + local.set $12 + local.get $4 + i32.const 0 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $13 + i32.const 0 + local.set $14 + local.get $0 + i32.const 0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $15 + local.get $15 + i32.const 1 + i32.add + local.set $16 + local.get $16 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $6 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $15 + local.get $0 + local.get $14 + local.get $15 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $15 + local.get $3 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $15 + i32.const 1 + i32.add + local.set $7 + local.get $0 + local.get $7 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $5 + local.get $5 + local.get $7 + i32.sub + i32.const 1 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $18 + local.get $7 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.add + i32.const 1 + i32.sub + local.tee $19 + local.get $18 + local.get $19 + i32.lt_s + select + local.set $5 + local.get $0 + local.get $7 + local.get $5 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $3 + local.get $14 + local.get $7 + local.get $5 + call $~lib/util/sort/nodePower + local.set $18 + local.get $12 + local.set $19 + loop $for-loop|3 + local.get $19 + local.get $18 + i32.gt_u + local.set $20 + local.get $20 + if + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $21 + local.get $21 + global.get $~lib/util/sort/EMPTY + i32.ne if - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u + local.get $0 + local.get $21 + local.get $11 + local.get $19 i32.const 2 i32.shl i32.add i32.load i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $9 - i32.const 0 - i32.shl i32.add + local.get $15 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $21 + local.set $14 local.get $10 - i32.store8 - local.get $0 - local.get $11 - i32.store8 + local.get $19 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store end - local.get $9 + local.get $19 i32.const 1 - i32.shr_s - local.set $9 - br $while-continue|4 + i32.sub + local.set $19 + br $for-loop|3 end end + local.get $10 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $14 + i32.store + local.get $11 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $7 + local.set $14 local.get $5 + local.set $15 + local.get $18 + local.set $12 + br $while-continue|2 + end + end + local.get $12 + local.set $6 + loop $for-loop|4 + local.get $6 + i32.const 0 + i32.ne + local.set $19 + local.get $19 + if + local.get $10 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $20 + local.get $20 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $20 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 i32.const 1 i32.sub - local.set $5 - br $for-loop|2 + local.set $6 + br $for-loop|4 end end - local.get $4 + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 call $~lib/rt/tlsf/__free - local.get $0 - i32.load8_s offset=1 - local.set $12 - local.get $0 - local.get $0 - i32.load8_s - i32.store8 offset=1 - local.get $0 - local.get $12 - i32.store8 ) (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -33154,7 +34276,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) block $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 local.set $3 @@ -33204,27 +34325,9 @@ br $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 end local.get $5 - local.set $8 local.get $4 - local.set $7 local.get $2 - local.set $6 - i32.const 0 - drop - 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 + call $~lib/util/sort/SORT local.get $3 end ) @@ -33248,73 +34351,123 @@ i32.lt_s i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) i32.const 0 - local.set $3 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 if local.get $0 - local.get $3 + local.get $6 i32.const 0 i32.shl i32.add i32.load8_u - local.set $5 - local.get $3 + local.set $8 + local.get $0 + local.get $6 + i32.const 0 + i32.shl + i32.add + i32.load8_u offset=1 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 i32.const 1 i32.sub - local.set $6 + local.set $12 block $while-break|1 loop $while-continue|1 - local.get $6 - i32.const 0 + local.get $12 + local.get $1 i32.ge_s - local.set $7 - local.get $7 + local.set $13 + local.get $13 if local.get $0 - local.get $6 + local.get $12 i32.const 0 i32.shl i32.add i32.load8_u local.set $8 - local.get $5 local.get $8 + local.get $11 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.gt_s if local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add + local.get $12 i32.const 0 i32.shl i32.add local.get $8 - i32.store8 + i32.store8 offset=2 + local.get $12 + i32.const 1 + i32.sub + local.set $12 else br $while-break|1 end @@ -33323,390 +34476,864 @@ end end local.get $0 - local.get $6 - i32.const 1 - i32.add + local.get $12 i32.const 0 i32.shl i32.add - local.get $5 - i32.store8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 - local.get $3 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 + local.get $11 + i32.store8 offset=2 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 0 + i32.shl + i32.add + local.get $8 + i32.store8 offset=1 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end end end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $9 local.get $0 - local.get $5 + local.get $12 i32.const 0 i32.shl i32.add - i32.load8_u - local.set $10 - local.get $9 local.get $10 + i32.store8 offset=1 + local.get $6 i32.const 2 - global.set $~argumentsLength + i32.add + local.set $6 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 i32.lt_s - if + if (result i32) + local.get $0 local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 + i32.const 0 i32.shl i32.add + i32.load8_u offset=1 + local.get $0 local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 + i32.const 0 i32.shl i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 i32.load - i32.const 1 - local.get $5 + call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 - i32.and + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.get $1 + i32.const 0 i32.shl - i32.xor - i32.store + i32.add + i32.load8_u + local.set $7 + local.get $0 + local.get $1 + i32.const 0 + i32.shl + i32.add local.get $0 local.get $5 i32.const 0 i32.shl i32.add - local.get $9 + i32.load8_u i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 local.get $0 - local.get $8 + local.get $5 i32.const 0 i32.shl i32.add - local.get $10 + local.get $7 i32.store8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.load8_u offset=1 + local.get $0 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 end - local.get $5 - i32.const 1 - i32.sub local.set $5 - br $for-loop|0 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end - local.get $1 + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $2 i32.const 1 i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 if - local.get $0 - i32.load8_u - local.set $10 - local.get $0 - local.get $0 - local.get $5 + local.get $4 + local.get $6 + i32.const 1 + i32.sub i32.const 0 i32.shl i32.add - i32.load8_u - i32.store8 local.get $0 - local.get $5 + local.get $6 + i32.const 1 + i32.sub i32.const 0 i32.shl i32.add - local.get $10 + i32.load8_u i32.store8 - i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 - i32.const 1 - i32.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 - if - local.get $0 - i32.load8_u - local.set $10 - local.get $0 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $11 - local.get $10 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $10 - i32.store8 - local.get $0 - local.get $11 - i32.store8 - end - local.get $9 - i32.const 1 - i32.shr_s - local.set $9 - br $while-continue|4 - end - end - local.get $5 + local.get $6 i32.const 1 i32.sub - local.set $5 - br $for-loop|2 + local.set $6 + br $for-loop|0 end end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load8_u offset=1 - local.set $12 - local.get $0 - local.get $0 - i32.load8_u - i32.store8 offset=1 - local.get $0 - local.get $12 - i32.store8 - ) - (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s + i32.lt_u + local.set $10 + local.get $10 if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 0 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_u offset=1 + i32.store8 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq + i32.le_u + local.set $10 + local.get $10 if - local.get $5 - i32.load8_u offset=1 - local.set $6 - local.get $5 + local.get $4 + local.get $7 + i32.const 0 + i32.shl + i32.add i32.load8_u - local.set $7 + local.set $11 + local.get $4 local.get $6 - local.get $7 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $12 + local.get $11 + local.get $12 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + local.set $13 + local.get $0 + local.get $8 i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - i32.store8 offset=1 - local.get $5 - local.get $6 - i32.store8 - end - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $5 - local.set $8 - local.get $4 - local.set $7 - local.get $2 - local.set $6 - i32.const 0 - drop - local.get $7 - i32.const 256 - i32.lt_s - if + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store8 + local.get $0 local.get $8 + i32.const 0 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store8 local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 local.get $6 - call $~lib/util/sort/insertionSort - else + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + i32.load8_u offset=1 + local.set $5 + local.get $0 + i32.load8_u offset=2 + local.set $6 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store8 offset=1 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + local.set $6 + local.get $0 + i32.load8_u + local.set $5 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store8 + local.get $0 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store8 offset=2 + end + local.get $0 + i32.load8_u + local.set $7 + local.get $0 + i32.load8_u offset=1 + local.set $6 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store8 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store8 offset=1 + end + end + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + local.get $4 + local.set $7 + i32.const 31 + local.get $7 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $8 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $10 + local.get $7 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + i32.const 0 + local.set $12 + local.get $4 + i32.const 0 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $13 + i32.const 0 + local.set $14 + local.get $0 + i32.const 0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $15 + local.get $15 + i32.const 1 + i32.add + local.set $16 + local.get $16 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $6 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $15 + local.get $0 + local.get $14 + local.get $15 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $15 + local.get $3 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $15 + i32.const 1 + i32.add + local.set $7 + local.get $0 + local.get $7 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $5 + local.get $5 + local.get $7 + i32.sub + i32.const 1 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $18 + local.get $7 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.add + i32.const 1 + i32.sub + local.tee $19 + local.get $18 + local.get $19 + i32.lt_s + select + local.set $5 + local.get $0 + local.get $7 + local.get $5 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $3 + local.get $14 + local.get $7 + local.get $5 + call $~lib/util/sort/nodePower + local.set $18 + local.get $12 + local.set $19 + loop $for-loop|3 + local.get $19 + local.get $18 + i32.gt_u + local.set $20 + local.get $20 + if + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $21 + local.get $21 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $21 + local.get $11 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $15 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $21 + local.set $14 + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + end + local.get $19 + i32.const 1 + i32.sub + local.set $19 + br $for-loop|3 + end + end + local.get $10 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $14 + i32.store + local.get $11 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store local.get $7 + local.set $14 + local.get $5 + local.set $15 + local.get $18 + local.set $12 + br $while-continue|2 + end + end + local.get $12 + local.set $6 + loop $for-loop|4 + local.get $6 + i32.const 0 + i32.ne + local.set $19 + local.get $19 + if + local.get $10 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $20 + local.get $20 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $20 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + ) + (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $4 + local.get $4 + i32.const 1 + i32.le_s + if + local.get $3 + br $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 + end + local.get $3 + i32.load offset=4 + local.set $5 + local.get $4 + i32.const 2 + i32.eq + if + local.get $5 + i32.load8_u offset=1 + local.set $6 + local.get $5 + i32.load8_u + local.set $7 local.get $6 - call $~lib/util/sort/weakHeapSort + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $7 + i32.store8 offset=1 + local.get $5 + local.get $6 + i32.store8 + end + local.get $3 + br $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 end + local.get $5 + local.get $4 + local.get $2 + call $~lib/util/sort/SORT local.get $3 end ) @@ -33751,7 +35378,6 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) block $~lib/typedarray/SORT<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 local.set $3 @@ -33801,27 +35427,9 @@ br $~lib/typedarray/SORT<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 end local.get $5 - local.set $8 local.get $4 - local.set $7 local.get $2 - local.set $6 - i32.const 0 - drop - 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 + call $~lib/util/sort/SORT local.get $3 end ) @@ -33859,73 +35467,123 @@ i32.lt_u i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) i32.const 0 - local.set $3 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 if local.get $0 - local.get $3 + local.get $6 i32.const 1 i32.shl i32.add i32.load16_s - local.set $5 - local.get $3 + local.set $8 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s offset=2 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 i32.const 1 i32.sub - local.set $6 + local.set $12 block $while-break|1 loop $while-continue|1 - local.get $6 - i32.const 0 + local.get $12 + local.get $1 i32.ge_s - local.set $7 - local.get $7 + local.set $13 + local.get $13 if local.get $0 - local.get $6 + local.get $12 i32.const 1 i32.shl i32.add i32.load16_s local.set $8 - local.get $5 local.get $8 + local.get $11 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.gt_s if local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add + local.get $12 i32.const 1 i32.shl i32.add local.get $8 - i32.store16 + i32.store16 offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 else br $while-break|1 end @@ -33934,325 +35592,817 @@ end end local.get $0 - local.get $6 + local.get $12 i32.const 1 + i32.shl i32.add + local.get $11 + i32.store16 offset=4 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.store16 offset=2 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 i32.const 1 i32.shl i32.add - local.get $5 - i32.store16 - local.get $3 - i32.const 1 + local.get $10 + i32.store16 offset=2 + local.get $6 + i32.const 2 i32.add - local.set $3 + local.set $6 br $for-loop|0 end end ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) local.get $1 - i32.const 31 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 1 + i32.shl i32.add - i32.const 5 - i32.shr_u - i32.const 2 + i32.load16_s + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 1 i32.shl - local.set $3 + i32.add + i32.load16_s + i32.const 2 + global.set $~argumentsLength local.get $3 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 i32.const 1 - i32.and + i32.shl + i32.add + i32.load16_s offset=2 + local.get $0 local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 + i32.const 1 i32.shl i32.add + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 i32.load - local.get $7 - i32.const 1 - i32.shr_s + call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 - i32.and i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end + i32.add + local.set $4 + br $while-continue|0 end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $9 - local.get $0 + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 i32.lt_s + local.set $6 + local.get $6 if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 + local.get $0 + local.get $1 + i32.const 1 i32.shl i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 + i32.load16_s + local.set $7 + local.get $0 + local.get $1 + i32.const 1 i32.shl i32.add - i32.load - i32.const 1 + local.get $0 local.get $5 - i32.const 31 - i32.and + i32.const 1 i32.shl - i32.xor - i32.store + i32.add + i32.load16_s + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 local.get $0 local.get $5 i32.const 1 i32.shl i32.add - local.get $9 + local.get $7 i32.store16 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) local.get $0 - local.get $8 + local.get $4 i32.const 1 i32.shl i32.add - local.get $10 - i32.store16 + i32.load16_s offset=2 + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 end - local.get $5 - i32.const 1 - i32.sub local.set $5 - br $for-loop|0 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end - local.get $1 + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $2 i32.const 1 i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add local.get $0 - i32.load16_s - local.set $10 - local.get $0 - local.get $0 - local.get $5 + local.get $6 + i32.const 1 + i32.sub i32.const 1 i32.shl i32.add i32.load16_s i32.store16 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 1 + i32.shl + i32.add local.get $0 - local.get $5 + local.get $7 i32.const 1 i32.shl i32.add - local.get $10 + i32.load16_s offset=2 i32.store16 + local.get $7 i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 - i32.const 1 - i32.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 - if - local.get $0 - i32.load16_s - local.set $10 - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $11 - local.get $10 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $10 - i32.store16 - local.get $0 - local.get $11 - i32.store16 - end - local.get $9 - i32.const 1 - i32.shr_s - local.set $9 - br $while-continue|4 - end - end + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $7 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $11 + local.get $4 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $12 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store16 + local.get $0 + local.get $8 i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store16 + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u i32.sub - local.set $5 + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 + i32.const 1 + i32.add + local.set $8 br $for-loop|2 end end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load16_s offset=2 - local.set $12 - local.get $0 - local.get $0 - i32.load16_s - i32.store16 offset=2 - local.get $0 - local.get $12 - i32.store16 ) - (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + i32.load16_s offset=2 + local.set $5 + local.get $0 + i32.load16_s offset=4 + local.set $6 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store16 offset=2 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + local.set $6 + local.get $0 + i32.load16_s + local.set $5 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store16 + local.get $0 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store16 offset=4 + end + local.get $0 + i32.load16_s + local.set $7 + local.get $0 + i32.load16_s offset=2 + local.set $6 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store16 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store16 offset=2 + end + end + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + local.get $4 + local.set $7 + i32.const 31 + local.get $7 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $8 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $10 + local.get $7 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + i32.const 0 + local.set $12 + local.get $4 + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $13 + i32.const 0 + local.set $14 + local.get $0 + i32.const 0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $15 + local.get $15 + i32.const 1 + i32.add + local.set $16 + local.get $16 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $6 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $15 + local.get $0 + local.get $14 + local.get $15 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $15 + local.get $3 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $15 + i32.const 1 + i32.add + local.set $7 + local.get $0 + local.get $7 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $5 + local.get $5 + local.get $7 + i32.sub + i32.const 1 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $18 + local.get $7 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.add + i32.const 1 + i32.sub + local.tee $19 + local.get $18 + local.get $19 + i32.lt_s + select + local.set $5 + local.get $0 + local.get $7 + local.get $5 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $3 + local.get $14 + local.get $7 + local.get $5 + call $~lib/util/sort/nodePower + local.set $18 + local.get $12 + local.set $19 + loop $for-loop|3 + local.get $19 + local.get $18 + i32.gt_u + local.set $20 + local.get $20 + if + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $21 + local.get $21 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $21 + local.get $11 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $15 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $21 + local.set $14 + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + end + local.get $19 + i32.const 1 + i32.sub + local.set $19 + br $for-loop|3 + end + end + local.get $10 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $14 + i32.store + local.get $11 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $7 + local.set $14 + local.get $5 + local.set $15 + local.get $18 + local.set $12 + br $while-continue|2 + end + end + local.get $12 + local.set $6 + loop $for-loop|4 + local.get $6 + i32.const 0 + i32.ne + local.set $19 + local.get $19 + if + local.get $10 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $20 + local.get $20 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $20 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + ) + (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $1 + local.set $2 local.get $3 call $~lib/typedarray/Int16Array#get:length local.set $4 @@ -34297,27 +36447,9 @@ br $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 end local.get $5 - local.set $8 local.get $4 - local.set $7 local.get $2 - local.set $6 - i32.const 0 - drop - 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 + call $~lib/util/sort/SORT local.get $3 end ) @@ -34341,73 +36473,123 @@ i32.lt_s i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) i32.const 0 - local.set $3 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 if local.get $0 - local.get $3 + local.get $6 i32.const 1 i32.shl i32.add i32.load16_u - local.set $5 - local.get $3 + local.set $8 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 i32.const 1 i32.sub - local.set $6 + local.set $12 block $while-break|1 loop $while-continue|1 - local.get $6 - i32.const 0 + local.get $12 + local.get $1 i32.ge_s - local.set $7 - local.get $7 + local.set $13 + local.get $13 if local.get $0 - local.get $6 + local.get $12 i32.const 1 i32.shl i32.add i32.load16_u local.set $8 - local.get $5 local.get $8 + local.get $11 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.gt_s if local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add + local.get $12 i32.const 1 i32.shl i32.add local.get $8 - i32.store16 + i32.store16 offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 else br $while-break|1 end @@ -34416,402 +36598,876 @@ end end local.get $0 - local.get $6 + local.get $12 i32.const 1 + i32.shl i32.add + local.get $11 + i32.store16 offset=4 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.store16 offset=2 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 i32.const 1 i32.shl i32.add - local.get $5 - i32.store16 - local.get $3 - i32.const 1 + local.get $10 + i32.store16 offset=2 + local.get $6 + i32.const 2 i32.add - local.set $3 + local.set $6 br $for-loop|0 end end ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 - local.get $3 - call $~lib/rt/tlsf/__alloc + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 local.set $4 + local.get $0 local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 + i32.shl + i32.add + i32.load16_u + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 i32.const 1 - i32.and + i32.shl + i32.add + i32.load16_u offset=2 + local.get $0 local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 + i32.const 1 i32.shl i32.add + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 i32.load - local.get $7 - i32.const 1 - i32.shr_s + call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 - i32.and i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end + i32.add + local.set $4 + br $while-continue|0 end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $9 - local.get $0 + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 i32.lt_s + local.set $6 + local.get $6 if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 + local.get $0 + local.get $1 + i32.const 1 i32.shl i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 + i32.load16_u + local.set $7 + local.get $0 + local.get $1 + i32.const 1 i32.shl i32.add - i32.load - i32.const 1 + local.get $0 local.get $5 - i32.const 31 - i32.and + i32.const 1 i32.shl - i32.xor - i32.store + i32.add + i32.load16_u + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 local.get $0 local.get $5 i32.const 1 i32.shl i32.add - local.get $9 + local.get $7 i32.store16 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) local.get $0 - local.get $8 + local.get $4 i32.const 1 i32.shl i32.add - local.get $10 - i32.store16 + i32.load16_u offset=2 + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 end - local.get $5 - i32.const 1 - i32.sub local.set $5 - br $for-loop|0 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end - local.get $1 + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $2 i32.const 1 i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 if - local.get $0 - i32.load16_u - local.set $10 - local.get $0 - local.get $0 - local.get $5 + local.get $4 + local.get $6 + i32.const 1 + i32.sub i32.const 1 i32.shl i32.add - i32.load16_u - i32.store16 local.get $0 - local.get $5 + local.get $6 + i32.const 1 + i32.sub i32.const 1 i32.shl i32.add - local.get $10 + i32.load16_u i32.store16 - i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 - i32.const 1 - i32.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 - if - local.get $0 - i32.load16_u - local.set $10 - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $11 - local.get $10 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $10 - i32.store16 - local.get $0 - local.get $11 - i32.store16 - end - local.get $9 - i32.const 1 - i32.shr_s - local.set $9 - br $while-continue|4 - end - end - local.get $5 + local.get $6 i32.const 1 i32.sub - local.set $5 - br $for-loop|2 + local.set $6 + br $for-loop|0 end end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load16_u offset=2 - local.set $12 - local.get $0 - local.get $0 - i32.load16_u - i32.store16 offset=2 - local.get $0 - local.get $12 - i32.store16 - ) - (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s + i32.lt_u + local.set $10 + local.get $10 if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + i32.store16 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq + i32.le_u + local.set $10 + local.get $10 if - local.get $5 - i32.load16_u offset=2 - local.set $6 - local.get $5 + local.get $4 + local.get $7 + i32.const 1 + i32.shl + i32.add i32.load16_u - local.set $7 + local.set $11 + local.get $4 local.get $6 - local.get $7 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $12 + local.get $11 + local.get $12 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - i32.store16 offset=2 - local.get $5 - local.get $6 - i32.store16 - end - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $5 - local.set $8 - local.get $4 - local.set $7 - local.get $2 - local.set $6 - i32.const 0 - drop - local.get $7 - i32.const 256 - i32.lt_s - if + local.set $13 + local.get $0 local.get $8 - local.get $7 - local.get $6 - call $~lib/util/sort/insertionSort - else + i32.const 1 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store16 + local.get $0 local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store16 local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 local.get $6 - call $~lib/util/sort/weakHeapSort + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|2 end - local.get $3 end ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 65535 - i32.and + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) local.get $1 - i32.const 65535 - i32.and - i32.gt_u - local.get $0 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + i32.load16_u offset=2 + local.set $5 + local.get $0 + i32.load16_u offset=4 + local.set $6 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store16 offset=2 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + local.set $6 + local.get $0 + i32.load16_u + local.set $5 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store16 + local.get $0 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store16 offset=4 + end + local.get $0 + i32.load16_u + local.set $7 + local.get $0 + i32.load16_u offset=2 + local.set $6 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store16 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store16 offset=2 + end + end + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + local.get $4 + local.set $7 + i32.const 31 + local.get $7 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $8 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $10 + local.get $7 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + i32.const 0 + local.set $12 + local.get $4 + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $13 + i32.const 0 + local.set $14 + local.get $0 + i32.const 0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $15 + local.get $15 + i32.const 1 + i32.add + local.set $16 + local.get $16 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $6 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $15 + local.get $0 + local.get $14 + local.get $15 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $15 + local.get $3 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $15 + i32.const 1 + i32.add + local.set $7 + local.get $0 + local.get $7 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $5 + local.get $5 + local.get $7 + i32.sub + i32.const 1 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $18 + local.get $7 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.add + i32.const 1 + i32.sub + local.tee $19 + local.get $18 + local.get $19 + i32.lt_s + select + local.set $5 + local.get $0 + local.get $7 + local.get $5 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $3 + local.get $14 + local.get $7 + local.get $5 + call $~lib/util/sort/nodePower + local.set $18 + local.get $12 + local.set $19 + loop $for-loop|3 + local.get $19 + local.get $18 + i32.gt_u + local.set $20 + local.get $20 + if + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $21 + local.get $21 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $21 + local.get $11 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $15 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $21 + local.set $14 + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + end + local.get $19 + i32.const 1 + i32.sub + local.set $19 + br $for-loop|3 + end + end + local.get $10 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $14 + i32.store + local.get $11 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $7 + local.set $14 + local.get $5 + local.set $15 + local.get $18 + local.set $12 + br $while-continue|2 + end + end + local.get $12 + local.set $6 + loop $for-loop|4 + local.get $6 + i32.const 0 + i32.ne + local.set $19 + local.get $19 + if + local.get $10 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $20 + local.get $20 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $20 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + ) + (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $4 + local.get $4 + i32.const 1 + i32.le_s + if + local.get $3 + br $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 + end + local.get $3 + i32.load offset=4 + local.set $5 + local.get $4 + i32.const 2 + i32.eq + if + local.get $5 + i32.load16_u offset=2 + local.set $6 + local.get $5 + i32.load16_u + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $7 + i32.store16 offset=2 + local.get $5 + local.get $6 + i32.store16 + end + local.get $3 + br $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 + end + local.get $5 + local.get $4 + local.get $2 + call $~lib/util/sort/SORT + local.get $3 + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + local.get $1 + i32.const 65535 + i32.and + i32.gt_u + local.get $0 i32.const 65535 i32.and local.get $1 @@ -34837,73 +37493,123 @@ i32.lt_u i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) i32.const 0 - local.set $3 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 if local.get $0 - local.get $3 + local.get $6 i32.const 2 i32.shl i32.add i32.load - local.set $5 - local.get $3 + local.set $8 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 i32.const 1 i32.sub - local.set $6 + local.set $12 block $while-break|1 loop $while-continue|1 - local.get $6 - i32.const 0 + local.get $12 + local.get $1 i32.ge_s - local.set $7 - local.get $7 + local.set $13 + local.get $13 if local.get $0 - local.get $6 + local.get $12 i32.const 2 i32.shl i32.add i32.load local.set $8 - local.get $5 local.get $8 + local.get $11 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.gt_s if local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add + local.get $12 i32.const 2 i32.shl i32.add local.get $8 - i32.store + i32.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 else br $while-break|1 end @@ -34912,408 +37618,388 @@ end end local.get $0 - local.get $6 - i32.const 1 - i32.add + local.get $12 i32.const 2 i32.shl i32.add - local.get $5 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 - local.get $3 - call $~lib/rt/tlsf/__alloc + local.get $11 + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $0 local.get $4 - local.get $7 - i32.const 6 - i32.shr_u i32.const 2 i32.shl i32.add i32.load - local.get $7 - i32.const 1 - i32.shr_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 - i32.and i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end + i32.add + local.set $4 + br $while-continue|0 end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - local.get $0 + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 i32.lt_s + local.set $6 + local.get $6 if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u + local.get $0 + local.get $1 i32.const 2 i32.shl i32.add - local.get $4 + i32.load + local.set $7 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 local.get $5 - i32.const 5 - i32.shr_u i32.const 2 i32.shl i32.add i32.load + i32.store + local.get $1 i32.const 1 + i32.add + local.set $1 + local.get $0 local.get $5 - i32.const 31 - i32.and + i32.const 2 i32.shl - i32.xor + i32.add + local.get $7 i32.store - local.get $0 local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 i32.const 2 i32.shl i32.add - local.get $9 - i32.store + i32.load offset=4 local.get $0 - local.get $8 + local.get $4 i32.const 2 i32.shl i32.add - local.get $10 - i32.store + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 end - local.get $5 - i32.const 1 - i32.sub local.set $5 - br $for-loop|0 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end - local.get $1 + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $2 i32.const 1 i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 + local.get $4 + local.get $6 + i32.const 1 + i32.sub i32.const 2 i32.shl i32.add - i32.load - i32.store local.get $0 - local.get $5 + local.get $6 + i32.const 1 + i32.sub i32.const 2 i32.shl i32.add - local.get $10 + i32.load i32.store - i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 - i32.const 1 - i32.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 - if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - local.get $0 - local.get $11 - i32.store - end - local.get $9 - i32.const 1 - i32.shr_s - local.set $9 - br $while-continue|4 - end - end - local.get $5 + local.get $6 i32.const 1 i32.sub - local.set $5 - br $for-loop|2 + local.set $6 + br $for-loop|0 end end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $12 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $12 - i32.store - ) - (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s + i32.lt_u + local.set $10 + local.get $10 if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq + i32.le_u + local.set $10 + local.get $10 if - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add i32.load - local.set $7 + local.set $11 + local.get $4 local.get $6 - local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $12 + local.get $11 + local.get $12 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - i32.store offset=4 - local.get $5 - local.get $6 - i32.store - end - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $5 - local.set $8 - local.get $4 - local.set $7 - local.get $2 - local.set $6 - i32.const 0 - drop - 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.set $13 + local.get $0 local.get $8 - local.get $7 - local.get $6 - call $~lib/util/sort/weakHeapSort - end - local.get $3 - end - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.gt_s - local.get $1 - local.get $0 - i32.lt_s - i32.sub + i32.const 2 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|2 + end + end ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -35321,408 +38007,444 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 0 + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + local.get $1 + i32.const 1 + i32.sub local.set $3 - loop $for-loop|0 - local.get $3 - local.get $1 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + i32.load offset=4 + local.set $5 local.get $0 + i32.load offset=8 + local.set $6 + local.get $5 local.get $6 i32.const 2 - i32.shl - i32.add + global.set $~argumentsLength + local.get $2 i32.load - local.set $8 + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 local.get $5 - local.get $8 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=4 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + local.set $6 + local.get $0 + i32.load + local.set $5 + local.get $5 + local.get $6 i32.const 2 global.set $~argumentsLength local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - br $while-break|1 - end - br $while-continue|1 + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=8 end + local.get $0 + i32.load + local.set $7 + local.get $0 + i32.load offset=4 + local.set $6 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store offset=4 end end - local.get $0 - local.get $6 - i32.const 1 - i32.add + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + local.get $4 + local.set $7 + i32.const 31 + local.get $7 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $8 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add - local.get $5 + global.get $~lib/util/sort/EMPTY i32.store - local.get $3 + local.get $7 i32.const 1 i32.add - local.set $3 - br $for-loop|0 + local.set $7 + br $for-loop|1 end end - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u + i32.const 0 + local.set $12 + local.get $4 i32.const 2 i32.shl - local.set $3 - local.get $3 call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + local.set $13 + i32.const 0 + local.set $14 + local.get $0 i32.const 0 local.get $3 - call $~lib/memory/memory.fill - local.get $1 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $15 + local.get $15 i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s + i32.add + local.set $16 + local.get $16 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $6 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $15 + local.get $0 + local.get $14 + local.get $15 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $15 + local.get $3 + i32.lt_s local.set $6 local.get $6 if - local.get $5 + local.get $15 + i32.const 1 + i32.add local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 + local.get $0 + local.get $7 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $5 + local.get $5 + local.get $7 + i32.sub + i32.const 1 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $18 local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl + global.get $~lib/util/sort/MIN_RUN_LENGTH i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 + i32.sub + local.tee $19 + local.get $18 + local.get $19 + i32.lt_s + select + local.set $5 + local.get $0 + local.get $7 + local.get $5 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $3 + local.get $14 + local.get $7 + local.get $5 + call $~lib/util/sort/nodePower + local.set $18 + local.get $12 + local.set $19 + loop $for-loop|3 + local.get $19 + local.get $18 + i32.gt_u + local.set $20 + local.get $20 if - local.get $7 + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $21 + local.get $21 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $21 + local.get $11 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $15 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $21 + local.set $14 + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + end + local.get $19 i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 + i32.sub + local.set $19 + br $for-loop|3 end end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 + local.get $10 + local.get $18 i32.const 2 i32.shl i32.add - i32.load - local.set $9 - local.get $0 - local.get $5 + local.get $14 + i32.store + local.get $11 + local.get $18 i32.const 2 i32.shl i32.add - i32.load - local.set $10 - local.get $9 + local.get $15 + i32.store + local.get $7 + local.set $14 + local.get $5 + local.set $15 + local.get $18 + local.set $12 + br $while-continue|2 + end + end + local.get $12 + local.set $6 + loop $for-loop|4 + local.get $6 + i32.const 0 + i32.ne + local.set $19 + local.get $19 + if local.get $10 + local.get $6 i32.const 2 - global.set $~argumentsLength - local.get $2 + i32.shl + i32.add i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + local.set $20 + local.get $20 + global.get $~lib/util/sort/EMPTY + i32.ne if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u + local.get $0 + local.get $20 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.load i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store - local.get $0 - local.get $8 - i32.const 2 - i32.shl i32.add - local.get $10 - i32.store + local.get $3 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns end - local.get $5 + local.get $6 i32.const 1 i32.sub - local.set $5 - br $for-loop|0 + local.set $6 + br $for-loop|4 end end - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + ) + (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + local.get $4 + i32.const 1 + i32.le_s + if + local.get $3 + br $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 + end + local.get $3 + i32.load offset=4 + local.set $5 + local.get $4 i32.const 2 - i32.ge_s - local.set $6 - local.get $6 - if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 - i32.const 1 - i32.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 - if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - local.get $0 - local.get $11 - i32.store - end - local.get $9 - i32.const 1 - i32.shr_s - local.set $9 - br $while-continue|4 - end - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|2 - end - end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $12 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $12 - i32.store - ) - (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s - if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq + i32.eq if local.get $5 i32.load offset=4 @@ -35748,118 +38470,146 @@ i32.store end local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 + br $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 end local.get $5 - local.set $8 local.get $4 - local.set $7 local.get $2 - local.set $6 - i32.const 0 - drop - 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 + call $~lib/util/sort/SORT local.get $3 end ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.gt_u + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - i32.lt_u i32.sub ) - (func $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 - i32.gt_u + i32.gt_s local.get $1 local.get $0 - i32.lt_u + i32.lt_s i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) i32.const 0 - local.set $3 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 if local.get $0 - local.get $3 - i32.const 3 + local.get $6 + i32.const 2 i32.shl i32.add - i64.load - local.set $5 - local.get $3 + i32.load + local.set $8 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 i32.const 1 i32.sub - local.set $6 + local.set $12 block $while-break|1 loop $while-continue|1 - local.get $6 - i32.const 0 + local.get $12 + local.get $1 i32.ge_s - local.set $7 - local.get $7 + local.set $13 + local.get $13 if local.get $0 - local.get $6 - i32.const 3 + local.get $12 + i32.const 2 i32.shl i32.add - i64.load + i32.load local.set $8 - local.get $5 local.get $8 + local.get $11 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load - call_indirect $0 (type $i64_i64_=>_i32) + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.gt_s if local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 3 + local.get $12 + i32.const 2 i32.shl i32.add local.get $8 - i64.store + i32.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 else br $while-break|1 end @@ -35868,311 +38618,1810 @@ end end local.get $0 - local.get $6 - i32.const 1 + local.get $12 + i32.const 2 + i32.shl i32.add - i32.const 3 + local.get $11 + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 + i32.const 2 i32.shl i32.add - local.get $5 - i64.store - local.get $3 - i32.const 1 + local.get $10 + i32.store offset=4 + local.get $6 + i32.const 2 i32.add - local.set $3 + local.set $6 br $for-loop|0 end end ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i64) - (local $11 i32) - (local $12 i64) local.get $1 - i32.const 31 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl i32.add - i32.const 5 - i32.shr_u + i32.load + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 i32.const 2 i32.shl - local.set $3 + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength local.get $3 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $0 local.get $4 - local.get $7 - i32.const 6 - i32.shr_u i32.const 2 i32.shl i32.add i32.load - local.get $7 - i32.const 1 - i32.shr_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 - i32.and i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end + i32.add + local.set $4 + br $while-continue|0 end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $9 - local.get $0 + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 i32.lt_s + local.set $6 + local.get $6 if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u + local.get $0 + local.get $1 i32.const 2 i32.shl i32.add - local.get $4 + i32.load + local.set $7 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 local.get $5 - i32.const 5 - i32.shr_u i32.const 2 i32.shl i32.add i32.load + i32.store + local.get $1 i32.const 1 + i32.add + local.set $1 + local.get $0 local.get $5 - i32.const 31 - i32.and + i32.const 2 i32.shl - i32.xor + i32.add + local.get $7 i32.store - local.get $0 local.get $5 - i32.const 3 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 i32.shl i32.add - local.get $9 - i64.store + i32.load offset=4 local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $12 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + i32.store + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + i32.load offset=4 + local.set $5 + local.get $0 + i32.load offset=8 + local.set $6 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=4 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + local.set $6 + local.get $0 + i32.load + local.set $5 + local.get $5 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $7 + local.get $0 + local.get $5 + local.get $6 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $5 + local.get $7 + i32.const 31 + i32.shr_u + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $7 + local.get $0 + i32.load offset=4 + local.set $6 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i32.store offset=4 + end + end + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + local.get $4 + local.set $7 + i32.const 31 + local.get $7 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $8 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $10 + local.get $7 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + i32.const 0 + local.set $12 + local.get $4 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $13 + i32.const 0 + local.set $14 + local.get $0 + i32.const 0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $15 + local.get $15 + i32.const 1 + i32.add + local.set $16 + local.get $16 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $6 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $15 + local.get $0 + local.get $14 + local.get $15 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $15 + local.get $3 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $15 + i32.const 1 + i32.add + local.set $7 + local.get $0 + local.get $7 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $5 + local.get $5 + local.get $7 + i32.sub + i32.const 1 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $18 + local.get $7 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.add + i32.const 1 + i32.sub + local.tee $19 + local.get $18 + local.get $19 + i32.lt_s + select + local.set $5 + local.get $0 + local.get $7 + local.get $5 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $3 + local.get $14 + local.get $7 + local.get $5 + call $~lib/util/sort/nodePower + local.set $18 + local.get $12 + local.set $19 + loop $for-loop|3 + local.get $19 + local.get $18 + i32.gt_u + local.set $20 + local.get $20 + if + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $21 + local.get $21 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $21 + local.get $11 + local.get $19 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $15 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $21 + local.set $14 + local.get $10 + local.get $19 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + end + local.get $19 + i32.const 1 + i32.sub + local.set $19 + br $for-loop|3 + end + end + local.get $10 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $14 + i32.store + local.get $11 + local.get $18 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $7 + local.set $14 + local.get $5 + local.set $15 + local.get $18 + local.set $12 + br $while-continue|2 + end + end + local.get $12 + local.set $6 + loop $for-loop|4 + local.get $6 + i32.const 0 + i32.ne + local.set $19 + local.get $19 + if + local.get $10 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $20 + local.get $20 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $20 + local.get $11 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $13 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|4 + end + end + local.get $13 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 + call $~lib/rt/tlsf/__free + ) + (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + local.get $0 + local.set $3 + local.get $1 + local.set $2 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $4 + local.get $4 + i32.const 1 + i32.le_s + if + local.get $3 + br $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 + end + local.get $3 + i32.load offset=4 + local.set $5 + local.get $4 + i32.const 2 + i32.eq + if + local.get $5 + i32.load offset=4 + local.set $6 + local.get $5 + i32.load + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $7 + i32.store offset=4 + local.get $5 + local.get $6 + i32.store + end + local.get $3 + br $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 + end + local.get $5 + local.get $4 + local.get $2 + call $~lib/util/sort/SORT + local.get $3 + end + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.gt_u + local.get $0 + local.get $1 + i32.lt_u + i32.sub + ) + (func $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.gt_u + local.get $1 + local.get $0 + i32.lt_u + i32.sub + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i32) + (local $13 i32) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 + if + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $8 + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.le_s + if local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 + i32.const 1 + i32.sub + local.set $12 + block $while-break|1 + loop $while-continue|1 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $8 + local.get $8 + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $8 + i64.store offset=16 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $11 + i64.store offset=16 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $8 + i64.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $10 + i64.store offset=8 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + local.get $0 + local.get $1 i32.const 3 i32.shl i32.add - local.get $10 + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + local.get $7 i64.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 end - local.get $5 - i32.const 1 - i32.sub local.set $5 - br $for-loop|0 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end end - local.get $1 + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i64) + (local $12 i64) + (local $13 i32) + local.get $2 i32.const 1 i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add i64.load - local.set $10 - local.get $0 + i64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 3 + i32.shl + i32.add local.get $0 - local.get $5 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + i64.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $7 i32.const 3 i32.shl i32.add i64.load + local.set $11 + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $12 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select i64.store local.get $0 - local.get $5 + local.get $8 i32.const 3 i32.shl i32.add - local.get $10 + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select i64.store + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 i32.const 1 + i32.add local.set $8 - loop $while-continue|3 - local.get $8 - i32.const 1 - i32.shl - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $8 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $7 - local.get $5 - i32.lt_s - local.set $11 - local.get $11 - if - local.get $7 - local.set $8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $8 - i32.const 0 - i32.gt_s - local.set $11 - local.get $11 - if + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + i64.load offset=8 + local.set $6 + local.get $0 + i64.load offset=16 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + local.set $5 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i64.store offset=8 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + local.set $7 + local.get $0 + i64.load + local.set $6 + local.get $6 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + local.set $5 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i64.store + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i64.store offset=16 + end local.get $0 i64.load - local.set $10 + local.set $7 local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $9 - local.get $10 - local.get $9 + i64.load offset=8 + local.set $6 + local.get $7 + local.get $6 i32.const 2 global.set $~argumentsLength local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.lt_s + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i64.store + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i64.store offset=8 + end + end + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + local.get $4 + local.set $5 + i32.const 31 + local.get $5 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $8 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 + i32.const 0 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $8 + i32.lt_u + local.set $12 + local.get $12 + if + local.get $10 + local.get $5 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + i32.const 0 + local.set $13 + local.get $4 + i32.const 3 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $14 + i32.const 0 + local.set $15 + local.get $0 + i32.const 0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $16 + local.get $16 + i32.const 1 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $12 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $5 + local.get $12 + local.get $5 + i32.lt_s + select + local.set $16 + local.get $0 + local.get $15 + local.get $16 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $16 + local.get $3 + i32.lt_s + local.set $12 + local.get $12 + if + local.get $16 + i32.const 1 + i32.add + local.set $5 + local.get $0 + local.get $5 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $18 + local.get $18 + local.get $5 + i32.sub + i32.const 1 + i32.add + local.set $19 + local.get $19 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $20 + local.get $5 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.add + i32.const 1 + i32.sub + local.tee $21 + local.get $20 + local.get $21 + i32.lt_s + select + local.set $18 + local.get $0 + local.get $5 + local.get $18 + local.get $19 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $3 + local.get $15 + local.get $5 + local.get $18 + call $~lib/util/sort/nodePower + local.set $20 + local.get $13 + local.set $21 + loop $for-loop|3 + local.get $21 + local.get $20 + i32.gt_u + local.set $22 + local.get $22 + if + local.get $10 + local.get $21 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $23 + local.get $23 + global.get $~lib/util/sort/EMPTY + i32.ne if - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $8 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store local.get $0 - local.get $8 - i32.const 3 + local.get $23 + local.get $11 + local.get $21 + i32.const 2 i32.shl i32.add + i32.load + i32.const 1 + i32.add + local.get $16 + local.get $14 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $23 + local.set $15 local.get $10 - i64.store - local.get $0 - local.get $9 - i64.store + local.get $21 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store end - local.get $8 + local.get $21 i32.const 1 - i32.shr_s - local.set $8 - br $while-continue|4 + i32.sub + local.set $21 + br $for-loop|3 end end + local.get $10 + local.get $20 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $11 + local.get $20 + i32.const 2 + i32.shl + i32.add + local.get $16 + i32.store local.get $5 + local.set $15 + local.get $18 + local.set $16 + local.get $20 + local.set $13 + br $while-continue|2 + end + end + local.get $13 + local.set $12 + loop $for-loop|4 + local.get $12 + i32.const 0 + i32.ne + local.set $21 + local.get $21 + if + local.get $10 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $22 + local.get $22 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $22 + local.get $11 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $14 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $12 i32.const 1 i32.sub - local.set $5 - br $for-loop|2 + local.set $12 + br $for-loop|4 end end - local.get $4 + local.get $14 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 call $~lib/rt/tlsf/__free - local.get $0 - i64.load offset=8 - local.set $12 - local.get $0 - local.get $0 - i64.load - i64.store offset=8 - local.get $0 - local.get $12 - i64.store ) (func $~lib/typedarray/Int64Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -36181,9 +40430,6 @@ (local $5 i32) (local $6 i64) (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i32) block $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 local.set $3 @@ -36233,27 +40479,9 @@ br $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 end local.get $5 - local.set $10 local.get $4 - local.set $9 local.get $2 - local.set $8 - i32.const 0 - drop - 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 + call $~lib/util/sort/SORT local.get $3 end ) @@ -36275,73 +40503,123 @@ i64.lt_s i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i64) - (local $9 i32) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i32) + (local $13 i32) i32.const 0 - local.set $3 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 if local.get $0 - local.get $3 + local.get $6 i32.const 3 i32.shl i32.add i64.load - local.set $5 - local.get $3 + local.set $8 + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 i32.const 1 i32.sub - local.set $6 + local.set $12 block $while-break|1 loop $while-continue|1 - local.get $6 - i32.const 0 + local.get $12 + local.get $1 i32.ge_s - local.set $7 - local.get $7 + local.set $13 + local.get $13 if local.get $0 - local.get $6 + local.get $12 i32.const 3 i32.shl i32.add i64.load local.set $8 - local.get $5 local.get $8 + local.get $11 i32.const 2 global.set $~argumentsLength - local.get $2 + local.get $4 i32.load call_indirect $0 (type $i64_i64_=>_i32) i32.const 0 - i32.lt_s + i32.gt_s if local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add + local.get $12 i32.const 3 i32.shl i32.add local.get $8 - i64.store + i64.store offset=16 + local.get $12 + i32.const 1 + i32.sub + local.set $12 else br $while-break|1 end @@ -36350,311 +40628,806 @@ end end local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $11 + i64.store offset=16 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $8 + i64.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $10 + i64.store offset=8 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $7 + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i64) + (local $12 i64) + (local $13 i32) + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 3 + i32.shl + i32.add + i64.load + i64.store local.get $6 i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 3 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + i64.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $7 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $11 + local.get $4 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $12 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 3 + i32.shl i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + i64.store + local.get $0 + local.get $8 i32.const 3 i32.shl i32.add - local.get $5 + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select i64.store - local.get $3 + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 i32.const 1 i32.add - local.set $3 - br $for-loop|0 + local.set $8 + br $for-loop|2 end end ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) + (local $6 i64) + (local $7 i64) (local $8 i32) - (local $9 i64) - (local $10 i64) + (local $9 i32) + (local $10 i32) (local $11 i32) - (local $12 i64) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + i64.load offset=8 + local.set $6 + local.get $0 + i64.load offset=16 + local.set $7 + local.get $6 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + local.set $5 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i64.store offset=8 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + local.set $7 + local.get $0 + i64.load + local.set $6 + local.get $6 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + local.set $5 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i64.store + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i64.store offset=16 + end + local.get $0 + i64.load + local.set $7 + local.get $0 + i64.load offset=8 + local.set $6 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + i64.store + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + i64.store offset=8 + end + end + return + end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + local.get $4 + local.set $5 i32.const 31 + local.get $5 + i32.clz + i32.sub + i32.const 2 i32.add - i32.const 5 - i32.shr_u + local.set $8 + local.get $8 i32.const 2 i32.shl - local.set $3 - local.get $3 + local.set $9 + local.get $9 call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub local.set $5 - loop $for-loop|0 + loop $for-loop|1 local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 + local.get $8 + i32.lt_u + local.set $12 + local.get $12 if + local.get $10 local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $9 - local.get $0 - local.get $5 - i32.const 3 + i32.const 2 i32.shl i32.add - i64.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.get $9 - i64.store - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - local.get $10 - i64.store - end + global.get $~lib/util/sort/EMPTY + i32.store local.get $5 i32.const 1 - i32.sub + i32.add local.set $5 - br $for-loop|0 + br $for-loop|1 end end - local.get $1 + i32.const 0 + local.set $13 + local.get $4 + i32.const 3 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $14 + i32.const 0 + local.set $15 + local.get $0 + i32.const 0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $16 + local.get $16 i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $12 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $5 + local.get $12 local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 + i32.lt_s + select + local.set $16 + local.get $0 + local.get $15 + local.get $16 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $16 + local.get $3 + i32.lt_s + local.set $12 + local.get $12 if - local.get $0 - i64.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 - i32.const 3 - i32.shl + local.get $16 + i32.const 1 i32.add - i64.load - i64.store + local.set $5 local.get $0 local.get $5 - i32.const 3 - i32.shl - i32.add - local.get $10 - i64.store + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $18 + local.get $18 + local.get $5 + i32.sub i32.const 1 - local.set $8 - loop $while-continue|3 - local.get $8 - i32.const 1 - i32.shl - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl + i32.add + local.set $19 + local.get $19 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $20 + local.get $5 + global.get $~lib/util/sort/MIN_RUN_LENGTH i32.add - i32.load - local.get $8 - i32.const 31 - i32.and - i32.shr_u i32.const 1 - i32.and - i32.add - local.tee $7 - local.get $5 + i32.sub + local.tee $21 + local.get $20 + local.get $21 i32.lt_s - local.set $11 - local.get $11 - if - local.get $7 - local.set $8 - br $while-continue|3 - end + select + local.set $18 + local.get $0 + local.get $5 + local.get $18 + local.get $19 + local.get $2 + call $~lib/util/sort/insertionSort end - loop $while-continue|4 - local.get $8 - i32.const 0 - i32.gt_s - local.set $11 - local.get $11 + i32.const 0 + local.get $3 + local.get $15 + local.get $5 + local.get $18 + call $~lib/util/sort/nodePower + local.set $20 + local.get $13 + local.set $21 + loop $for-loop|3 + local.get $21 + local.get $20 + i32.gt_u + local.set $22 + local.get $22 if - local.get $0 - i64.load - local.set $10 - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $9 local.get $10 - local.get $9 + local.get $21 i32.const 2 - global.set $~argumentsLength - local.get $2 + i32.shl + i32.add i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.lt_s + local.set $23 + local.get $23 + global.get $~lib/util/sort/EMPTY + i32.ne if - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u + local.get $0 + local.get $23 + local.get $11 + local.get $21 i32.const 2 i32.shl i32.add i32.load i32.const 1 - local.get $8 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $8 - i32.const 3 - i32.shl i32.add + local.get $16 + local.get $14 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $23 + local.set $15 local.get $10 - i64.store - local.get $0 - local.get $9 - i64.store + local.get $21 + i32.const 2 + i32.shl + i32.add + global.get $~lib/util/sort/EMPTY + i32.store end - local.get $8 + local.get $21 i32.const 1 - i32.shr_s - local.set $8 - br $while-continue|4 + i32.sub + local.set $21 + br $for-loop|3 end end + local.get $10 + local.get $20 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $11 + local.get $20 + i32.const 2 + i32.shl + i32.add + local.get $16 + i32.store local.get $5 + local.set $15 + local.get $18 + local.set $16 + local.get $20 + local.set $13 + br $while-continue|2 + end + end + local.get $13 + local.set $12 + loop $for-loop|4 + local.get $12 + i32.const 0 + i32.ne + local.set $21 + local.get $21 + if + local.get $10 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $22 + local.get $22 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $22 + local.get $11 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $14 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $12 i32.const 1 i32.sub - local.set $5 - br $for-loop|2 + local.set $12 + br $for-loop|4 end end - local.get $4 + local.get $14 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 call $~lib/rt/tlsf/__free - local.get $0 - i64.load offset=8 - local.set $12 - local.get $0 - local.get $0 - i64.load - i64.store offset=8 - local.get $0 - local.get $12 - i64.store ) (func $~lib/typedarray/Uint64Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -36663,9 +41436,6 @@ (local $5 i32) (local $6 i64) (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i32) block $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 local.set $3 @@ -36715,27 +41485,9 @@ br $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 end local.get $5 - local.set $10 local.get $4 - local.set $9 local.get $2 - local.set $8 - i32.const 0 - drop - 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 + call $~lib/util/sort/SORT local.get $3 end ) @@ -36757,386 +41509,931 @@ i64.lt_u i32.sub ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 f32) - (local $9 i32) + (local $9 f32) + (local $10 f32) + (local $11 f32) + (local $12 i32) + (local $13 i32) i32.const 0 - local.set $3 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 loop $for-loop|0 - local.get $3 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 if local.get $0 - local.get $3 + local.get $6 i32.const 2 i32.shl i32.add f32.load - local.set $5 - local.get $3 + local.set $8 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 i32.const 1 i32.sub - local.set $6 + local.set $12 block $while-break|1 loop $while-continue|1 - local.get $6 - i32.const 0 + local.get $12 + local.get $1 i32.ge_s - local.set $7 - local.get $7 + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $8 + local.get $8 + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $11 + f32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 if local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + f32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 f32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $7 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + f32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 f32) + (local $12 f32) + (local $13 i32) + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $9 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.gt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + f32.load + f32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $9 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + f32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $8 + loop $for-loop|2 + local.get $8 + local.get $3 + i32.le_u + local.set $10 + local.get $10 + if + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $12 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + local.set $13 + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + i32.const 31 + i32.shr_u + select + f32.store + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $12 + local.get $11 + local.get $13 + i32.const 31 + i32.shr_u + select + f32.store + local.get $7 + local.get $13 + i32.const 31 + i32.shr_u + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 0 + i32.ge_s + i32.add + local.set $6 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 f32) + (local $7 f32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $1 + local.set $4 + local.get $4 + global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.le_s + if + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $4 + local.set $5 + local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case3|0 + br $break|0 + end + local.get $0 + f32.load offset=4 + local.set $6 + local.get $0 + f32.load offset=8 + local.set $7 local.get $6 + local.get $7 i32.const 2 - i32.shl - i32.add - f32.load - local.set $8 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + local.set $5 + local.get $0 + local.get $6 + local.get $7 local.get $5 - local.get $8 + i32.const 31 + i32.shr_u + select + f32.store offset=4 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + local.set $7 + local.get $0 + f32.load + local.set $6 + local.get $6 + local.get $7 i32.const 2 global.set $~argumentsLength local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - f32.store - else - br $while-break|1 - end - br $while-continue|1 + local.set $5 + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + f32.store + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + f32.store offset=8 end + local.get $0 + f32.load + local.set $7 + local.get $0 + f32.load offset=4 + local.set $6 + local.get $7 + local.get $6 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + local.set $5 + local.get $0 + local.get $7 + local.get $6 + local.get $5 + i32.const 31 + i32.shr_u + select + f32.store + local.get $0 + local.get $6 + local.get $7 + local.get $5 + i32.const 31 + i32.shr_u + select + f32.store offset=4 end end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - f32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + return end + local.get $0 + i32.const 0 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return end - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) - (local $10 f32) - (local $11 i32) - (local $12 f32) - local.get $1 + local.get $4 + local.set $5 i32.const 31 + local.get $5 + i32.clz + i32.sub + i32.const 2 i32.add - i32.const 5 - i32.shr_u + local.set $8 + local.get $8 i32.const 2 i32.shl - local.set $3 - local.get $3 + local.set $9 + local.get $9 call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + local.set $10 + local.get $9 + call $~lib/rt/tlsf/__alloc + local.set $11 i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub local.set $5 - loop $for-loop|0 + loop $for-loop|1 local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 + local.get $8 + i32.lt_u + local.set $12 + local.get $12 if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $9 - local.get $0 + local.get $10 local.get $5 i32.const 2 i32.shl i32.add - f32.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $9 - f32.store - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $10 - f32.store - end + global.get $~lib/util/sort/EMPTY + i32.store local.get $5 i32.const 1 - i32.sub + i32.add local.set $5 - br $for-loop|0 + br $for-loop|1 end end - local.get $1 + i32.const 0 + local.set $13 + local.get $4 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $14 + i32.const 0 + local.set $15 + local.get $0 + i32.const 0 + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $16 + local.get $16 i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 + i32.add + local.set $17 + local.get $17 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $12 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 1 + i32.sub + local.tee $5 + local.get $12 local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 + i32.lt_s + select + local.set $16 + local.get $0 + local.get $15 + local.get $16 + local.get $17 + local.get $2 + call $~lib/util/sort/insertionSort + end + loop $while-continue|2 + local.get $16 + local.get $3 + i32.lt_s + local.set $12 + local.get $12 if - local.get $0 - f32.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 - i32.const 2 - i32.shl + local.get $16 + i32.const 1 i32.add - f32.load - f32.store + local.set $5 local.get $0 local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $10 - f32.store + local.get $3 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $18 + local.get $18 + local.get $5 + i32.sub i32.const 1 - local.set $8 - loop $while-continue|3 - local.get $8 - i32.const 1 - i32.shl - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl + i32.add + local.set $19 + local.get $19 + global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.lt_s + if + local.get $3 + local.tee $20 + local.get $5 + global.get $~lib/util/sort/MIN_RUN_LENGTH i32.add - i32.load - local.get $8 - i32.const 31 - i32.and - i32.shr_u i32.const 1 - i32.and - i32.add - local.tee $7 - local.get $5 + i32.sub + local.tee $21 + local.get $20 + local.get $21 i32.lt_s - local.set $11 - local.get $11 - if - local.get $7 - local.set $8 - br $while-continue|3 - end + select + local.set $18 + local.get $0 + local.get $5 + local.get $18 + local.get $19 + local.get $2 + call $~lib/util/sort/insertionSort end - loop $while-continue|4 - local.get $8 - i32.const 0 - i32.gt_s - local.set $11 - local.get $11 + i32.const 0 + local.get $3 + local.get $15 + local.get $5 + local.get $18 + call $~lib/util/sort/nodePower + local.set $20 + local.get $13 + local.set $21 + loop $for-loop|3 + local.get $21 + local.get $20 + i32.gt_u + local.set $22 + local.get $22 if - local.get $0 - f32.load - local.set $10 - local.get $0 - local.get $8 + local.get $10 + local.get $21 i32.const 2 i32.shl i32.add - f32.load - local.set $9 - local.get $10 - local.get $9 - i32.const 2 - global.set $~argumentsLength - local.get $2 i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s + local.set $23 + local.get $23 + global.get $~lib/util/sort/EMPTY + i32.ne if - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u + local.get $0 + local.get $23 + local.get $11 + local.get $21 i32.const 2 i32.shl i32.add i32.load i32.const 1 - local.get $8 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $8 + i32.add + local.get $16 + local.get $14 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $23 + local.set $15 + local.get $10 + local.get $21 i32.const 2 i32.shl i32.add - local.get $10 - f32.store - local.get $0 - local.get $9 - f32.store + global.get $~lib/util/sort/EMPTY + i32.store end - local.get $8 + local.get $21 i32.const 1 - i32.shr_s - local.set $8 - br $while-continue|4 + i32.sub + local.set $21 + br $for-loop|3 end end + local.get $10 + local.get $20 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $11 + local.get $20 + i32.const 2 + i32.shl + i32.add + local.get $16 + i32.store local.get $5 + local.set $15 + local.get $18 + local.set $16 + local.get $20 + local.set $13 + br $while-continue|2 + end + end + local.get $13 + local.set $12 + loop $for-loop|4 + local.get $12 + i32.const 0 + i32.ne + local.set $21 + local.get $21 + if + local.get $10 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $22 + local.get $22 + global.get $~lib/util/sort/EMPTY + i32.ne + if + local.get $0 + local.get $22 + local.get $11 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $3 + local.get $14 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $12 i32.const 1 i32.sub - local.set $5 - br $for-loop|2 + local.set $12 + br $for-loop|4 end end - local.get $4 + local.get $14 + call $~lib/rt/tlsf/__free + local.get $11 + call $~lib/rt/tlsf/__free + local.get $10 call $~lib/rt/tlsf/__free - local.get $0 - f32.load offset=4 - local.set $12 - local.get $0 - local.get $0 - f32.load - f32.store offset=4 - local.get $0 - local.get $12 - f32.store ) (func $~lib/typedarray/Float32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -37145,9 +42442,6 @@ (local $5 i32) (local $6 f32) (local $7 f32) - (local $8 i32) - (local $9 i32) - (local $10 i32) block $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 local.set $3 @@ -37197,27 +42491,9 @@ br $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $5 - local.set $10 local.get $4 - local.set $9 local.get $2 - local.set $8 - i32.const 0 - drop - 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 + call $~lib/util/sort/SORT local.get $3 end ) From 9cb9fe22032d16a4e774d5c8166459b828b67826 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 14 Jun 2021 20:55:41 +0300 Subject: [PATCH 02/29] fix fixtures --- tests/compiler/std/dataview.optimized.wat | 64 ++-- tests/compiler/std/map.optimized.wat | 150 ++++++---- tests/compiler/std/math.optimized.wat | 8 +- tests/compiler/std/set.optimized.wat | 120 +++++--- tests/compiler/std/typedarray.optimized.wat | 314 +++++--------------- 5 files changed, 280 insertions(+), 376 deletions(-) diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 22ff198433..ba303662a9 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -3012,8 +3012,9 @@ i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.extend16_s - i32.const -7946 + i32.const 65535 + i32.and + i32.const 57590 i32.ne if i32.const 0 @@ -3027,7 +3028,8 @@ i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.extend16_s + i32.const 65535 + i32.and i32.const 22752 i32.ne if @@ -3042,8 +3044,9 @@ i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.extend16_s - i32.const -24744 + i32.const 65535 + i32.and + i32.const 40792 i32.ne if i32.const 0 @@ -3057,8 +3060,9 @@ i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.extend16_s - i32.const -32097 + i32.const 65535 + i32.and + i32.const 33439 i32.ne if i32.const 0 @@ -3072,7 +3076,8 @@ i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.extend16_s + i32.const 65535 + i32.and i32.const 25986 i32.ne if @@ -3087,7 +3092,8 @@ i32.const 5 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.extend16_s + i32.const 65535 + i32.and i32.const 17253 i32.ne if @@ -3102,7 +3108,8 @@ i32.const 6 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.extend16_s + i32.const 65535 + i32.and i32.const 24387 i32.ne if @@ -3117,8 +3124,9 @@ i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.extend16_s - i32.const -2336 + i32.const 65535 + i32.and + i32.const 63200 i32.ne if i32.const 0 @@ -3132,8 +3140,9 @@ i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.extend16_s - i32.const -8104 + i32.const 65535 + i32.and + i32.const 57432 i32.ne if i32.const 0 @@ -3147,7 +3156,8 @@ i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.extend16_s + i32.const 65535 + i32.and i32.const 22687 i32.ne if @@ -3162,8 +3172,9 @@ i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.extend16_s - i32.const -24702 + i32.const 65535 + i32.and + i32.const 40834 i32.ne if i32.const 0 @@ -3177,8 +3188,9 @@ i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.extend16_s - i32.const -32155 + i32.const 65535 + i32.and + i32.const 33381 i32.ne if i32.const 0 @@ -3192,7 +3204,8 @@ i32.const 5 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.extend16_s + i32.const 65535 + i32.and i32.const 25923 i32.ne if @@ -3207,7 +3220,8 @@ i32.const 6 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.extend16_s + i32.const 65535 + i32.and i32.const 17247 i32.ne if @@ -3984,8 +3998,9 @@ i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.extend16_s - i32.const -13360 + i32.const 65535 + i32.and + i32.const 52176 i32.ne if i32.const 0 @@ -4003,7 +4018,8 @@ i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.extend16_s + i32.const 65535 + i32.and i32.const 14689 i32.ne if diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 87a0ba14a8..dce4a4e111 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -2014,9 +2014,10 @@ i32.const 0 else local.get $0 - i32.load8_s + i32.load8_u local.get $1 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -3419,9 +3420,10 @@ i32.const 0 else local.get $1 - i32.load8_s + i32.load8_u local.get $2 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -3666,9 +3668,10 @@ i32.const 0 else local.get $3 - i32.load8_s + i32.load8_u local.get $1 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -3750,9 +3753,10 @@ i32.const 0 else local.get $3 - i32.load8_s + i32.load8_u local.get $1 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find1 @@ -3871,9 +3875,10 @@ i32.const 0 else local.get $3 - i32.load8_s + i32.load8_u local.get $1 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find4 @@ -3972,9 +3977,10 @@ i32.const 0 else local.get $3 - i32.load8_s + i32.load8_u local.get $1 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find7 @@ -4327,9 +4333,10 @@ i32.const 0 else local.get $16 - i32.load8_s + i32.load8_u local.get $2 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find11 @@ -4408,9 +4415,10 @@ i32.const 0 else local.get $0 - i32.load8_s + i32.load8_u local.get $4 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find14 @@ -4501,9 +4509,10 @@ i32.const 0 else local.get $0 - i32.load8_s + i32.load8_u local.get $4 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -4844,9 +4853,10 @@ i32.const 0 else local.get $16 - i32.load8_s + i32.load8_u local.get $2 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find20 @@ -4941,9 +4951,10 @@ i32.const 0 else local.get $16 - i32.load8_s + i32.load8_u local.get $2 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find23 @@ -5045,9 +5056,10 @@ i32.const 0 else local.get $16 - i32.load8_s + i32.load8_u local.get $2 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find26 @@ -5129,9 +5141,10 @@ i32.const 0 else local.get $16 - i32.load8_s + i32.load8_u local.get $2 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find29 @@ -5210,9 +5223,10 @@ i32.const 0 else local.get $16 - i32.load8_s + i32.load8_u local.get $2 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find32 @@ -7661,9 +7675,10 @@ i32.const 0 else local.get $0 - i32.load16_s + i32.load16_u local.get $1 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -7785,9 +7800,10 @@ i32.const 0 else local.get $1 - i32.load16_s + i32.load16_u local.get $2 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -8001,9 +8017,10 @@ i32.const 0 else local.get $3 - i32.load16_s + i32.load16_u local.get $1 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -8085,9 +8102,10 @@ i32.const 0 else local.get $3 - i32.load16_s + i32.load16_u local.get $1 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find1 @@ -8206,9 +8224,10 @@ i32.const 0 else local.get $3 - i32.load16_s + i32.load16_u local.get $1 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find4 @@ -8307,9 +8326,10 @@ i32.const 0 else local.get $3 - i32.load16_s + i32.load16_u local.get $1 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find7 @@ -8666,9 +8686,10 @@ i32.const 0 else local.get $16 - i32.load16_s + i32.load16_u local.get $2 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find11 @@ -8747,9 +8768,10 @@ i32.const 0 else local.get $0 - i32.load16_s + i32.load16_u local.get $4 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find14 @@ -8840,9 +8862,10 @@ i32.const 0 else local.get $0 - i32.load16_s + i32.load16_u local.get $4 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -9183,9 +9206,10 @@ i32.const 0 else local.get $16 - i32.load16_s + i32.load16_u local.get $2 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find20 @@ -9280,9 +9304,10 @@ i32.const 0 else local.get $16 - i32.load16_s + i32.load16_u local.get $2 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find23 @@ -9384,9 +9409,10 @@ i32.const 0 else local.get $16 - i32.load16_s + i32.load16_u local.get $2 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find26 @@ -9468,9 +9494,10 @@ i32.const 0 else local.get $16 - i32.load16_s + i32.load16_u local.get $2 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find29 @@ -9549,9 +9576,10 @@ i32.const 0 else local.get $16 - i32.load16_s + i32.load16_u local.get $2 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find32 @@ -22425,9 +22453,10 @@ i32.const 0 else local.get $1 - i32.load8_s + i32.load8_u local.get $3 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -23196,9 +23225,10 @@ i32.const 0 else local.get $1 - i32.load16_s + i32.load16_u local.get $3 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/map/Map#find diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index 911b8938bf..2e5c82ed14 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -56589,7 +56589,8 @@ i32.const 1 i32.const 3 call $~lib/math/ipow32 - i32.extend8_s + i32.const 255 + i32.and i32.const 1 i32.ne if @@ -56603,8 +56604,9 @@ i32.const -2 i32.const 3 call $~lib/math/ipow32 - i32.extend8_s - i32.const -8 + i32.const 255 + i32.and + i32.const 248 i32.ne if i32.const 0 diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 2e71a2df2a..a995ee1b72 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -2006,9 +2006,10 @@ i32.const 0 else local.get $2 - i32.load8_s + i32.load8_u local.get $1 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -3269,9 +3270,10 @@ i32.const 0 else local.get $1 - i32.load8_s + i32.load8_u local.get $2 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -3459,9 +3461,10 @@ i32.const 0 else local.get $1 - i32.load8_s + i32.load8_u local.get $0 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -3539,9 +3542,10 @@ i32.const 0 else local.get $1 - i32.load8_s + i32.load8_u local.get $0 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find1 @@ -3644,9 +3648,10 @@ i32.const 0 else local.get $1 - i32.load8_s + i32.load8_u local.get $0 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find4 @@ -3725,9 +3730,10 @@ i32.const 0 else local.get $1 - i32.load8_s + i32.load8_u local.get $0 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find7 @@ -3987,9 +3993,10 @@ i32.const 0 else local.get $0 - i32.load8_s + i32.load8_u local.get $6 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find11 @@ -4098,9 +4105,10 @@ i32.const 0 else local.get $0 - i32.load8_s + i32.load8_u local.get $3 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find14 @@ -4179,9 +4187,10 @@ i32.const 0 else local.get $0 - i32.load8_s + i32.load8_u local.get $3 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find17 @@ -4283,9 +4292,10 @@ i32.const 0 else local.get $0 - i32.load8_s + i32.load8_u local.get $3 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find20 @@ -4363,9 +4373,10 @@ i32.const 0 else local.get $0 - i32.load8_s + i32.load8_u local.get $3 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find23 @@ -4444,9 +4455,10 @@ i32.const 0 else local.get $0 - i32.load8_s + i32.load8_u local.get $3 - i32.extend8_s + i32.const 255 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find26 @@ -6346,9 +6358,10 @@ i32.const 0 else local.get $2 - i32.load16_s + i32.load16_u local.get $1 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -6550,9 +6563,10 @@ i32.const 0 else local.get $1 - i32.load16_s + i32.load16_u local.get $2 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -6709,9 +6723,10 @@ i32.const 0 else local.get $1 - i32.load16_s + i32.load16_u local.get $0 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find @@ -6789,9 +6804,10 @@ i32.const 0 else local.get $1 - i32.load16_s + i32.load16_u local.get $0 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find1 @@ -6894,9 +6910,10 @@ i32.const 0 else local.get $1 - i32.load16_s + i32.load16_u local.get $0 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find4 @@ -6975,9 +6992,10 @@ i32.const 0 else local.get $1 - i32.load16_s + i32.load16_u local.get $0 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find7 @@ -7239,9 +7257,10 @@ i32.const 0 else local.get $0 - i32.load16_s + i32.load16_u local.get $6 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find11 @@ -7350,9 +7369,10 @@ i32.const 0 else local.get $0 - i32.load16_s + i32.load16_u local.get $3 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find14 @@ -7431,9 +7451,10 @@ i32.const 0 else local.get $0 - i32.load16_s + i32.load16_u local.get $3 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find17 @@ -7535,9 +7556,10 @@ i32.const 0 else local.get $0 - i32.load16_s + i32.load16_u local.get $3 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find20 @@ -7615,9 +7637,10 @@ i32.const 0 else local.get $0 - i32.load16_s + i32.load16_u local.get $3 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find23 @@ -7696,9 +7719,10 @@ i32.const 0 else local.get $0 - i32.load16_s + i32.load16_u local.get $3 - i32.extend16_s + i32.const 65535 + i32.and i32.eq end br_if $__inlined_func$~lib/set/Set#find26 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 94957948be..529471a1d8 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -628,7 +628,7 @@ (data (i32.const 15420) "B\08\00\00\00\00\00\00\02\t") (data (i32.const 15788) "\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00B\00\00\00\00\00\00\00\82\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02\02") (table $0 144 funcref) - (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0) + (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/visitRoots @@ -6080,48 +6080,26 @@ f64.gt ) (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.extend8_s - i32.const 2 - i32.eq - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.extend8_s - i32.eqz - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.eqz ) (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.extend16_s - i32.const 2 - i32.eq - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.extend16_s - i32.eqz - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 2 i32.eq ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and @@ -6166,12 +6144,6 @@ f64.eq ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.extend8_s - i32.const 4 - i32.eq - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -6179,12 +6151,6 @@ i32.eq ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.extend16_s - i32.const 4 - i32.eq - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and @@ -6216,7 +6182,8 @@ i32.extend8_s i32.const 2 i32.rem_s - i32.extend8_s + i32.const 255 + i32.and i32.eqz ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -6230,7 +6197,8 @@ i32.extend16_s i32.const 2 i32.rem_s - i32.extend16_s + i32.const 65535 + i32.and i32.eqz ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) @@ -6621,7 +6589,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_s + i32.load8_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $0 @@ -6669,7 +6637,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_s + i32.load8_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.01 @@ -6720,8 +6688,8 @@ local.tee $0 local.get $3 i32.add - i32.load8_s - i32.const -1 + i32.load8_u + i32.const 255 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.04 local.get $0 @@ -6771,7 +6739,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_s + i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.07 @@ -6822,7 +6790,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_s + i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.010 @@ -6873,7 +6841,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_s + i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.013 @@ -6924,7 +6892,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_s + i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.016 @@ -6975,7 +6943,7 @@ local.tee $0 local.get $3 i32.add - i32.load8_s + i32.load8_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 @@ -7033,7 +7001,7 @@ local.get $0 local.get $1 i32.add - i32.load8_s + i32.load8_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.022 @@ -7099,7 +7067,7 @@ local.get $1 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $2 @@ -7161,7 +7129,7 @@ local.get $1 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 11 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.05 @@ -7226,8 +7194,8 @@ local.get $1 local.get $2 i32.add - i32.load8_s - i32.const -1 + i32.load8_u + i32.const 255 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.011 local.get $2 @@ -7291,7 +7259,7 @@ local.get $1 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.017 @@ -7344,7 +7312,7 @@ local.get $1 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.019 @@ -7397,7 +7365,7 @@ local.get $1 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.026 @@ -7450,7 +7418,7 @@ local.get $1 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.029 @@ -7503,7 +7471,7 @@ local.get $1 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.032 @@ -7551,7 +7519,7 @@ local.get $1 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.035 @@ -7599,7 +7567,7 @@ local.get $1 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.038 @@ -7657,7 +7625,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.041 @@ -7708,7 +7676,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.044 @@ -7757,7 +7725,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.047 @@ -7808,7 +7776,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.050 @@ -7859,7 +7827,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.053 @@ -7910,7 +7878,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.056 @@ -7961,7 +7929,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.059 @@ -8012,7 +7980,7 @@ local.tee $0 local.get $2 i32.add - i32.load8_s + i32.load8_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.062 @@ -11136,7 +11104,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.eqz br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $0 @@ -11187,7 +11155,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.01 @@ -11241,8 +11209,8 @@ i32.const 1 i32.shl i32.add - i32.load16_s - i32.const -1 + i32.load16_u + i32.const 65535 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.04 local.get $0 @@ -11295,7 +11263,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.07 @@ -11350,7 +11318,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.010 @@ -11405,7 +11373,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.013 @@ -11460,7 +11428,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.016 @@ -11515,7 +11483,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 @@ -11577,7 +11545,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.022 @@ -11649,7 +11617,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.eqz br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $2 @@ -11717,7 +11685,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 11 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.05 @@ -11788,8 +11756,8 @@ i32.const 1 i32.shl i32.add - i32.load16_s - i32.const -1 + i32.load16_u + i32.const 65535 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.011 local.get $2 @@ -11859,7 +11827,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.017 @@ -11916,7 +11884,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.019 @@ -11973,7 +11941,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.026 @@ -12030,7 +11998,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.029 @@ -12087,7 +12055,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.032 @@ -12139,7 +12107,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.035 @@ -12191,7 +12159,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 1 i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.038 @@ -12251,7 +12219,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 3 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.041 @@ -12305,7 +12273,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 4 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.044 @@ -12357,7 +12325,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.047 @@ -12411,7 +12379,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 9 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.050 @@ -12465,7 +12433,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 10 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.053 @@ -12519,7 +12487,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 11 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.056 @@ -12574,7 +12542,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.059 @@ -12629,7 +12597,7 @@ i32.const 1 i32.shl i32.add - i32.load16_s + i32.load16_u i32.const 5 i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.062 @@ -39791,76 +39759,6 @@ unreachable ) (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - if - i32.const 32336 - i32.const 32384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 6448 - i32.store - local.get $0 - i32.extend8_s - i32.const 6448 - local.get $1 - call $~lib/array/Array#__get - i32.extend8_s - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 513 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 514 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 515 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -39933,76 +39831,6 @@ global.set $~lib/memory/__stack_pointer ) (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15924 - i32.lt_s - if - i32.const 32336 - i32.const 32384 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.tee $3 - i32.const 0 - i32.store - local.get $3 - i32.const 6448 - i32.store - local.get $0 - i32.extend16_s - i32.const 6448 - local.get $1 - call $~lib/array/Array#__get - i32.extend16_s - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 513 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 514 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1568 - i32.const 515 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer i32.const 4 @@ -50272,7 +50100,8 @@ block $folding-inner2 block $folding-inner1 local.get $9 - i32.extend8_s + i32.const 255 + i32.and i32.const 6 i32.ne br_if $folding-inner1 @@ -50510,7 +50339,8 @@ end end local.get $9 - i32.extend16_s + i32.const 65535 + i32.and i32.const 6 i32.ne br_if $folding-inner1 @@ -51712,7 +51542,8 @@ end end local.get $0 - i32.extend8_s + i32.const 255 + i32.and i32.const 6 i32.ne br_if $folding-inner5 @@ -51952,7 +51783,8 @@ end end local.get $0 - i32.extend16_s + i32.const 65535 + i32.and i32.const 6 i32.ne br_if $folding-inner5 From 3a3845164da4f352d61fb94381b765a78d09409c Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 14 Jun 2021 21:00:10 +0300 Subject: [PATCH 03/29] use ints in mergeRuns --- std/assembly/util/sort.ts | 12 ++--- tests/compiler/std/array.optimized.wat | 36 ++++++------- tests/compiler/std/array.untouched.wat | 54 +++++++++---------- tests/compiler/std/typedarray.optimized.wat | 60 ++++++++++----------- tests/compiler/std/typedarray.untouched.wat | 60 ++++++++++----------- 5 files changed, 111 insertions(+), 111 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index ce72f3b9be..448819c8b8 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -271,14 +271,14 @@ function extendRunRight( // Merges arr[l..m - 1] and arr[m..r] function mergeRuns( dataStart: usize, - l: u32, - m: u32, - r: u32, + l: i32, + m: i32, + r: i32, buffer: usize, comparator: (a: T, b: T) => i32 ): void { --m; // accounts for different convention in Sedgewick’s book - var i: u32, j: u32, k: u32, t = r + m; + var i: i32, j: i32, k: i32, t = r + m; for (i = m + 1; i > l; --i) { store(buffer + ((i - 1) << alignof()), load(dataStart + ((i - 1) << alignof()))); } @@ -291,7 +291,7 @@ function mergeRuns( let c = comparator(a, b); store(dataStart + (k << alignof()), select(a, b, c >>> 31)); // c < 0 store(dataStart + (k << alignof()), select(b, a, c >>> 31)); // c < 0 - j -= u32(c >>> 31); // c < 0 - i += u32(c >= 0); + j -= i32(c >>> 31); // c < 0 + i += i32(c >= 0); } } diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 33b0b65ede..6783012678 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -4881,7 +4881,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -4903,7 +4903,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -4929,7 +4929,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 @@ -5790,7 +5790,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -5812,7 +5812,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -5838,7 +5838,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 @@ -6654,7 +6654,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -6676,7 +6676,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -6702,7 +6702,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 @@ -7522,7 +7522,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -7544,7 +7544,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -7570,7 +7570,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 @@ -8342,7 +8342,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -8364,7 +8364,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $8 @@ -8390,7 +8390,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if global.get $~lib/memory/__stack_pointer local.tee $7 @@ -12399,7 +12399,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -12419,7 +12419,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -12441,7 +12441,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index df0d6c4c19..1373e52bad 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -7087,7 +7087,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -7119,7 +7119,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -7149,7 +7149,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -8178,7 +8178,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -8210,7 +8210,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -8240,7 +8240,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -9299,7 +9299,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -9331,7 +9331,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -9361,7 +9361,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -10282,7 +10282,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -10314,7 +10314,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -10344,7 +10344,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -11341,7 +11341,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -11373,7 +11373,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -11403,7 +11403,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -12266,7 +12266,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -12298,7 +12298,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -12328,7 +12328,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -13104,7 +13104,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -13136,7 +13136,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -13166,7 +13166,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -14301,7 +14301,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -14333,7 +14333,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -14363,7 +14363,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -20015,7 +20015,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -20047,7 +20047,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -20077,7 +20077,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 529471a1d8..e8fb1b7999 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3347,7 +3347,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -3369,7 +3369,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -3395,7 +3395,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 @@ -29582,7 +29582,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -29602,7 +29602,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -29624,7 +29624,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 @@ -30421,7 +30421,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -30441,7 +30441,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -30463,7 +30463,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 @@ -31296,7 +31296,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -31318,7 +31318,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -31344,7 +31344,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 @@ -32179,7 +32179,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -32201,7 +32201,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -32227,7 +32227,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 @@ -33072,7 +33072,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -33094,7 +33094,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -33120,7 +33120,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 @@ -33949,7 +33949,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -33971,7 +33971,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -33997,7 +33997,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 @@ -34831,7 +34831,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -34853,7 +34853,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -34879,7 +34879,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 @@ -35716,7 +35716,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -35738,7 +35738,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -35764,7 +35764,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 @@ -36601,7 +36601,7 @@ loop $for-loop|0 local.get $1 local.get $2 - i32.lt_u + i32.lt_s if local.get $4 local.get $2 @@ -36623,7 +36623,7 @@ loop $for-loop|1 local.get $3 local.get $6 - i32.gt_u + i32.gt_s if local.get $4 local.get $7 @@ -36649,7 +36649,7 @@ loop $for-loop|2 local.get $1 local.get $3 - i32.le_u + i32.le_s if local.get $4 local.get $6 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 33578b4d74..b4a74362fc 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -3900,7 +3900,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -3932,7 +3932,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -3962,7 +3962,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -33719,7 +33719,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -33751,7 +33751,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -33781,7 +33781,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -34725,7 +34725,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -34757,7 +34757,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -34787,7 +34787,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -35841,7 +35841,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -35873,7 +35873,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -35903,7 +35903,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -36847,7 +36847,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -36879,7 +36879,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -36909,7 +36909,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -37867,7 +37867,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -37899,7 +37899,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -37929,7 +37929,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -38867,7 +38867,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -38899,7 +38899,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -38929,7 +38929,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -39871,7 +39871,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -39903,7 +39903,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -39933,7 +39933,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -40877,7 +40877,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -40909,7 +40909,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -40939,7 +40939,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if @@ -41883,7 +41883,7 @@ loop $for-loop|0 local.get $6 local.get $1 - i32.gt_u + i32.gt_s local.set $10 local.get $10 if @@ -41915,7 +41915,7 @@ loop $for-loop|1 local.get $7 local.get $3 - i32.lt_u + i32.lt_s local.set $10 local.get $10 if @@ -41945,7 +41945,7 @@ loop $for-loop|2 local.get $8 local.get $3 - i32.le_u + i32.le_s local.set $10 local.get $10 if From abd6c8eab88d46efbaa2f40c63f04bd339c3f85d Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 14 Jun 2021 21:05:08 +0300 Subject: [PATCH 04/29] cleanups --- std/assembly/util/sort.ts | 5 +- tests/compiler/std/array.untouched.wat | 216 +++++++++--------- tests/compiler/std/typedarray.untouched.wat | 240 ++++++++++---------- 3 files changed, 230 insertions(+), 231 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index 448819c8b8..fef9fa5683 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -101,7 +101,6 @@ export function SORT( for (let i: u32 = 0; i < lgPlus2; ++i) { store(leftRunStartBuf + (i << alignof()), EMPTY); - // store(leftRunEndBuf + (i << alignof()), 0); // ? } var top: u32 = 0; @@ -278,14 +277,14 @@ function mergeRuns( comparator: (a: T, b: T) => i32 ): void { --m; // accounts for different convention in Sedgewick’s book - var i: i32, j: i32, k: i32, t = r + m; + var i: i32, j: i32, t = r + m; for (i = m + 1; i > l; --i) { store(buffer + ((i - 1) << alignof()), load(dataStart + ((i - 1) << alignof()))); } for (j = m; j < r; ++j) { store(buffer + ((t - j) << alignof()), load(dataStart + (j << alignof()), 1 << alignof())); } - for (k = l; k <= r; ++k) { + for (let k = l; k <= r; ++k) { let a = load(buffer + (j << alignof())); let b = load(buffer + (i << alignof())); let c = comparator(a, b); diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 1373e52bad..984ad1c4ac 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -7079,7 +7079,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -7088,8 +7088,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -7120,11 +7120,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 2 @@ -7145,9 +7145,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -7176,7 +7176,7 @@ call_indirect $0 (type $f32_f32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -7188,7 +7188,7 @@ select f32.store local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -7211,10 +7211,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -8170,7 +8170,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -8179,8 +8179,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -8211,11 +8211,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 3 @@ -8236,9 +8236,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -8267,7 +8267,7 @@ call_indirect $0 (type $f64_f64_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 3 i32.shl i32.add @@ -8279,7 +8279,7 @@ select f64.store local.get $0 - local.get $8 + local.get $9 i32.const 3 i32.shl i32.add @@ -8302,10 +8302,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -9291,7 +9291,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -9300,8 +9300,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -9332,11 +9332,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 2 @@ -9357,9 +9357,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -9388,7 +9388,7 @@ call_indirect $0 (type $i32_i32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -9400,7 +9400,7 @@ select i32.store local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -9423,10 +9423,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -10274,7 +10274,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -10283,8 +10283,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -10315,11 +10315,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 2 @@ -10340,9 +10340,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -10371,7 +10371,7 @@ call_indirect $0 (type $i32_i32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -10383,7 +10383,7 @@ select i32.store local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -10406,10 +10406,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -11333,7 +11333,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -11342,8 +11342,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -11374,11 +11374,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 2 @@ -11399,9 +11399,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -11434,7 +11434,7 @@ call_indirect $0 (type $i32_i32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -11446,7 +11446,7 @@ select i32.store local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -11469,10 +11469,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -12258,7 +12258,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -12267,8 +12267,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -12299,11 +12299,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 2 @@ -12324,9 +12324,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -12359,7 +12359,7 @@ call_indirect $0 (type $i32_i32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -12371,7 +12371,7 @@ select i32.store local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -12394,10 +12394,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -13096,7 +13096,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -13105,8 +13105,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -13137,11 +13137,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 2 @@ -13162,9 +13162,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -13197,7 +13197,7 @@ call_indirect $0 (type $i32_i32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -13209,7 +13209,7 @@ select i32.store local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -13232,10 +13232,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -14293,7 +14293,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -14302,8 +14302,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -14334,11 +14334,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 2 @@ -14359,9 +14359,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -14394,7 +14394,7 @@ call_indirect $0 (type $i32_i32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -14406,7 +14406,7 @@ select i32.store local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -14429,10 +14429,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -20007,7 +20007,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -20016,8 +20016,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -20048,11 +20048,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 0 @@ -20073,9 +20073,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -20104,7 +20104,7 @@ call_indirect $0 (type $i32_i32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 0 i32.shl i32.add @@ -20116,7 +20116,7 @@ select i32.store8 local.get $0 - local.get $8 + local.get $9 i32.const 0 i32.shl i32.add @@ -20139,10 +20139,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index b4a74362fc..2f9fb209cc 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -3892,7 +3892,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -3901,8 +3901,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -3933,11 +3933,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 3 @@ -3958,9 +3958,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -3989,7 +3989,7 @@ call_indirect $0 (type $f64_f64_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 3 i32.shl i32.add @@ -4001,7 +4001,7 @@ select f64.store local.get $0 - local.get $8 + local.get $9 i32.const 3 i32.shl i32.add @@ -4024,10 +4024,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -33711,7 +33711,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -33720,8 +33720,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -33752,11 +33752,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 0 @@ -33777,9 +33777,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -33808,7 +33808,7 @@ call_indirect $0 (type $i32_i32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 0 i32.shl i32.add @@ -33820,7 +33820,7 @@ select i32.store8 local.get $0 - local.get $8 + local.get $9 i32.const 0 i32.shl i32.add @@ -33843,10 +33843,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -34717,7 +34717,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -34726,8 +34726,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -34758,11 +34758,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 0 @@ -34783,9 +34783,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -34814,7 +34814,7 @@ call_indirect $0 (type $i32_i32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 0 i32.shl i32.add @@ -34826,7 +34826,7 @@ select i32.store8 local.get $0 - local.get $8 + local.get $9 i32.const 0 i32.shl i32.add @@ -34849,10 +34849,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -35833,7 +35833,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -35842,8 +35842,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -35874,11 +35874,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 1 @@ -35899,9 +35899,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -35930,7 +35930,7 @@ call_indirect $0 (type $i32_i32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 1 i32.shl i32.add @@ -35942,7 +35942,7 @@ select i32.store16 local.get $0 - local.get $8 + local.get $9 i32.const 1 i32.shl i32.add @@ -35965,10 +35965,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -36839,7 +36839,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -36848,8 +36848,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -36880,11 +36880,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 1 @@ -36905,9 +36905,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -36936,7 +36936,7 @@ call_indirect $0 (type $i32_i32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 1 i32.shl i32.add @@ -36948,7 +36948,7 @@ select i32.store16 local.get $0 - local.get $8 + local.get $9 i32.const 1 i32.shl i32.add @@ -36971,10 +36971,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -37859,7 +37859,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -37868,8 +37868,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -37900,11 +37900,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 2 @@ -37925,9 +37925,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -37956,7 +37956,7 @@ call_indirect $0 (type $i32_i32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -37968,7 +37968,7 @@ select i32.store local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -37991,10 +37991,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -38859,7 +38859,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -38868,8 +38868,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -38900,11 +38900,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 2 @@ -38925,9 +38925,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -38956,7 +38956,7 @@ call_indirect $0 (type $i32_i32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -38968,7 +38968,7 @@ select i32.store local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -38991,10 +38991,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -39863,7 +39863,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -39872,8 +39872,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -39904,11 +39904,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 3 @@ -39929,9 +39929,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -39960,7 +39960,7 @@ call_indirect $0 (type $i64_i64_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 3 i32.shl i32.add @@ -39972,7 +39972,7 @@ select i64.store local.get $0 - local.get $8 + local.get $9 i32.const 3 i32.shl i32.add @@ -39995,10 +39995,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -40869,7 +40869,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -40878,8 +40878,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -40910,11 +40910,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 3 @@ -40935,9 +40935,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -40966,7 +40966,7 @@ call_indirect $0 (type $i64_i64_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 3 i32.shl i32.add @@ -40978,7 +40978,7 @@ select i64.store local.get $0 - local.get $8 + local.get $9 i32.const 3 i32.shl i32.add @@ -41001,10 +41001,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end @@ -41875,7 +41875,7 @@ local.get $3 local.get $2 i32.add - local.set $9 + local.set $8 local.get $2 i32.const 1 i32.add @@ -41884,8 +41884,8 @@ local.get $6 local.get $1 i32.gt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 local.get $6 @@ -41916,11 +41916,11 @@ local.get $7 local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $4 - local.get $9 + local.get $8 local.get $7 i32.sub i32.const 2 @@ -41941,9 +41941,9 @@ end end local.get $1 - local.set $8 + local.set $9 loop $for-loop|2 - local.get $8 + local.get $9 local.get $3 i32.le_s local.set $10 @@ -41972,7 +41972,7 @@ call_indirect $0 (type $f32_f32_=>_i32) local.set $13 local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -41984,7 +41984,7 @@ select f32.store local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add @@ -42007,10 +42007,10 @@ i32.ge_s i32.add local.set $6 - local.get $8 + local.get $9 i32.const 1 i32.add - local.set $8 + local.set $9 br $for-loop|2 end end From cd5d7f9c5e0389075e590d6cded5bf8b2fd4483e Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Tue, 15 Jun 2021 13:26:53 +0300 Subject: [PATCH 05/29] use usize for offsets --- std/assembly/util/sort.ts | 64 +++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index fef9fa5683..eecebcf761 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -100,7 +100,7 @@ export function SORT( var leftRunEndBuf = __alloc(lgPlus2Size); for (let i: u32 = 0; i < lgPlus2; ++i) { - store(leftRunStartBuf + (i << alignof()), EMPTY); + store(leftRunStartBuf + (i << alignof()), EMPTY); } var top: u32 = 0; @@ -128,35 +128,35 @@ export function SORT( let k = nodePower(0, hi, startA, startB, endB); for (let i = top; i > k; --i) { - let start = load(leftRunStartBuf + (i << alignof())); + let start = load(leftRunStartBuf + (i << alignof())); if (start != EMPTY) { mergeRuns( dataStart, start, - load(leftRunEndBuf + (i << alignof())) + 1, + load(leftRunEndBuf + (i << alignof())) + 1, endA, buffer, comparator ); startA = start; - store(leftRunStartBuf + (i << alignof()), EMPTY); + store(leftRunStartBuf + (i << alignof()), EMPTY); } } - store(leftRunStartBuf + (k << alignof()), startA); - store(leftRunEndBuf + (k << alignof()), endA); + store(leftRunStartBuf + (k << alignof()), startA); + store(leftRunEndBuf + (k << alignof()), endA); startA = startB; endA = endB; top = k; } for (let i = top; i != 0; --i) { - let start = load(leftRunStartBuf + (i << alignof())); + let start = load(leftRunStartBuf + (i << alignof())); if (start != EMPTY) { mergeRuns( dataStart, start, - load(leftRunEndBuf + (i << alignof())) + 1, + load(leftRunEndBuf + (i << alignof())) + 1, hi, buffer, comparator @@ -180,41 +180,41 @@ function insertionSort( // slightly improved original insertion sort for (let i = left + presorted; i <= right; ++i) { let j = i - 1; - let a = load(dataStart + (i << alignof())); + let a = load(dataStart + (i << alignof())); while (j >= left) { - let b = load(dataStart + (j << alignof())); + let b = load(dataStart + (j << alignof())); if (comparator(a, b) < 0) { - store(dataStart + (j << alignof()), b, 1 << alignof()); --j; + store(dataStart + (j << alignof()), b, 1 << alignof()); --j; } else break; } - store(dataStart + (j << alignof()), a, 1 << alignof()); + store(dataStart + (j << alignof()), a, 1 << alignof()); } } else { // even-odd two-way insertion sort which allow increase minRunLen let range = right - left + 1; let i = left + select(range & 1, presorted - ((range - presorted) & 1), presorted == 0); for (; i <= right; i += 2) { - let a = load(dataStart + (i << alignof()), 0); - let b = load(dataStart + (i << alignof()), 1 << alignof()); + let a = load(dataStart + (i << alignof()), 0); + let b = load(dataStart + (i << alignof()), 1 << alignof()); let min = b, max = a; if (comparator(a, b) <= 0) { min = a, max = b; } let j = i - 1; while (j >= left) { - a = load(dataStart + (j << alignof())); + a = load(dataStart + (j << alignof())); if (comparator(a, max) > 0) { - store(dataStart + (j << alignof()), a, 2 << alignof()); --j; + store(dataStart + (j << alignof()), a, 2 << alignof()); --j; } else break; } - store(dataStart + (j << alignof()), max, 2 << alignof()); + store(dataStart + (j << alignof()), max, 2 << alignof()); while (j >= left) { - a = load(dataStart + (j << alignof())); + a = load(dataStart + (j << alignof())); if (comparator(a, min) > 0) { - store(dataStart + (j << alignof()), a, 1 << alignof()); --j; + store(dataStart + (j << alignof()), a, 1 << alignof()); --j; } else break; } - store(dataStart + (j << alignof()), min, 1 << alignof()); + store(dataStart + (j << alignof()), min, 1 << alignof()); } } } @@ -238,29 +238,29 @@ function extendRunRight( if (i == right) return i; var j = i; if (comparator( - load(dataStart + ( j << alignof())), - load(dataStart + (++j << alignof())) + load(dataStart + (j << alignof())), + load(dataStart + (++j << alignof())) ) > 0) { while ( j < right && bool(comparator( - load(dataStart + (j << alignof()), 1 << alignof()), - load(dataStart + (j << alignof())) + load(dataStart + (j << alignof()), 1 << alignof()), + load(dataStart + (j << alignof())) ) >>> 31) // < 0 ) ++j; // reverse let k = j; while (i < k) { let tmp = load(dataStart + (i << alignof())); - store(dataStart + (i << alignof()), load(dataStart + (k << alignof()))); ++i; - store(dataStart + (k << alignof()), tmp); --k; + store(dataStart + (i << alignof()), load(dataStart + (k << alignof()))); ++i; + store(dataStart + (k << alignof()), tmp); --k; } } else { while ( j < right && comparator( - load(dataStart + (j << alignof()), 1 << alignof()), - load(dataStart + (j << alignof())) + load(dataStart + (j << alignof()), 1 << alignof()), + load(dataStart + (j << alignof())) ) >= 0 ) ++j; } @@ -279,14 +279,14 @@ function mergeRuns( --m; // accounts for different convention in Sedgewick’s book var i: i32, j: i32, t = r + m; for (i = m + 1; i > l; --i) { - store(buffer + ((i - 1) << alignof()), load(dataStart + ((i - 1) << alignof()))); + store(buffer + ((i - 1) << alignof()), load(dataStart + ((i - 1) << alignof()))); } for (j = m; j < r; ++j) { - store(buffer + ((t - j) << alignof()), load(dataStart + (j << alignof()), 1 << alignof())); + store(buffer + ((t - j) << alignof()), load(dataStart + (j << alignof()), 1 << alignof())); } for (let k = l; k <= r; ++k) { - let a = load(buffer + (j << alignof())); - let b = load(buffer + (i << alignof())); + let a = load(buffer + (j << alignof())); + let b = load(buffer + (i << alignof())); let c = comparator(a, b); store(dataStart + (k << alignof()), select(a, b, c >>> 31)); // c < 0 store(dataStart + (k << alignof()), select(b, a, c >>> 31)); // c < 0 From a1f4d4c80bd03e53c277304228ca9cbed0d7ec64 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 16 Jun 2021 17:57:55 +0300 Subject: [PATCH 06/29] more --- std/assembly/util/sort.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index eecebcf761..004f8e2b26 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -251,7 +251,7 @@ function extendRunRight( // reverse let k = j; while (i < k) { - let tmp = load(dataStart + (i << alignof())); + let tmp = load(dataStart + (i << alignof())); store(dataStart + (i << alignof()), load(dataStart + (k << alignof()))); ++i; store(dataStart + (k << alignof()), tmp); --k; } @@ -288,8 +288,8 @@ function mergeRuns( let a = load(buffer + (j << alignof())); let b = load(buffer + (i << alignof())); let c = comparator(a, b); - store(dataStart + (k << alignof()), select(a, b, c >>> 31)); // c < 0 - store(dataStart + (k << alignof()), select(b, a, c >>> 31)); // c < 0 + store(dataStart + (k << alignof()), select(a, b, c >>> 31)); // c < 0 + store(dataStart + (k << alignof()), select(b, a, c >>> 31)); // c < 0 j -= i32(c >>> 31); // c < 0 i += i32(c >= 0); } From a320a19ff3a4d6edf500e128136ba280c030aad2 Mon Sep 17 00:00:00 2001 From: Max Graey Date: Fri, 2 Jul 2021 19:57:12 +0300 Subject: [PATCH 07/29] lazy -> inline Co-authored-by: Daniel Wirtz --- std/assembly/util/sort.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index 004f8e2b26..f4985b71cb 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -1,11 +1,11 @@ import { compareImpl } from "./string"; // @ts-ignore: decorator -@lazy const EMPTY: u32 = 0xFFFFFFFF; +@inline const EMPTY: u32 = 0xFFFFFFFF; // @ts-ignore: decorator -@lazy const INSERTION_SORT_THRESHOLD = 128; +@inline const INSERTION_SORT_THRESHOLD = 128; // @ts-ignore: decorator -@lazy const MIN_RUN_LENGTH = 32; +@inline const MIN_RUN_LENGTH = 32; // @ts-ignore: decorator @inline From cfd9326de88c9ef93f1348db4fdd19d3ad3ff129 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Fri, 2 Jul 2021 20:01:40 +0300 Subject: [PATCH 08/29] join temp arrays into one --- std/assembly/util/sort.ts | 5 +- tests/compiler/std/array.optimized.wat | 1232 ++++++------- tests/compiler/std/array.untouched.wat | 228 +-- tests/compiler/std/typedarray.optimized.wat | 1796 +++++++++---------- tests/compiler/std/typedarray.untouched.wat | 253 +-- 5 files changed, 1699 insertions(+), 1815 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index f4985b71cb..c332bd4658 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -96,8 +96,8 @@ export function SORT( var lgPlus2 = log2u(n) + 2; var lgPlus2Size = lgPlus2 << alignof(); - var leftRunStartBuf = __alloc(lgPlus2Size); - var leftRunEndBuf = __alloc(lgPlus2Size); + var leftRunStartBuf = __alloc(lgPlus2Size << 1); + var leftRunEndBuf = leftRunStartBuf + lgPlus2Size; for (let i: u32 = 0; i < lgPlus2; ++i) { store(leftRunStartBuf + (i << alignof()), EMPTY); @@ -165,7 +165,6 @@ export function SORT( } // dealloc aux buffers __free(buffer); - __free(leftRunEndBuf); __free(leftRunStartBuf); } diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 6783012678..18192fb53a 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -4997,42 +4997,42 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 f32) - (local $11 f32) - (local $12 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 f32) (local $13 i32) (local $14 f32) - (local $15 i32) - (local $16 i64) + (local $15 f32) + (local $16 i32) local.get $1 i32.const 1 i32.sub - local.set $9 + local.set $16 local.get $1 i32.const 128 i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 f32.load offset=4 - local.set $14 + local.set $15 local.get $0 f32.load offset=8 - local.set $10 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 + local.get $15 local.get $14 - local.get $10 + local.get $15 local.get $14 - local.get $10 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -5043,15 +5043,15 @@ f32.store offset=4 local.get $0 f32.load - local.set $11 + local.set $12 i32.const 2 global.set $~argumentsLength - local.get $11 - local.get $10 + local.get $12 local.get $14 + local.get $15 local.get $1 select - local.tee $10 + local.tee $15 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -5059,31 +5059,31 @@ i32.shr_u local.set $1 local.get $0 - local.get $11 - local.get $10 + local.get $12 + local.get $15 local.get $1 select f32.store local.get $0 - local.get $10 - local.get $11 + local.get $15 + local.get $12 local.get $1 select f32.store offset=8 end local.get $0 f32.load - local.set $11 + local.set $15 local.get $0 f32.load offset=4 - local.set $10 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $11 - local.get $10 - local.get $11 - local.get $10 + local.get $15 + local.get $14 + local.get $15 + local.get $14 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -5093,8 +5093,8 @@ select f32.store local.get $0 - local.get $10 - local.get $11 + local.get $14 + local.get $15 local.get $1 select f32.store offset=4 @@ -5103,7 +5103,7 @@ end local.get $0 i32.const 0 - local.get $9 + local.get $16 i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -5113,22 +5113,13 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $5 i32.const 2 i32.shl - local.tee $4 - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $12 + local.tee $7 + i32.const 1 + i32.shl + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -5139,25 +5130,28 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $13 + local.tee $13 + local.get $7 + i32.add + local.set $11 i32.const 0 - local.set $4 + local.set $7 loop $for-loop|1 - local.get $4 - local.get $6 - i32.lt_u + local.get $5 + local.get $7 + i32.gt_u if - local.get $12 - local.get $4 + local.get $13 + local.get $7 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $4 + local.get $7 i32.const 1 i32.add - local.set $4 + local.set $7 br $for-loop|1 end end @@ -5175,83 +5169,83 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $15 + local.set $10 local.get $0 i32.const 0 - local.get $9 + local.get $16 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $4 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $16 i32.const 31 - local.get $9 + local.get $16 i32.const 31 i32.lt_s select local.tee $1 - local.get $4 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $9 + local.get $16 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $6 - local.get $9 + local.tee $5 + local.get $16 local.get $2 call $~lib/util/sort/extendRunRight local.tee $7 - local.get $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 - local.get $6 - local.get $9 - local.get $6 + local.get $5 + local.get $16 + local.get $5 i32.const 31 i32.add - local.tee $4 - local.get $4 - local.get $9 + local.tee $7 + local.get $7 + local.get $16 i32.gt_s select local.tee $7 - local.get $8 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $16 i32.const 1 i32.add i64.extend_i32_u - local.tee $16 + local.tee $9 i64.div_u - local.get $6 + local.get $5 local.get $7 i32.add i32.const 1 @@ -5259,7 +5253,7 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $16 + local.get $9 i64.div_u i64.xor i32.wrap_i64 @@ -5267,11 +5261,11 @@ local.set $4 loop $for-loop|3 local.get $4 - local.get $5 + local.get $6 i32.lt_u if - local.get $12 - local.get $5 + local.get $13 + local.get $6 i32.const 2 i32.shl i32.add @@ -5282,8 +5276,8 @@ if local.get $0 local.get $8 - local.get $13 - local.get $5 + local.get $11 + local.get $6 i32.const 2 i32.shl local.tee $3 @@ -5292,51 +5286,51 @@ i32.const 1 i32.add local.get $1 - local.get $15 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $13 i32.add i32.const -1 i32.store local.get $8 local.set $3 end - local.get $5 + local.get $6 i32.const 1 i32.sub - local.set $5 + local.set $6 br $for-loop|3 end end - local.get $12 + local.get $13 local.get $4 i32.const 2 i32.shl - local.tee $5 + local.tee $6 i32.add local.get $3 i32.store - local.get $5 - local.get $13 + local.get $6 + local.get $11 i32.add local.get $1 i32.store - local.get $6 + local.get $5 local.set $3 local.get $7 local.set $1 local.get $4 - local.set $5 + local.set $6 br $while-continue|2 end end loop $for-loop|4 - local.get $5 + local.get $6 if - local.get $12 - local.get $5 + local.get $13 + local.get $6 i32.const 2 i32.shl i32.add @@ -5347,32 +5341,30 @@ if local.get $0 local.get $1 - local.get $13 - local.get $5 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $15 + local.get $16 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $5 + local.get $6 i32.const 1 i32.sub - local.set $5 + local.set $6 br $for-loop|4 end end - local.get $15 + local.get $10 call $~lib/rt/tlsf/__free local.get $13 call $~lib/rt/tlsf/__free - local.get $12 - call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) (local $2 i32) @@ -5906,42 +5898,42 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 f64) - (local $11 f64) - (local $12 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 f64) (local $13 i32) (local $14 f64) - (local $15 i32) - (local $16 i64) + (local $15 f64) + (local $16 i32) local.get $1 i32.const 1 i32.sub - local.set $9 + local.set $16 local.get $1 i32.const 128 i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 f64.load offset=8 - local.set $14 + local.set $15 local.get $0 f64.load offset=16 - local.set $10 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 + local.get $15 local.get $14 - local.get $10 + local.get $15 local.get $14 - local.get $10 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -5952,15 +5944,15 @@ f64.store offset=8 local.get $0 f64.load - local.set $11 + local.set $12 i32.const 2 global.set $~argumentsLength - local.get $11 - local.get $10 + local.get $12 local.get $14 + local.get $15 local.get $1 select - local.tee $10 + local.tee $15 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -5968,31 +5960,31 @@ i32.shr_u local.set $1 local.get $0 - local.get $11 - local.get $10 + local.get $12 + local.get $15 local.get $1 select f64.store local.get $0 - local.get $10 - local.get $11 + local.get $15 + local.get $12 local.get $1 select f64.store offset=16 end local.get $0 f64.load - local.set $11 + local.set $15 local.get $0 f64.load offset=8 - local.set $10 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $11 - local.get $10 - local.get $11 - local.get $10 + local.get $15 + local.get $14 + local.get $15 + local.get $14 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -6002,8 +5994,8 @@ select f64.store local.get $0 - local.get $10 - local.get $11 + local.get $14 + local.get $15 local.get $1 select f64.store offset=8 @@ -6012,7 +6004,7 @@ end local.get $0 i32.const 0 - local.get $9 + local.get $16 i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -6022,22 +6014,13 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $5 i32.const 2 i32.shl - local.tee $4 - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $12 + local.tee $7 + i32.const 1 + i32.shl + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -6048,25 +6031,28 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $13 + local.tee $13 + local.get $7 + i32.add + local.set $11 i32.const 0 - local.set $4 + local.set $7 loop $for-loop|1 - local.get $4 - local.get $6 - i32.lt_u + local.get $5 + local.get $7 + i32.gt_u if - local.get $12 - local.get $4 + local.get $13 + local.get $7 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $4 + local.get $7 i32.const 1 i32.add - local.set $4 + local.set $7 br $for-loop|1 end end @@ -6084,83 +6070,83 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $15 + local.set $10 local.get $0 i32.const 0 - local.get $9 + local.get $16 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $4 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $16 i32.const 31 - local.get $9 + local.get $16 i32.const 31 i32.lt_s select local.tee $1 - local.get $4 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $9 + local.get $16 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $6 - local.get $9 + local.tee $5 + local.get $16 local.get $2 call $~lib/util/sort/extendRunRight local.tee $7 - local.get $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 - local.get $6 - local.get $9 - local.get $6 + local.get $5 + local.get $16 + local.get $5 i32.const 31 i32.add - local.tee $4 - local.get $4 - local.get $9 + local.tee $7 + local.get $7 + local.get $16 i32.gt_s select local.tee $7 - local.get $8 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $16 i32.const 1 i32.add i64.extend_i32_u - local.tee $16 + local.tee $9 i64.div_u - local.get $6 + local.get $5 local.get $7 i32.add i32.const 1 @@ -6168,7 +6154,7 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $16 + local.get $9 i64.div_u i64.xor i32.wrap_i64 @@ -6176,11 +6162,11 @@ local.set $4 loop $for-loop|3 local.get $4 - local.get $5 + local.get $6 i32.lt_u if - local.get $12 - local.get $5 + local.get $13 + local.get $6 i32.const 2 i32.shl i32.add @@ -6191,8 +6177,8 @@ if local.get $0 local.get $8 - local.get $13 - local.get $5 + local.get $11 + local.get $6 i32.const 2 i32.shl local.tee $3 @@ -6201,51 +6187,51 @@ i32.const 1 i32.add local.get $1 - local.get $15 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $13 i32.add i32.const -1 i32.store local.get $8 local.set $3 end - local.get $5 + local.get $6 i32.const 1 i32.sub - local.set $5 + local.set $6 br $for-loop|3 end end - local.get $12 + local.get $13 local.get $4 i32.const 2 i32.shl - local.tee $5 + local.tee $6 i32.add local.get $3 i32.store - local.get $5 - local.get $13 + local.get $6 + local.get $11 i32.add local.get $1 i32.store - local.get $6 + local.get $5 local.set $3 local.get $7 local.set $1 local.get $4 - local.set $5 + local.set $6 br $while-continue|2 end end loop $for-loop|4 - local.get $5 + local.get $6 if - local.get $12 - local.get $5 + local.get $13 + local.get $6 i32.const 2 i32.shl i32.add @@ -6256,32 +6242,30 @@ if local.get $0 local.get $1 - local.get $13 - local.get $5 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $15 + local.get $16 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $5 + local.get $6 i32.const 1 i32.sub - local.set $5 + local.set $6 br $for-loop|4 end end - local.get $15 + local.get $10 call $~lib/rt/tlsf/__free local.get $13 call $~lib/rt/tlsf/__free - local.get $12 - call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) (local $2 i64) @@ -6769,8 +6753,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) + (local $8 i64) + (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) @@ -6778,94 +6762,94 @@ local.get $1 i32.const 1 i32.sub - local.set $13 + local.set $12 local.get $1 i32.const 128 i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 i32.load offset=4 - local.set $5 + local.set $1 local.get $0 i32.load offset=8 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $5 - local.get $3 - local.get $5 - local.get $3 + local.get $1 + local.get $7 + local.get $1 + local.get $7 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $6 select i32.store offset=4 local.get $0 i32.load - local.set $7 + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $3 - local.get $5 + local.get $7 local.get $1 + local.get $6 select - local.tee $3 + local.tee $1 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $1 + local.set $7 local.get $0 - local.get $7 local.get $3 local.get $1 + local.get $7 select i32.store local.get $0 + local.get $1 local.get $3 local.get $7 - local.get $1 select i32.store offset=8 end local.get $0 i32.load - local.set $7 + local.set $1 local.get $0 i32.load offset=4 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 + local.get $1 local.get $7 - local.get $3 + local.get $1 local.get $7 - local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 local.get $7 local.get $1 + local.get $2 select i32.store offset=4 end @@ -6873,7 +6857,7 @@ end local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -6883,51 +6867,45 @@ local.get $1 i32.clz i32.sub - local.tee $4 + local.tee $5 i32.const 2 i32.shl - local.tee $7 - local.set $5 + local.tee $6 + i32.const 1 + i32.shl + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $4 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $12 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.tee $11 + local.get $6 i32.add - local.set $11 + local.set $10 i32.const 0 - local.set $7 + local.set $6 loop $for-loop|1 - local.get $4 - local.get $7 + local.get $5 + local.get $6 i32.gt_u if - local.get $12 - local.get $7 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end @@ -6945,115 +6923,115 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $10 + local.set $9 local.get $0 i32.const 0 - local.get $13 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $7 + local.tee $6 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select local.tee $1 - local.get $7 + local.get $6 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $13 + local.get $12 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $4 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $4 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 - local.get $4 - local.get $13 - local.get $4 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add - local.tee $7 - local.get $7 - local.get $13 + local.tee $6 + local.get $6 + local.get $12 i32.gt_s select - local.tee $5 - local.get $8 + local.tee $6 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $4 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $8 i64.div_u - local.get $4 local.get $5 + local.get $6 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $4 loop $for-loop|3 - local.get $6 + local.get $4 local.get $7 - i32.gt_u + i32.lt_u if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $8 + local.tee $13 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $11 - local.get $6 + local.get $13 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $3 @@ -7062,51 +7040,51 @@ i32.const 1 i32.add local.get $1 - local.get $10 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $11 i32.add i32.const -1 i32.store - local.get $8 + local.get $13 local.set $3 end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|3 end end - local.get $12 - local.get $7 + local.get $11 + local.get $4 i32.const 2 i32.shl - local.tee $6 + local.tee $7 i32.add local.get $3 i32.store - local.get $6 - local.get $11 + local.get $7 + local.get $10 i32.add local.get $1 i32.store - local.get $4 - local.set $3 local.get $5 + local.set $3 + local.get $6 local.set $1 - local.get $7 - local.set $6 + local.get $4 + local.set $7 br $while-continue|2 end end loop $for-loop|4 - local.get $6 + local.get $7 if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add @@ -7117,32 +7095,30 @@ if local.get $0 local.get $1 - local.get $11 - local.get $6 + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|4 end end - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free - local.get $12 - call $~lib/rt/tlsf/__free ) (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -7637,8 +7613,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) + (local $8 i64) + (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) @@ -7646,94 +7622,94 @@ local.get $1 i32.const 1 i32.sub - local.set $13 + local.set $12 local.get $1 i32.const 128 i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 i32.load offset=4 - local.set $5 + local.set $1 local.get $0 i32.load offset=8 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $5 - local.get $3 - local.get $5 - local.get $3 + local.get $1 + local.get $7 + local.get $1 + local.get $7 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $6 select i32.store offset=4 local.get $0 i32.load - local.set $7 + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $3 - local.get $5 + local.get $7 local.get $1 + local.get $6 select - local.tee $3 + local.tee $1 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $1 + local.set $7 local.get $0 - local.get $7 local.get $3 local.get $1 + local.get $7 select i32.store local.get $0 + local.get $1 local.get $3 local.get $7 - local.get $1 select i32.store offset=8 end local.get $0 i32.load - local.set $7 + local.set $1 local.get $0 i32.load offset=4 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 + local.get $1 local.get $7 - local.get $3 + local.get $1 local.get $7 - local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 local.get $7 local.get $1 + local.get $2 select i32.store offset=4 end @@ -7741,7 +7717,7 @@ end local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -7751,51 +7727,45 @@ local.get $1 i32.clz i32.sub - local.tee $4 + local.tee $5 i32.const 2 i32.shl - local.tee $7 - local.set $5 + local.tee $6 + i32.const 1 + i32.shl + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $4 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $12 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.tee $11 + local.get $6 i32.add - local.set $11 + local.set $10 i32.const 0 - local.set $7 + local.set $6 loop $for-loop|1 - local.get $4 - local.get $7 + local.get $5 + local.get $6 i32.gt_u if - local.get $12 - local.get $7 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end @@ -7813,115 +7783,115 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $10 + local.set $9 local.get $0 i32.const 0 - local.get $13 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $7 + local.tee $6 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select local.tee $1 - local.get $7 + local.get $6 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $13 + local.get $12 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $4 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $4 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 - local.get $4 - local.get $13 - local.get $4 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add - local.tee $7 - local.get $7 - local.get $13 + local.tee $6 + local.get $6 + local.get $12 i32.gt_s select - local.tee $5 - local.get $8 + local.tee $6 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $4 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $8 i64.div_u - local.get $4 local.get $5 + local.get $6 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $4 loop $for-loop|3 - local.get $6 + local.get $4 local.get $7 - i32.gt_u + i32.lt_u if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $8 + local.tee $13 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $11 - local.get $6 + local.get $13 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $3 @@ -7930,51 +7900,51 @@ i32.const 1 i32.add local.get $1 - local.get $10 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $11 i32.add i32.const -1 i32.store - local.get $8 + local.get $13 local.set $3 end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|3 end end - local.get $12 - local.get $7 + local.get $11 + local.get $4 i32.const 2 i32.shl - local.tee $6 + local.tee $7 i32.add local.get $3 i32.store - local.get $6 - local.get $11 + local.get $7 + local.get $10 i32.add local.get $1 i32.store - local.get $4 - local.set $3 local.get $5 + local.set $3 + local.get $6 local.set $1 - local.get $7 - local.set $6 + local.get $4 + local.set $7 br $while-continue|2 end end loop $for-loop|4 - local.get $6 + local.get $7 if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add @@ -7985,32 +7955,30 @@ if local.get $0 local.get $1 - local.get $11 - local.get $6 + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|4 end end - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free - local.get $12 - call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -8466,8 +8434,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) + (local $8 i64) + (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) @@ -8488,16 +8456,16 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $6 i64.const 0 i64.store - local.get $7 + local.get $6 i32.const 0 i32.store offset=8 local.get $1 i32.const 1 i32.sub - local.set $13 + local.set $12 block $folding-inner0 local.get $1 i32.const 128 @@ -8510,12 +8478,12 @@ br_table $folding-inner0 $folding-inner0 $case1|0 $case0|0 $break|0 end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $7 local.get $0 i32.load offset=4 - local.tee $5 + local.tee $1 i32.store - local.get $1 + local.get $7 local.get $0 i32.load offset=8 local.tee $7 @@ -8523,9 +8491,9 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $5 + local.get $1 local.get $7 - local.get $5 + local.get $1 local.get $7 local.get $2 i32.load @@ -8536,77 +8504,77 @@ select i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $6 local.get $7 - local.get $5 + local.get $1 local.get $3 select - local.tee $7 + local.tee $1 i32.store offset=4 - local.get $1 + local.get $6 local.get $0 i32.load - local.tee $3 + local.tee $7 i32.store i32.const 2 global.set $~argumentsLength local.get $0 - local.get $3 local.get $7 - local.get $3 + local.get $1 local.get $7 + local.get $1 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $3 select i32.store local.get $0 + local.get $1 local.get $7 local.get $3 - local.get $1 select i32.store offset=8 end global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $7 local.get $0 i32.load - local.tee $7 + local.tee $1 i32.store offset=8 - local.get $1 + local.get $7 local.get $0 i32.load offset=4 - local.tee $3 + local.tee $7 i32.store offset=4 i32.const 2 global.set $~argumentsLength local.get $0 + local.get $1 local.get $7 - local.get $3 + local.get $1 local.get $7 - local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 local.get $7 local.get $1 + local.get $2 select i32.store offset=4 br $folding-inner0 end local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 0 local.get $2 call $~lib/util/sort/insertionSort<~lib/array/Array> @@ -8616,51 +8584,45 @@ local.get $1 i32.clz i32.sub - local.tee $4 + local.tee $5 i32.const 2 i32.shl - local.tee $7 - local.set $5 + local.tee $6 + i32.const 1 + i32.shl + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $4 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $12 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.tee $11 + local.get $6 i32.add - local.set $11 + local.set $10 i32.const 0 - local.set $7 + local.set $6 loop $for-loop|1 - local.get $4 - local.get $7 + local.get $5 + local.get $6 i32.gt_u if - local.get $12 - local.get $7 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end @@ -8678,115 +8640,115 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $10 + local.set $9 local.get $0 i32.const 0 - local.get $13 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight<~lib/array/Array> local.tee $1 i32.const 1 i32.add - local.tee $7 + local.tee $6 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select local.tee $1 - local.get $7 + local.get $6 local.get $2 call $~lib/util/sort/insertionSort<~lib/array/Array> end loop $while-continue|2 local.get $1 - local.get $13 + local.get $12 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $4 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight<~lib/array/Array> - local.tee $5 - local.get $4 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 - local.get $4 - local.get $13 - local.get $4 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add - local.tee $7 - local.get $7 - local.get $13 + local.tee $6 + local.get $6 + local.get $12 i32.gt_s select - local.tee $5 - local.get $8 + local.tee $6 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort<~lib/array/Array> end local.get $3 - local.get $4 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $8 i64.div_u - local.get $4 local.get $5 + local.get $6 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $4 loop $for-loop|3 - local.get $6 + local.get $4 local.get $7 - i32.gt_u + i32.lt_u if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $8 + local.tee $13 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $11 - local.get $6 + local.get $13 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $3 @@ -8795,51 +8757,51 @@ i32.const 1 i32.add local.get $1 - local.get $10 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns<~lib/array/Array> local.get $3 - local.get $12 + local.get $11 i32.add i32.const -1 i32.store - local.get $8 + local.get $13 local.set $3 end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|3 end end - local.get $12 - local.get $7 + local.get $11 + local.get $4 i32.const 2 i32.shl - local.tee $6 + local.tee $7 i32.add local.get $3 i32.store - local.get $6 - local.get $11 + local.get $7 + local.get $10 i32.add local.get $1 i32.store - local.get $4 - local.set $3 local.get $5 + local.set $3 + local.get $6 local.set $1 - local.get $7 - local.set $6 + local.get $4 + local.set $7 br $while-continue|2 end end loop $for-loop|4 - local.get $6 + local.get $7 if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add @@ -8850,32 +8812,30 @@ if local.get $0 local.get $1 - local.get $11 - local.get $6 + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns<~lib/array/Array> end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|4 end end - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free - local.get $12 - call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -12502,8 +12462,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) + (local $8 i64) + (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) @@ -12511,94 +12471,94 @@ local.get $1 i32.const 1 i32.sub - local.set $13 + local.set $12 local.get $1 i32.const 128 i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 i32.load8_u offset=1 - local.set $5 + local.set $1 local.get $0 i32.load8_u offset=2 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $5 - local.get $3 - local.get $5 - local.get $3 + local.get $1 + local.get $7 + local.get $1 + local.get $7 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $6 select i32.store8 offset=1 local.get $0 i32.load8_u - local.set $7 + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $3 - local.get $5 + local.get $7 local.get $1 + local.get $6 select - local.tee $3 + local.tee $1 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $1 + local.set $7 local.get $0 - local.get $7 local.get $3 local.get $1 + local.get $7 select i32.store8 local.get $0 + local.get $1 local.get $3 local.get $7 - local.get $1 select i32.store8 offset=2 end local.get $0 i32.load8_u - local.set $7 + local.set $1 local.get $0 i32.load8_u offset=1 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 + local.get $1 local.get $7 - local.get $3 + local.get $1 local.get $7 - local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $2 select i32.store8 local.get $0 - local.get $3 local.get $7 local.get $1 + local.get $2 select i32.store8 offset=1 end @@ -12606,7 +12566,7 @@ end local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -12616,51 +12576,45 @@ local.get $1 i32.clz i32.sub - local.tee $4 + local.tee $5 i32.const 2 i32.shl - local.tee $7 - local.set $5 + local.tee $6 + i32.const 1 + i32.shl + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $4 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $12 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.tee $11 + local.get $6 i32.add - local.set $11 + local.set $10 i32.const 0 - local.set $7 + local.set $6 loop $for-loop|1 - local.get $4 - local.get $7 + local.get $5 + local.get $6 i32.gt_u if - local.get $12 - local.get $7 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end @@ -12674,115 +12628,115 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $10 + local.set $9 local.get $0 i32.const 0 - local.get $13 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $7 + local.tee $6 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select local.tee $1 - local.get $7 + local.get $6 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $13 + local.get $12 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $4 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $4 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 - local.get $4 - local.get $13 - local.get $4 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add - local.tee $7 - local.get $7 - local.get $13 + local.tee $6 + local.get $6 + local.get $12 i32.gt_s select - local.tee $5 - local.get $8 + local.tee $6 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $4 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $8 i64.div_u - local.get $4 local.get $5 + local.get $6 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $4 loop $for-loop|3 - local.get $6 + local.get $4 local.get $7 - i32.gt_u + i32.lt_u if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $8 + local.tee $13 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $11 - local.get $6 + local.get $13 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $3 @@ -12791,51 +12745,51 @@ i32.const 1 i32.add local.get $1 - local.get $10 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $11 i32.add i32.const -1 i32.store - local.get $8 + local.get $13 local.set $3 end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|3 end end - local.get $12 - local.get $7 + local.get $11 + local.get $4 i32.const 2 i32.shl - local.tee $6 + local.tee $7 i32.add local.get $3 i32.store - local.get $6 - local.get $11 + local.get $7 + local.get $10 i32.add local.get $1 i32.store - local.get $4 - local.set $3 local.get $5 + local.set $3 + local.get $6 local.set $1 - local.get $7 - local.set $6 + local.get $4 + local.set $7 br $while-continue|2 end end loop $for-loop|4 - local.get $6 + local.get $7 if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add @@ -12846,32 +12800,30 @@ if local.get $0 local.get $1 - local.get $11 - local.get $6 + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|4 end end - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free - local.get $12 - call $~lib/rt/tlsf/__free ) (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) (local $2 i32) diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 984ad1c4ac..1f47c29292 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -55,9 +55,6 @@ (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) (global $std/array/charset i32 (i32.const 6288)) - (global $~lib/util/sort/INSERTION_SORT_THRESHOLD i32 (i32.const 128)) - (global $~lib/util/sort/EMPTY i32 (i32.const -1)) - (global $~lib/util/sort/MIN_RUN_LENGTH i32 (i32.const 32)) (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) @@ -7248,7 +7245,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -7393,10 +7390,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $5 @@ -7412,7 +7412,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $5 i32.const 1 @@ -7441,12 +7441,12 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $12 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $5 @@ -7486,13 +7486,13 @@ i32.add local.set $19 local.get $19 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $20 local.get $5 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -7533,7 +7533,7 @@ i32.load local.set $23 local.get $23 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -7557,7 +7557,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $21 @@ -7607,7 +7607,7 @@ i32.load local.set $22 local.get $22 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -7634,8 +7634,6 @@ end local.get $14 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) @@ -8339,7 +8337,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -8484,10 +8482,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $5 @@ -8503,7 +8504,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $5 i32.const 1 @@ -8532,12 +8533,12 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $12 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $5 @@ -8577,13 +8578,13 @@ i32.add local.set $19 local.get $19 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $20 local.get $5 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -8624,7 +8625,7 @@ i32.load local.set $23 local.get $23 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -8648,7 +8649,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $21 @@ -8698,7 +8699,7 @@ i32.load local.set $22 local.get $22 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -8725,8 +8726,6 @@ end local.get $14 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) @@ -9458,7 +9457,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -9603,10 +9602,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $7 @@ -9622,7 +9624,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $7 i32.const 1 @@ -9651,12 +9653,12 @@ i32.add local.set $16 local.get $16 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $6 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $7 @@ -9696,13 +9698,13 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $18 local.get $7 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -9743,7 +9745,7 @@ i32.load local.set $21 local.get $21 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -9767,7 +9769,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $19 @@ -9817,7 +9819,7 @@ i32.load local.set $20 local.get $20 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -9844,8 +9846,6 @@ end local.get $13 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) @@ -10441,7 +10441,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -10586,10 +10586,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $7 @@ -10605,7 +10608,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $7 i32.const 1 @@ -10634,12 +10637,12 @@ i32.add local.set $16 local.get $16 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $6 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $7 @@ -10679,13 +10682,13 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $18 local.get $7 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -10726,7 +10729,7 @@ i32.load local.set $21 local.get $21 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -10750,7 +10753,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $19 @@ -10800,7 +10803,7 @@ i32.load local.set $20 local.get $20 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -10827,8 +10830,6 @@ end local.get $13 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) @@ -11519,7 +11520,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -11684,10 +11685,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $7 @@ -11703,7 +11707,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $7 i32.const 1 @@ -11732,12 +11736,12 @@ i32.add local.set $16 local.get $16 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $6 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $7 @@ -11777,13 +11781,13 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $18 local.get $7 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -11824,7 +11828,7 @@ i32.load local.set $21 local.get $21 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -11848,7 +11852,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $19 @@ -11898,7 +11902,7 @@ i32.load local.set $20 local.get $20 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -11925,8 +11929,6 @@ end local.get $13 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer @@ -12444,7 +12446,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -12609,10 +12611,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $7 @@ -12628,7 +12633,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $7 i32.const 1 @@ -12657,12 +12662,12 @@ i32.add local.set $16 local.get $16 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $6 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $7 @@ -12702,13 +12707,13 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $18 local.get $7 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -12749,7 +12754,7 @@ i32.load local.set $21 local.get $21 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -12773,7 +12778,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $19 @@ -12823,7 +12828,7 @@ i32.load local.set $20 local.get $20 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -12850,8 +12855,6 @@ end local.get $13 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer @@ -13282,7 +13285,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -13447,10 +13450,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $7 @@ -13466,7 +13472,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $7 i32.const 1 @@ -13495,12 +13501,12 @@ i32.add local.set $16 local.get $16 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $6 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $7 @@ -13540,13 +13546,13 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $18 local.get $7 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -13587,7 +13593,7 @@ i32.load local.set $21 local.get $21 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -13611,7 +13617,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $19 @@ -13661,7 +13667,7 @@ i32.load local.set $20 local.get $20 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -13688,8 +13694,6 @@ end local.get $13 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer @@ -14479,7 +14483,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -14644,10 +14648,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $7 @@ -14663,7 +14670,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $7 i32.const 1 @@ -14692,12 +14699,12 @@ i32.add local.set $16 local.get $16 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $6 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $7 @@ -14737,13 +14744,13 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $18 local.get $7 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -14784,7 +14791,7 @@ i32.load local.set $21 local.get $21 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -14808,7 +14815,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $19 @@ -14858,7 +14865,7 @@ i32.load local.set $20 local.get $20 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -14885,8 +14892,6 @@ end local.get $13 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer @@ -20174,7 +20179,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -20319,10 +20324,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $7 @@ -20338,7 +20346,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $7 i32.const 1 @@ -20367,12 +20375,12 @@ i32.add local.set $16 local.get $16 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $6 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $7 @@ -20412,13 +20420,13 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $18 local.get $7 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -20459,7 +20467,7 @@ i32.load local.set $21 local.get $21 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -20483,7 +20491,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $19 @@ -20533,7 +20541,7 @@ i32.load local.set $20 local.get $20 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -20560,8 +20568,6 @@ end local.get $13 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index df950d98e6..4d3efb1c20 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3463,42 +3463,42 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 f64) - (local $11 f64) - (local $12 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 f64) (local $13 i32) (local $14 f64) - (local $15 i32) - (local $16 i64) + (local $15 f64) + (local $16 i32) local.get $1 i32.const 1 i32.sub - local.set $9 + local.set $16 local.get $1 i32.const 128 i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 f64.load offset=8 - local.set $14 + local.set $15 local.get $0 f64.load offset=16 - local.set $10 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 + local.get $15 local.get $14 - local.get $10 + local.get $15 local.get $14 - local.get $10 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3509,15 +3509,15 @@ f64.store offset=8 local.get $0 f64.load - local.set $11 + local.set $12 i32.const 2 global.set $~argumentsLength - local.get $11 - local.get $10 + local.get $12 local.get $14 + local.get $15 local.get $1 select - local.tee $10 + local.tee $15 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3525,31 +3525,31 @@ i32.shr_u local.set $1 local.get $0 - local.get $11 - local.get $10 + local.get $12 + local.get $15 local.get $1 select f64.store local.get $0 - local.get $10 - local.get $11 + local.get $15 + local.get $12 local.get $1 select f64.store offset=16 end local.get $0 f64.load - local.set $11 + local.set $15 local.get $0 f64.load offset=8 - local.set $10 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $11 - local.get $10 - local.get $11 - local.get $10 + local.get $15 + local.get $14 + local.get $15 + local.get $14 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3559,8 +3559,8 @@ select f64.store local.get $0 - local.get $10 - local.get $11 + local.get $14 + local.get $15 local.get $1 select f64.store offset=8 @@ -3569,7 +3569,7 @@ end local.get $0 i32.const 0 - local.get $9 + local.get $16 i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -3579,22 +3579,13 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $5 i32.const 2 i32.shl - local.tee $4 - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $12 + local.tee $7 + i32.const 1 + i32.shl + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -3605,25 +3596,28 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $13 + local.tee $13 + local.get $7 + i32.add + local.set $11 i32.const 0 - local.set $4 + local.set $7 loop $for-loop|1 - local.get $4 - local.get $6 - i32.lt_u + local.get $5 + local.get $7 + i32.gt_u if - local.get $12 - local.get $4 + local.get $13 + local.get $7 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $4 + local.get $7 i32.const 1 i32.add - local.set $4 + local.set $7 br $for-loop|1 end end @@ -3641,83 +3635,83 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $15 + local.set $10 local.get $0 i32.const 0 - local.get $9 + local.get $16 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $4 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $16 i32.const 31 - local.get $9 + local.get $16 i32.const 31 i32.lt_s select local.tee $1 - local.get $4 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $9 + local.get $16 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $6 - local.get $9 + local.tee $5 + local.get $16 local.get $2 call $~lib/util/sort/extendRunRight local.tee $7 - local.get $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 - local.get $6 - local.get $9 - local.get $6 + local.get $5 + local.get $16 + local.get $5 i32.const 31 i32.add - local.tee $4 - local.get $4 - local.get $9 + local.tee $7 + local.get $7 + local.get $16 i32.gt_s select local.tee $7 - local.get $8 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $16 i32.const 1 i32.add i64.extend_i32_u - local.tee $16 + local.tee $9 i64.div_u - local.get $6 + local.get $5 local.get $7 i32.add i32.const 1 @@ -3725,7 +3719,7 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $16 + local.get $9 i64.div_u i64.xor i32.wrap_i64 @@ -3733,11 +3727,11 @@ local.set $4 loop $for-loop|3 local.get $4 - local.get $5 + local.get $6 i32.lt_u if - local.get $12 - local.get $5 + local.get $13 + local.get $6 i32.const 2 i32.shl i32.add @@ -3748,8 +3742,8 @@ if local.get $0 local.get $8 - local.get $13 - local.get $5 + local.get $11 + local.get $6 i32.const 2 i32.shl local.tee $3 @@ -3758,51 +3752,51 @@ i32.const 1 i32.add local.get $1 - local.get $15 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $13 i32.add i32.const -1 i32.store local.get $8 local.set $3 end - local.get $5 + local.get $6 i32.const 1 i32.sub - local.set $5 + local.set $6 br $for-loop|3 end end - local.get $12 + local.get $13 local.get $4 i32.const 2 i32.shl - local.tee $5 + local.tee $6 i32.add local.get $3 i32.store - local.get $5 - local.get $13 + local.get $6 + local.get $11 i32.add local.get $1 i32.store - local.get $6 + local.get $5 local.set $3 local.get $7 local.set $1 local.get $4 - local.set $5 + local.set $6 br $while-continue|2 end end loop $for-loop|4 - local.get $5 + local.get $6 if - local.get $12 - local.get $5 + local.get $13 + local.get $6 i32.const 2 i32.shl i32.add @@ -3813,32 +3807,30 @@ if local.get $0 local.get $1 - local.get $13 - local.get $5 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $15 + local.get $16 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $5 + local.get $6 i32.const 1 i32.sub - local.set $5 + local.set $6 br $for-loop|4 end end - local.get $15 + local.get $10 call $~lib/rt/tlsf/__free local.get $13 call $~lib/rt/tlsf/__free - local.get $12 - call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -29681,8 +29673,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) + (local $8 i64) + (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) @@ -29690,94 +29682,94 @@ local.get $1 i32.const 1 i32.sub - local.set $13 + local.set $12 local.get $1 i32.const 128 i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 i32.load8_s offset=1 - local.set $5 + local.set $1 local.get $0 i32.load8_s offset=2 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $5 - local.get $3 - local.get $5 - local.get $3 + local.get $1 + local.get $7 + local.get $1 + local.get $7 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $6 select i32.store8 offset=1 local.get $0 i32.load8_s - local.set $7 + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $3 - local.get $5 + local.get $7 local.get $1 + local.get $6 select - local.tee $3 + local.tee $1 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $1 + local.set $7 local.get $0 - local.get $7 local.get $3 local.get $1 + local.get $7 select i32.store8 local.get $0 + local.get $1 local.get $3 local.get $7 - local.get $1 select i32.store8 offset=2 end local.get $0 i32.load8_s - local.set $7 + local.set $1 local.get $0 i32.load8_s offset=1 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 + local.get $1 local.get $7 - local.get $3 + local.get $1 local.get $7 - local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $2 select i32.store8 local.get $0 - local.get $3 local.get $7 local.get $1 + local.get $2 select i32.store8 offset=1 end @@ -29785,7 +29777,7 @@ end local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -29795,51 +29787,45 @@ local.get $1 i32.clz i32.sub - local.tee $4 + local.tee $5 i32.const 2 i32.shl - local.tee $7 - local.set $5 + local.tee $6 + i32.const 1 + i32.shl + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $4 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $12 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.tee $11 + local.get $6 i32.add - local.set $11 + local.set $10 i32.const 0 - local.set $7 + local.set $6 loop $for-loop|1 - local.get $4 - local.get $7 + local.get $5 + local.get $6 i32.gt_u if - local.get $12 - local.get $7 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end @@ -29853,115 +29839,115 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $10 + local.set $9 local.get $0 i32.const 0 - local.get $13 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $7 + local.tee $6 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select local.tee $1 - local.get $7 + local.get $6 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $13 + local.get $12 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $4 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $4 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 - local.get $4 - local.get $13 - local.get $4 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add - local.tee $7 - local.get $7 - local.get $13 + local.tee $6 + local.get $6 + local.get $12 i32.gt_s select - local.tee $5 - local.get $8 + local.tee $6 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $4 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $8 i64.div_u - local.get $4 local.get $5 + local.get $6 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $4 loop $for-loop|3 - local.get $6 + local.get $4 local.get $7 - i32.gt_u + i32.lt_u if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $8 + local.tee $13 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $11 - local.get $6 + local.get $13 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $3 @@ -29970,51 +29956,51 @@ i32.const 1 i32.add local.get $1 - local.get $10 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $11 i32.add i32.const -1 i32.store - local.get $8 + local.get $13 local.set $3 end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|3 end end - local.get $12 - local.get $7 + local.get $11 + local.get $4 i32.const 2 i32.shl - local.tee $6 + local.tee $7 i32.add local.get $3 i32.store - local.get $6 - local.get $11 + local.get $7 + local.get $10 i32.add local.get $1 i32.store - local.get $4 - local.set $3 local.get $5 + local.set $3 + local.get $6 local.set $1 - local.get $7 - local.set $6 + local.get $4 + local.set $7 br $while-continue|2 end end loop $for-loop|4 - local.get $6 + local.get $7 if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add @@ -30025,32 +30011,30 @@ if local.get $0 local.get $1 - local.get $11 - local.get $6 + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|4 end end - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free - local.get $12 - call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -30520,8 +30504,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) + (local $8 i64) + (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) @@ -30529,94 +30513,94 @@ local.get $1 i32.const 1 i32.sub - local.set $13 + local.set $12 local.get $1 i32.const 128 i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 i32.load8_u offset=1 - local.set $5 + local.set $1 local.get $0 i32.load8_u offset=2 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $5 - local.get $3 - local.get $5 - local.get $3 + local.get $1 + local.get $7 + local.get $1 + local.get $7 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $6 select i32.store8 offset=1 local.get $0 i32.load8_u - local.set $7 + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $3 - local.get $5 + local.get $7 local.get $1 + local.get $6 select - local.tee $3 + local.tee $1 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $1 + local.set $7 local.get $0 - local.get $7 local.get $3 local.get $1 + local.get $7 select i32.store8 local.get $0 + local.get $1 local.get $3 local.get $7 - local.get $1 select i32.store8 offset=2 end local.get $0 i32.load8_u - local.set $7 + local.set $1 local.get $0 i32.load8_u offset=1 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 + local.get $1 local.get $7 - local.get $3 + local.get $1 local.get $7 - local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $2 select i32.store8 local.get $0 - local.get $3 local.get $7 local.get $1 + local.get $2 select i32.store8 offset=1 end @@ -30624,7 +30608,7 @@ end local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -30634,51 +30618,45 @@ local.get $1 i32.clz i32.sub - local.tee $4 + local.tee $5 i32.const 2 i32.shl - local.tee $7 - local.set $5 + local.tee $6 + i32.const 1 + i32.shl + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $4 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $12 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.tee $11 + local.get $6 i32.add - local.set $11 + local.set $10 i32.const 0 - local.set $7 + local.set $6 loop $for-loop|1 - local.get $4 - local.get $7 + local.get $5 + local.get $6 i32.gt_u if - local.get $12 - local.get $7 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end @@ -30692,115 +30670,115 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $10 + local.set $9 local.get $0 i32.const 0 - local.get $13 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $7 + local.tee $6 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select local.tee $1 - local.get $7 + local.get $6 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $13 + local.get $12 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $4 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $4 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 - local.get $4 - local.get $13 - local.get $4 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add - local.tee $7 - local.get $7 - local.get $13 + local.tee $6 + local.get $6 + local.get $12 i32.gt_s select - local.tee $5 - local.get $8 + local.tee $6 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $4 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $8 i64.div_u - local.get $4 local.get $5 + local.get $6 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $4 loop $for-loop|3 - local.get $6 + local.get $4 local.get $7 - i32.gt_u + i32.lt_u if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $8 + local.tee $13 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $11 - local.get $6 + local.get $13 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $3 @@ -30809,51 +30787,51 @@ i32.const 1 i32.add local.get $1 - local.get $10 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $11 i32.add i32.const -1 i32.store - local.get $8 + local.get $13 local.set $3 end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|3 end end - local.get $12 - local.get $7 + local.get $11 + local.get $4 i32.const 2 i32.shl - local.tee $6 + local.tee $7 i32.add local.get $3 i32.store - local.get $6 - local.get $11 + local.get $7 + local.get $10 i32.add local.get $1 i32.store - local.get $4 - local.set $3 local.get $5 + local.set $3 + local.get $6 local.set $1 - local.get $7 - local.set $6 + local.get $4 + local.set $7 br $while-continue|2 end end loop $for-loop|4 - local.get $6 + local.get $7 if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add @@ -30864,32 +30842,30 @@ if local.get $0 local.get $1 - local.get $11 - local.get $6 + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|4 end end - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free - local.get $12 - call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -31407,8 +31383,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) + (local $8 i64) + (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) @@ -31416,94 +31392,94 @@ local.get $1 i32.const 1 i32.sub - local.set $13 + local.set $12 local.get $1 i32.const 128 i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 i32.load16_s offset=2 - local.set $5 + local.set $1 local.get $0 i32.load16_s offset=4 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $5 - local.get $3 - local.get $5 - local.get $3 + local.get $1 + local.get $7 + local.get $1 + local.get $7 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $6 select i32.store16 offset=2 local.get $0 i32.load16_s - local.set $7 + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $3 - local.get $5 + local.get $7 local.get $1 + local.get $6 select - local.tee $3 + local.tee $1 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $1 + local.set $7 local.get $0 - local.get $7 local.get $3 local.get $1 + local.get $7 select i32.store16 local.get $0 + local.get $1 local.get $3 local.get $7 - local.get $1 select i32.store16 offset=4 end local.get $0 i32.load16_s - local.set $7 + local.set $1 local.get $0 i32.load16_s offset=2 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 + local.get $1 local.get $7 - local.get $3 + local.get $1 local.get $7 - local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $2 select i32.store16 local.get $0 - local.get $3 local.get $7 local.get $1 + local.get $2 select i32.store16 offset=2 end @@ -31511,7 +31487,7 @@ end local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -31521,51 +31497,45 @@ local.get $1 i32.clz i32.sub - local.tee $4 + local.tee $5 i32.const 2 i32.shl - local.tee $7 - local.set $5 + local.tee $6 + i32.const 1 + i32.shl + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $4 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $12 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.tee $11 + local.get $6 i32.add - local.set $11 + local.set $10 i32.const 0 - local.set $7 + local.set $6 loop $for-loop|1 - local.get $4 - local.get $7 + local.get $5 + local.get $6 i32.gt_u if - local.get $12 - local.get $7 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end @@ -31583,115 +31553,115 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $10 + local.set $9 local.get $0 i32.const 0 - local.get $13 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $7 + local.tee $6 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select local.tee $1 - local.get $7 + local.get $6 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $13 + local.get $12 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $4 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $4 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 - local.get $4 - local.get $13 - local.get $4 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add - local.tee $7 - local.get $7 - local.get $13 + local.tee $6 + local.get $6 + local.get $12 i32.gt_s select - local.tee $5 - local.get $8 + local.tee $6 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $4 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $8 i64.div_u - local.get $4 local.get $5 + local.get $6 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $4 loop $for-loop|3 - local.get $6 + local.get $4 local.get $7 - i32.gt_u + i32.lt_u if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $8 + local.tee $13 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $11 - local.get $6 + local.get $13 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $3 @@ -31700,51 +31670,51 @@ i32.const 1 i32.add local.get $1 - local.get $10 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $11 i32.add i32.const -1 i32.store - local.get $8 + local.get $13 local.set $3 end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|3 end end - local.get $12 - local.get $7 + local.get $11 + local.get $4 i32.const 2 i32.shl - local.tee $6 + local.tee $7 i32.add local.get $3 i32.store - local.get $6 - local.get $11 + local.get $7 + local.get $10 i32.add local.get $1 i32.store - local.get $4 - local.set $3 local.get $5 + local.set $3 + local.get $6 local.set $1 - local.get $7 - local.set $6 + local.get $4 + local.set $7 br $while-continue|2 end end loop $for-loop|4 - local.get $6 + local.get $7 if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add @@ -31755,32 +31725,30 @@ if local.get $0 local.get $1 - local.get $11 - local.get $6 + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|4 end end - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free - local.get $12 - call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -32290,8 +32258,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) + (local $8 i64) + (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) @@ -32299,94 +32267,94 @@ local.get $1 i32.const 1 i32.sub - local.set $13 + local.set $12 local.get $1 i32.const 128 i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 i32.load16_u offset=2 - local.set $5 + local.set $1 local.get $0 i32.load16_u offset=4 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $5 - local.get $3 - local.get $5 - local.get $3 + local.get $1 + local.get $7 + local.get $1 + local.get $7 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $6 select i32.store16 offset=2 local.get $0 i32.load16_u - local.set $7 + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $3 - local.get $5 + local.get $7 local.get $1 + local.get $6 select - local.tee $3 + local.tee $1 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $1 + local.set $7 local.get $0 - local.get $7 local.get $3 local.get $1 + local.get $7 select i32.store16 local.get $0 + local.get $1 local.get $3 local.get $7 - local.get $1 select i32.store16 offset=4 end local.get $0 i32.load16_u - local.set $7 + local.set $1 local.get $0 i32.load16_u offset=2 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 + local.get $1 local.get $7 - local.get $3 + local.get $1 local.get $7 - local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $2 select i32.store16 local.get $0 - local.get $3 local.get $7 local.get $1 + local.get $2 select i32.store16 offset=2 end @@ -32394,7 +32362,7 @@ end local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -32404,51 +32372,45 @@ local.get $1 i32.clz i32.sub - local.tee $4 + local.tee $5 i32.const 2 i32.shl - local.tee $7 - local.set $5 + local.tee $6 + i32.const 1 + i32.shl + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $4 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $12 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.tee $11 + local.get $6 i32.add - local.set $11 + local.set $10 i32.const 0 - local.set $7 + local.set $6 loop $for-loop|1 - local.get $4 - local.get $7 + local.get $5 + local.get $6 i32.gt_u if - local.get $12 - local.get $7 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end @@ -32466,115 +32428,115 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $10 + local.set $9 local.get $0 i32.const 0 - local.get $13 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $7 + local.tee $6 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select local.tee $1 - local.get $7 + local.get $6 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $13 + local.get $12 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $4 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $4 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 - local.get $4 - local.get $13 - local.get $4 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add - local.tee $7 - local.get $7 - local.get $13 + local.tee $6 + local.get $6 + local.get $12 i32.gt_s select - local.tee $5 - local.get $8 + local.tee $6 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $4 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $8 i64.div_u - local.get $4 local.get $5 + local.get $6 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $4 loop $for-loop|3 - local.get $6 + local.get $4 local.get $7 - i32.gt_u + i32.lt_u if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $8 + local.tee $13 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $11 - local.get $6 + local.get $13 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $3 @@ -32583,51 +32545,51 @@ i32.const 1 i32.add local.get $1 - local.get $10 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $11 i32.add i32.const -1 i32.store - local.get $8 + local.get $13 local.set $3 end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|3 end end - local.get $12 - local.get $7 + local.get $11 + local.get $4 i32.const 2 i32.shl - local.tee $6 + local.tee $7 i32.add local.get $3 i32.store - local.get $6 - local.get $11 + local.get $7 + local.get $10 i32.add local.get $1 i32.store - local.get $4 - local.set $3 local.get $5 + local.set $3 + local.get $6 local.set $1 - local.get $7 - local.set $6 + local.get $4 + local.set $7 br $while-continue|2 end end loop $for-loop|4 - local.get $6 + local.get $7 if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add @@ -32638,32 +32600,30 @@ if local.get $0 local.get $1 - local.get $11 - local.get $6 + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|4 end end - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free - local.get $12 - call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -33183,8 +33143,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) + (local $8 i64) + (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) @@ -33192,94 +33152,94 @@ local.get $1 i32.const 1 i32.sub - local.set $13 + local.set $12 local.get $1 i32.const 128 i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 i32.load offset=4 - local.set $5 + local.set $1 local.get $0 i32.load offset=8 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $5 - local.get $3 - local.get $5 - local.get $3 + local.get $1 + local.get $7 + local.get $1 + local.get $7 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $6 select i32.store offset=4 local.get $0 i32.load - local.set $7 + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $3 - local.get $5 + local.get $7 local.get $1 + local.get $6 select - local.tee $3 + local.tee $1 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $1 + local.set $7 local.get $0 - local.get $7 local.get $3 local.get $1 + local.get $7 select i32.store local.get $0 + local.get $1 local.get $3 local.get $7 - local.get $1 select i32.store offset=8 end local.get $0 i32.load - local.set $7 + local.set $1 local.get $0 i32.load offset=4 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 + local.get $1 local.get $7 - local.get $3 + local.get $1 local.get $7 - local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 local.get $7 local.get $1 + local.get $2 select i32.store offset=4 end @@ -33287,7 +33247,7 @@ end local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -33297,51 +33257,45 @@ local.get $1 i32.clz i32.sub - local.tee $4 + local.tee $5 i32.const 2 i32.shl - local.tee $7 - local.set $5 + local.tee $6 + i32.const 1 + i32.shl + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $4 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $12 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.tee $11 + local.get $6 i32.add - local.set $11 + local.set $10 i32.const 0 - local.set $7 + local.set $6 loop $for-loop|1 - local.get $4 - local.get $7 + local.get $5 + local.get $6 i32.gt_u if - local.get $12 - local.get $7 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end @@ -33359,115 +33313,115 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $10 + local.set $9 local.get $0 i32.const 0 - local.get $13 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $7 + local.tee $6 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select local.tee $1 - local.get $7 + local.get $6 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $13 + local.get $12 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $4 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $4 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 - local.get $4 - local.get $13 - local.get $4 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add - local.tee $7 - local.get $7 - local.get $13 + local.tee $6 + local.get $6 + local.get $12 i32.gt_s select - local.tee $5 - local.get $8 + local.tee $6 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $4 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $8 i64.div_u - local.get $4 local.get $5 + local.get $6 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $4 loop $for-loop|3 - local.get $6 + local.get $4 local.get $7 - i32.gt_u + i32.lt_u if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $8 + local.tee $13 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $11 - local.get $6 + local.get $13 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $3 @@ -33476,51 +33430,51 @@ i32.const 1 i32.add local.get $1 - local.get $10 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $11 i32.add i32.const -1 i32.store - local.get $8 + local.get $13 local.set $3 end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|3 end end - local.get $12 - local.get $7 + local.get $11 + local.get $4 i32.const 2 i32.shl - local.tee $6 + local.tee $7 i32.add local.get $3 i32.store - local.get $6 - local.get $11 + local.get $7 + local.get $10 i32.add local.get $1 i32.store - local.get $4 - local.set $3 local.get $5 + local.set $3 + local.get $6 local.set $1 - local.get $7 - local.set $6 + local.get $4 + local.set $7 br $while-continue|2 end end loop $for-loop|4 - local.get $6 + local.get $7 if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add @@ -33531,32 +33485,30 @@ if local.get $0 local.get $1 - local.get $11 - local.get $6 + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|4 end end - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free - local.get $12 - call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -34060,8 +34012,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) + (local $8 i64) + (local $9 i32) (local $10 i32) (local $11 i32) (local $12 i32) @@ -34069,94 +34021,94 @@ local.get $1 i32.const 1 i32.sub - local.set $13 + local.set $12 local.get $1 i32.const 128 i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 i32.load offset=4 - local.set $5 + local.set $1 local.get $0 i32.load offset=8 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $5 - local.get $3 - local.get $5 - local.get $3 + local.get $1 + local.get $7 + local.get $1 + local.get $7 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $6 select i32.store offset=4 local.get $0 i32.load - local.set $7 + local.set $3 i32.const 2 global.set $~argumentsLength - local.get $7 local.get $3 - local.get $5 + local.get $7 local.get $1 + local.get $6 select - local.tee $3 + local.tee $1 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $1 + local.set $7 local.get $0 - local.get $7 local.get $3 local.get $1 + local.get $7 select i32.store local.get $0 + local.get $1 local.get $3 local.get $7 - local.get $1 select i32.store offset=8 end local.get $0 i32.load - local.set $7 + local.set $1 local.get $0 i32.load offset=4 - local.set $3 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 + local.get $1 local.get $7 - local.get $3 + local.get $1 local.get $7 - local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $3 local.get $7 local.get $1 + local.get $2 select i32.store offset=4 end @@ -34164,7 +34116,7 @@ end local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -34174,51 +34126,45 @@ local.get $1 i32.clz i32.sub - local.tee $4 + local.tee $5 i32.const 2 i32.shl - local.tee $7 - local.set $5 + local.tee $6 + i32.const 1 + i32.shl + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $5 + local.get $4 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $12 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 + local.tee $11 + local.get $6 i32.add - local.set $11 + local.set $10 i32.const 0 - local.set $7 + local.set $6 loop $for-loop|1 - local.get $4 - local.get $7 + local.get $5 + local.get $6 i32.gt_u if - local.get $12 - local.get $7 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $for-loop|1 end end @@ -34236,115 +34182,115 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $10 + local.set $9 local.get $0 i32.const 0 - local.get $13 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $7 + local.tee $6 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $13 + local.get $12 i32.const 31 - local.get $13 + local.get $12 i32.const 31 i32.lt_s select local.tee $1 - local.get $7 + local.get $6 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $13 + local.get $12 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $4 - local.get $13 + local.tee $5 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $4 + local.tee $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 - local.get $4 - local.get $13 - local.get $4 + local.get $5 + local.get $12 + local.get $5 i32.const 31 i32.add - local.tee $7 - local.get $7 - local.get $13 + local.tee $6 + local.get $6 + local.get $12 i32.gt_s select - local.tee $5 - local.get $8 + local.tee $6 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $4 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $12 i32.const 1 i32.add i64.extend_i32_u - local.tee $9 + local.tee $8 i64.div_u - local.get $4 local.get $5 + local.get $6 i32.add i32.const 1 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $8 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $4 loop $for-loop|3 - local.get $6 + local.get $4 local.get $7 - i32.gt_u + i32.lt_u if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $8 + local.tee $13 i32.const -1 i32.ne if local.get $0 - local.get $8 - local.get $11 - local.get $6 + local.get $13 + local.get $10 + local.get $7 i32.const 2 i32.shl local.tee $3 @@ -34353,51 +34299,51 @@ i32.const 1 i32.add local.get $1 - local.get $10 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $11 i32.add i32.const -1 i32.store - local.get $8 + local.get $13 local.set $3 end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|3 end end - local.get $12 - local.get $7 + local.get $11 + local.get $4 i32.const 2 i32.shl - local.tee $6 + local.tee $7 i32.add local.get $3 i32.store - local.get $6 - local.get $11 + local.get $7 + local.get $10 i32.add local.get $1 i32.store - local.get $4 - local.set $3 local.get $5 + local.set $3 + local.get $6 local.set $1 - local.get $7 - local.set $6 + local.get $4 + local.set $7 br $while-continue|2 end end loop $for-loop|4 - local.get $6 + local.get $7 if - local.get $12 - local.get $6 + local.get $11 + local.get $7 i32.const 2 i32.shl i32.add @@ -34408,32 +34354,30 @@ if local.get $0 local.get $1 - local.get $11 - local.get $6 + local.get $10 + local.get $7 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $13 - local.get $10 + local.get $12 + local.get $9 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $7 i32.const 1 i32.sub - local.set $6 + local.set $7 br $for-loop|4 end end - local.get $10 + local.get $9 call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free - local.get $12 - call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -34947,8 +34891,8 @@ (local $10 i32) (local $11 i64) (local $12 i32) - (local $13 i32) - (local $14 i64) + (local $13 i64) + (local $14 i32) (local $15 i32) local.get $1 i32.const 1 @@ -34959,25 +34903,25 @@ i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 i64.load offset=8 - local.set $14 + local.set $9 local.get $0 i64.load offset=16 - local.set $9 + local.set $11 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 local.get $9 - local.get $14 + local.get $11 local.get $9 + local.get $11 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -34988,12 +34932,12 @@ i64.store offset=8 local.get $0 i64.load - local.set $11 + local.set $13 i32.const 2 global.set $~argumentsLength + local.get $13 local.get $11 local.get $9 - local.get $14 local.get $1 select local.tee $9 @@ -35004,31 +34948,31 @@ i32.shr_u local.set $1 local.get $0 - local.get $11 + local.get $13 local.get $9 local.get $1 select i64.store local.get $0 local.get $9 - local.get $11 + local.get $13 local.get $1 select i64.store offset=16 end local.get $0 i64.load - local.set $11 + local.set $9 local.get $0 i64.load offset=8 - local.set $9 + local.set $11 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $11 local.get $9 local.get $11 local.get $9 + local.get $11 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -35038,8 +34982,8 @@ select i64.store local.get $0 - local.get $9 local.get $11 + local.get $9 local.get $1 select i64.store offset=8 @@ -35062,6 +35006,8 @@ i32.const 2 i32.shl local.tee $4 + i32.const 1 + i32.shl local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz @@ -35073,18 +35019,10 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $12 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT + local.tee $12 local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 i32.add - local.set $13 + local.set $14 i32.const 0 local.set $4 loop $for-loop|1 @@ -35159,12 +35097,12 @@ local.get $10 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $4 local.get $6 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if @@ -35179,8 +35117,8 @@ local.get $10 i32.gt_s select - local.tee $7 - local.get $8 + local.tee $4 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -35196,8 +35134,8 @@ i64.extend_i32_u local.tee $9 i64.div_u + local.get $4 local.get $6 - local.get $7 i32.add i32.const 1 i32.add @@ -35209,11 +35147,11 @@ i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $7 loop $for-loop|3 - local.get $4 local.get $5 - i32.lt_u + local.get $7 + i32.gt_u if local.get $12 local.get $5 @@ -35227,7 +35165,7 @@ if local.get $0 local.get $8 - local.get $13 + local.get $14 local.get $5 i32.const 2 i32.shl @@ -35256,7 +35194,7 @@ end end local.get $12 - local.get $4 + local.get $7 i32.const 2 i32.shl local.tee $5 @@ -35264,15 +35202,15 @@ local.get $3 i32.store local.get $5 - local.get $13 + local.get $14 i32.add local.get $1 i32.store local.get $6 local.set $3 - local.get $7 - local.set $1 local.get $4 + local.set $1 + local.get $7 local.set $5 br $while-continue|2 end @@ -35292,7 +35230,7 @@ if local.get $0 local.get $1 - local.get $13 + local.get $14 local.get $5 i32.const 2 i32.shl @@ -35314,8 +35252,6 @@ end local.get $15 call $~lib/rt/tlsf/__free - local.get $13 - call $~lib/rt/tlsf/__free local.get $12 call $~lib/rt/tlsf/__free ) @@ -35832,8 +35768,8 @@ (local $10 i32) (local $11 i64) (local $12 i32) - (local $13 i32) - (local $14 i64) + (local $13 i64) + (local $14 i32) (local $15 i32) local.get $1 i32.const 1 @@ -35844,25 +35780,25 @@ i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 i64.load offset=8 - local.set $14 + local.set $9 local.get $0 i64.load offset=16 - local.set $9 + local.set $11 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $14 local.get $9 - local.get $14 + local.get $11 local.get $9 + local.get $11 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -35873,12 +35809,12 @@ i64.store offset=8 local.get $0 i64.load - local.set $11 + local.set $13 i32.const 2 global.set $~argumentsLength + local.get $13 local.get $11 local.get $9 - local.get $14 local.get $1 select local.tee $9 @@ -35889,31 +35825,31 @@ i32.shr_u local.set $1 local.get $0 - local.get $11 + local.get $13 local.get $9 local.get $1 select i64.store local.get $0 local.get $9 - local.get $11 + local.get $13 local.get $1 select i64.store offset=16 end local.get $0 i64.load - local.set $11 + local.set $9 local.get $0 i64.load offset=8 - local.set $9 + local.set $11 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $11 local.get $9 local.get $11 local.get $9 + local.get $11 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -35923,8 +35859,8 @@ select i64.store local.get $0 - local.get $9 local.get $11 + local.get $9 local.get $1 select i64.store offset=8 @@ -35947,6 +35883,8 @@ i32.const 2 i32.shl local.tee $4 + i32.const 1 + i32.shl local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz @@ -35958,18 +35896,10 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $12 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT + local.tee $12 local.get $4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 i32.add - local.set $13 + local.set $14 i32.const 0 local.set $4 loop $for-loop|1 @@ -36044,12 +35974,12 @@ local.get $10 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $7 + local.tee $4 local.get $6 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if @@ -36064,8 +35994,8 @@ local.get $10 i32.gt_s select - local.tee $7 - local.get $8 + local.tee $4 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end @@ -36081,8 +36011,8 @@ i64.extend_i32_u local.tee $9 i64.div_u + local.get $4 local.get $6 - local.get $7 i32.add i32.const 1 i32.add @@ -36094,11 +36024,11 @@ i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $7 loop $for-loop|3 - local.get $4 local.get $5 - i32.lt_u + local.get $7 + i32.gt_u if local.get $12 local.get $5 @@ -36112,7 +36042,7 @@ if local.get $0 local.get $8 - local.get $13 + local.get $14 local.get $5 i32.const 2 i32.shl @@ -36141,7 +36071,7 @@ end end local.get $12 - local.get $4 + local.get $7 i32.const 2 i32.shl local.tee $5 @@ -36149,15 +36079,15 @@ local.get $3 i32.store local.get $5 - local.get $13 + local.get $14 i32.add local.get $1 i32.store local.get $6 local.set $3 - local.get $7 - local.set $1 local.get $4 + local.set $1 + local.get $7 local.set $5 br $while-continue|2 end @@ -36177,7 +36107,7 @@ if local.get $0 local.get $1 - local.get $13 + local.get $14 local.get $5 i32.const 2 i32.shl @@ -36199,8 +36129,6 @@ end local.get $15 call $~lib/rt/tlsf/__free - local.get $13 - call $~lib/rt/tlsf/__free local.get $12 call $~lib/rt/tlsf/__free ) @@ -36713,42 +36641,42 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 f32) - (local $11 f32) - (local $12 i32) + (local $9 i64) + (local $10 i32) + (local $11 i32) + (local $12 f32) (local $13 i32) (local $14 f32) - (local $15 i32) - (local $16 i64) + (local $15 f32) + (local $16 i32) local.get $1 i32.const 1 i32.sub - local.set $9 + local.set $16 local.get $1 i32.const 128 i32.le_s if block $break|0 - block $case2|0 + block $case3|0 block $case1|0 block $case0|0 local.get $1 - br_table $case2|0 $case2|0 $case1|0 $case0|0 $break|0 + br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 end local.get $0 f32.load offset=4 - local.set $14 + local.set $15 local.get $0 f32.load offset=8 - local.set $10 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 + local.get $15 local.get $14 - local.get $10 + local.get $15 local.get $14 - local.get $10 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -36759,15 +36687,15 @@ f32.store offset=4 local.get $0 f32.load - local.set $11 + local.set $12 i32.const 2 global.set $~argumentsLength - local.get $11 - local.get $10 + local.get $12 local.get $14 + local.get $15 local.get $1 select - local.tee $10 + local.tee $15 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -36775,31 +36703,31 @@ i32.shr_u local.set $1 local.get $0 - local.get $11 - local.get $10 + local.get $12 + local.get $15 local.get $1 select f32.store local.get $0 - local.get $10 - local.get $11 + local.get $15 + local.get $12 local.get $1 select f32.store offset=8 end local.get $0 f32.load - local.set $11 + local.set $15 local.get $0 f32.load offset=4 - local.set $10 + local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $11 - local.get $10 - local.get $11 - local.get $10 + local.get $15 + local.get $14 + local.get $15 + local.get $14 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -36809,8 +36737,8 @@ select f32.store local.get $0 - local.get $10 - local.get $11 + local.get $14 + local.get $15 local.get $1 select f32.store offset=4 @@ -36819,7 +36747,7 @@ end local.get $0 i32.const 0 - local.get $9 + local.get $16 i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -36829,22 +36757,13 @@ local.get $1 i32.clz i32.sub - local.tee $6 + local.tee $5 i32.const 2 i32.shl - local.tee $4 - local.set $7 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $7 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.set $12 + local.tee $7 + i32.const 1 + i32.shl + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -36855,25 +36774,28 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $13 + local.tee $13 + local.get $7 + i32.add + local.set $11 i32.const 0 - local.set $4 + local.set $7 loop $for-loop|1 - local.get $4 - local.get $6 - i32.lt_u + local.get $5 + local.get $7 + i32.gt_u if - local.get $12 - local.get $4 + local.get $13 + local.get $7 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $4 + local.get $7 i32.const 1 i32.add - local.set $4 + local.set $7 br $for-loop|1 end end @@ -36891,83 +36813,83 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $15 + local.set $10 local.get $0 i32.const 0 - local.get $9 + local.get $16 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $4 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $9 + local.get $16 i32.const 31 - local.get $9 + local.get $16 i32.const 31 i32.lt_s select local.tee $1 - local.get $4 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $9 + local.get $16 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $6 - local.get $9 + local.tee $5 + local.get $16 local.get $2 call $~lib/util/sort/extendRunRight local.tee $7 - local.get $6 + local.get $5 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $4 i32.const 32 i32.lt_s if local.get $0 - local.get $6 - local.get $9 - local.get $6 + local.get $5 + local.get $16 + local.get $5 i32.const 31 i32.add - local.tee $4 - local.get $4 - local.get $9 + local.tee $7 + local.get $7 + local.get $16 i32.gt_s select local.tee $7 - local.get $8 + local.get $4 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $6 + local.get $5 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $16 i32.const 1 i32.add i64.extend_i32_u - local.tee $16 + local.tee $9 i64.div_u - local.get $6 + local.get $5 local.get $7 i32.add i32.const 1 @@ -36975,7 +36897,7 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $16 + local.get $9 i64.div_u i64.xor i32.wrap_i64 @@ -36983,11 +36905,11 @@ local.set $4 loop $for-loop|3 local.get $4 - local.get $5 + local.get $6 i32.lt_u if - local.get $12 - local.get $5 + local.get $13 + local.get $6 i32.const 2 i32.shl i32.add @@ -36998,8 +36920,8 @@ if local.get $0 local.get $8 - local.get $13 - local.get $5 + local.get $11 + local.get $6 i32.const 2 i32.shl local.tee $3 @@ -37008,51 +36930,51 @@ i32.const 1 i32.add local.get $1 - local.get $15 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $12 + local.get $13 i32.add i32.const -1 i32.store local.get $8 local.set $3 end - local.get $5 + local.get $6 i32.const 1 i32.sub - local.set $5 + local.set $6 br $for-loop|3 end end - local.get $12 + local.get $13 local.get $4 i32.const 2 i32.shl - local.tee $5 + local.tee $6 i32.add local.get $3 i32.store - local.get $5 - local.get $13 + local.get $6 + local.get $11 i32.add local.get $1 i32.store - local.get $6 + local.get $5 local.set $3 local.get $7 local.set $1 local.get $4 - local.set $5 + local.set $6 br $while-continue|2 end end loop $for-loop|4 - local.get $5 + local.get $6 if - local.get $12 - local.get $5 + local.get $13 + local.get $6 i32.const 2 i32.shl i32.add @@ -37063,32 +36985,30 @@ if local.get $0 local.get $1 - local.get $13 - local.get $5 + local.get $11 + local.get $6 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $9 - local.get $15 + local.get $16 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $5 + local.get $6 i32.const 1 i32.sub - local.set $5 + local.set $6 br $for-loop|4 end end - local.get $15 + local.get $10 call $~lib/rt/tlsf/__free local.get $13 call $~lib/rt/tlsf/__free - local.get $12 - call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Float32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 255cca02ba..b30c3b6a4a 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -76,9 +76,6 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/util/sort/INSERTION_SORT_THRESHOLD i32 (i32.const 128)) - (global $~lib/util/sort/EMPTY i32 (i32.const -1)) - (global $~lib/util/sort/MIN_RUN_LENGTH i32 (i32.const 32)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) @@ -4061,7 +4058,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -4206,10 +4203,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $5 @@ -4225,7 +4225,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $5 i32.const 1 @@ -4254,12 +4254,12 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $12 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $5 @@ -4299,13 +4299,13 @@ i32.add local.set $19 local.get $19 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $20 local.get $5 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -4346,7 +4346,7 @@ i32.load local.set $23 local.get $23 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -4370,7 +4370,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $21 @@ -4420,7 +4420,7 @@ i32.load local.set $22 local.get $22 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -4447,8 +4447,6 @@ end local.get $14 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) @@ -33876,7 +33874,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -34021,10 +34019,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $7 @@ -34040,7 +34041,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $7 i32.const 1 @@ -34069,12 +34070,12 @@ i32.add local.set $16 local.get $16 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $6 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $7 @@ -34114,13 +34115,13 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $18 local.get $7 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -34161,7 +34162,7 @@ i32.load local.set $21 local.get $21 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -34185,7 +34186,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $19 @@ -34235,7 +34236,7 @@ i32.load local.set $20 local.get $20 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -34262,8 +34263,6 @@ end local.get $13 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) @@ -34882,7 +34881,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -35027,10 +35026,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $7 @@ -35046,7 +35048,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $7 i32.const 1 @@ -35075,12 +35077,12 @@ i32.add local.set $16 local.get $16 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $6 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $7 @@ -35120,13 +35122,13 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $18 local.get $7 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -35167,7 +35169,7 @@ i32.load local.set $21 local.get $21 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -35191,7 +35193,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $19 @@ -35241,7 +35243,7 @@ i32.load local.set $20 local.get $20 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -35268,8 +35270,6 @@ end local.get $13 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) @@ -35998,7 +35998,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -36143,10 +36143,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $7 @@ -36162,7 +36165,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $7 i32.const 1 @@ -36191,12 +36194,12 @@ i32.add local.set $16 local.get $16 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $6 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $7 @@ -36236,13 +36239,13 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $18 local.get $7 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -36283,7 +36286,7 @@ i32.load local.set $21 local.get $21 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -36307,7 +36310,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $19 @@ -36357,7 +36360,7 @@ i32.load local.set $20 local.get $20 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -36384,8 +36387,6 @@ end local.get $13 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) @@ -37004,7 +37005,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -37149,10 +37150,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $7 @@ -37168,7 +37172,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $7 i32.const 1 @@ -37197,12 +37201,12 @@ i32.add local.set $16 local.get $16 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $6 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $7 @@ -37242,13 +37246,13 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $18 local.get $7 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -37289,7 +37293,7 @@ i32.load local.set $21 local.get $21 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -37313,7 +37317,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $19 @@ -37363,7 +37367,7 @@ i32.load local.set $20 local.get $20 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -37390,8 +37394,6 @@ end local.get $13 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) @@ -38024,7 +38026,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -38169,10 +38171,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $7 @@ -38188,7 +38193,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $7 i32.const 1 @@ -38217,12 +38222,12 @@ i32.add local.set $16 local.get $16 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $6 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $7 @@ -38262,13 +38267,13 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $18 local.get $7 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -38309,7 +38314,7 @@ i32.load local.set $21 local.get $21 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -38333,7 +38338,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $19 @@ -38383,7 +38388,7 @@ i32.load local.set $20 local.get $20 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -38410,8 +38415,6 @@ end local.get $13 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) @@ -39024,7 +39027,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -39169,10 +39172,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $7 @@ -39188,7 +39194,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $7 i32.const 1 @@ -39217,12 +39223,12 @@ i32.add local.set $16 local.get $16 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $6 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $7 @@ -39262,13 +39268,13 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $18 local.get $7 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -39309,7 +39315,7 @@ i32.load local.set $21 local.get $21 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -39333,7 +39339,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $19 @@ -39383,7 +39389,7 @@ i32.load local.set $20 local.get $20 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -39410,8 +39416,6 @@ end local.get $13 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) @@ -40030,7 +40034,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -40175,10 +40179,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $5 @@ -40194,7 +40201,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $5 i32.const 1 @@ -40223,12 +40230,12 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $12 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $5 @@ -40268,13 +40275,13 @@ i32.add local.set $19 local.get $19 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $20 local.get $5 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -40315,7 +40322,7 @@ i32.load local.set $23 local.get $23 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -40339,7 +40346,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $21 @@ -40389,7 +40396,7 @@ i32.load local.set $22 local.get $22 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -40416,8 +40423,6 @@ end local.get $14 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) @@ -41036,7 +41041,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -41181,10 +41186,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $5 @@ -41200,7 +41208,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $5 i32.const 1 @@ -41229,12 +41237,12 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $12 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $5 @@ -41274,13 +41282,13 @@ i32.add local.set $19 local.get $19 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $20 local.get $5 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -41321,7 +41329,7 @@ i32.load local.set $23 local.get $23 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -41345,7 +41353,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $21 @@ -41395,7 +41403,7 @@ i32.load local.set $22 local.get $22 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -41422,8 +41430,6 @@ end local.get $14 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) @@ -42042,7 +42048,7 @@ local.get $1 local.set $4 local.get $4 - global.get $~lib/util/sort/INSERTION_SORT_THRESHOLD + i32.const 128 i32.le_s if i32.const 0 @@ -42187,10 +42193,13 @@ i32.shl local.set $9 local.get $9 + i32.const 1 + i32.shl call $~lib/rt/tlsf/__alloc local.set $10 + local.get $10 local.get $9 - call $~lib/rt/tlsf/__alloc + i32.add local.set $11 i32.const 0 local.set $5 @@ -42206,7 +42215,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store local.get $5 i32.const 1 @@ -42235,12 +42244,12 @@ i32.add local.set $17 local.get $17 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $12 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.const 1 i32.sub local.tee $5 @@ -42280,13 +42289,13 @@ i32.add local.set $19 local.get $19 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.lt_s if local.get $3 local.tee $20 local.get $5 - global.get $~lib/util/sort/MIN_RUN_LENGTH + i32.const 32 i32.add i32.const 1 i32.sub @@ -42327,7 +42336,7 @@ i32.load local.set $23 local.get $23 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -42351,7 +42360,7 @@ i32.const 2 i32.shl i32.add - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.store end local.get $21 @@ -42401,7 +42410,7 @@ i32.load local.set $22 local.get $22 - global.get $~lib/util/sort/EMPTY + i32.const -1 i32.ne if local.get $0 @@ -42428,8 +42437,6 @@ end local.get $14 call $~lib/rt/tlsf/__free - local.get $11 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free ) From 4e2c5054d0e1e14b94d8232efa5e3fb21da1dcc4 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Fri, 2 Jul 2021 20:37:37 +0300 Subject: [PATCH 09/29] add TODO --- std/assembly/util/sort.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index c332bd4658..9f52f9ed6b 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -59,6 +59,7 @@ export function COMPARATOR(): (a: T, b: T) => i32 { // Power Sort implementation (stable) from paper "Nearly-Optimal Mergesorts" // https://arxiv.org/pdf/1805.04154.pdf // This method usually outperform TimSort. +// TODO: refactor c >>> 31 to c < 0 when binaryen will support this opt export function SORT( dataStart: usize, length: i32, From ff7fc641faefad1dfeb5b9a95c50f81f3ddedb05 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sat, 3 Jul 2021 12:10:41 +0300 Subject: [PATCH 10/29] refactor --- std/assembly/util/sort.ts | 18 +- tests/compiler/std/array.untouched.wat | 162 ++++++------------ tests/compiler/std/typedarray.untouched.wat | 180 +++++++------------- 3 files changed, 123 insertions(+), 237 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index 9f52f9ed6b..151269df8f 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -72,20 +72,20 @@ export function SORT( case 3: { let a = load(dataStart, 1 << alignof()); let b = load(dataStart, 2 << alignof()); - let c = comparator(a, b); - store(dataStart, select(a, b, c >>> 31), 1 << alignof()); - b = select(b, a, c >>> 31); + let c = comparator(a, b) >>> 31; + store(dataStart, select(a, b, c), 1 << alignof()); + b = select(b, a, c); a = load(dataStart, 0); - c = comparator(a, b); - store(dataStart, select(a, b, c >>> 31), 0); - store(dataStart, select(b, a, c >>> 31), 2 << alignof()); + c = comparator(a, b) >>> 31; + store(dataStart, select(a, b, c), 0); + store(dataStart, select(b, a, c), 2 << alignof()); } case 2: { let a = load(dataStart, 0); let b = load(dataStart, 1 << alignof()); - let c = comparator(a, b); - store(dataStart, select(a, b, c >>> 31), 0); - store(dataStart, select(b, a, c >>> 31), 1 << alignof()); + let c = comparator(a, b) >>> 31; + store(dataStart, select(a, b, c), 0); + store(dataStart, select(b, a, c), 1 << alignof()); } case 1: case 0: return; diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 1f47c29292..2f12648500 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -7290,20 +7290,18 @@ local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select f32.store offset=4 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select local.set $7 local.get $0 @@ -7316,21 +7314,19 @@ local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select f32.store local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select f32.store offset=8 end @@ -7347,21 +7343,19 @@ local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select f32.store local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select f32.store offset=4 end @@ -8382,20 +8376,18 @@ local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select f64.store offset=8 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select local.set $7 local.get $0 @@ -8408,21 +8400,19 @@ local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select f64.store local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select f64.store offset=16 end @@ -8439,21 +8429,19 @@ local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select f64.store local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select f64.store offset=8 end @@ -9502,20 +9490,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=4 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select local.set $6 local.get $0 @@ -9528,21 +9514,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=8 end @@ -9559,21 +9543,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i32.store offset=4 end @@ -10486,20 +10468,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=4 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select local.set $6 local.get $0 @@ -10512,21 +10492,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=8 end @@ -10543,21 +10521,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i32.store offset=4 end @@ -11569,21 +11545,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select local.tee $6 i32.store offset=4 @@ -11599,21 +11573,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=8 end @@ -11634,21 +11606,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i32.store offset=4 end @@ -12495,21 +12465,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select local.tee $6 i32.store offset=4 @@ -12525,21 +12493,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=8 end @@ -12560,21 +12526,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i32.store offset=4 end @@ -13334,21 +13298,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select local.tee $6 i32.store offset=4 @@ -13364,21 +13326,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=8 end @@ -13399,21 +13359,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i32.store offset=4 end @@ -14532,21 +14490,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select local.tee $6 i32.store offset=4 @@ -14562,21 +14518,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=8 end @@ -14597,21 +14551,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i32.store offset=4 end @@ -20224,20 +20176,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store8 offset=1 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select local.set $6 local.get $0 @@ -20250,21 +20200,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store8 local.get $0 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select i32.store8 offset=2 end @@ -20281,21 +20229,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i32.store8 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i32.store8 offset=1 end diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index b30c3b6a4a..14d09e580f 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -4103,20 +4103,18 @@ local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select f64.store offset=8 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select local.set $7 local.get $0 @@ -4129,21 +4127,19 @@ local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select f64.store local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select f64.store offset=16 end @@ -4160,21 +4156,19 @@ local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select f64.store local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select f64.store offset=8 end @@ -33919,20 +33913,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store8 offset=1 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select local.set $6 local.get $0 @@ -33945,21 +33937,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store8 local.get $0 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select i32.store8 offset=2 end @@ -33976,21 +33966,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i32.store8 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i32.store8 offset=1 end @@ -34926,20 +34914,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store8 offset=1 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select local.set $6 local.get $0 @@ -34952,21 +34938,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store8 local.get $0 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select i32.store8 offset=2 end @@ -34983,21 +34967,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i32.store8 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i32.store8 offset=1 end @@ -36043,20 +36025,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store16 offset=2 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select local.set $6 local.get $0 @@ -36069,21 +36049,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store16 local.get $0 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select i32.store16 offset=4 end @@ -36100,21 +36078,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i32.store16 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i32.store16 offset=2 end @@ -37050,20 +37026,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store16 offset=2 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select local.set $6 local.get $0 @@ -37076,21 +37050,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store16 local.get $0 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select i32.store16 offset=4 end @@ -37107,21 +37079,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i32.store16 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i32.store16 offset=2 end @@ -38071,20 +38041,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=4 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select local.set $6 local.get $0 @@ -38097,21 +38065,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=8 end @@ -38128,21 +38094,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i32.store offset=4 end @@ -39072,20 +39036,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=4 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select local.set $6 local.get $0 @@ -39098,21 +39060,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $7 local.get $0 local.get $5 local.get $6 local.get $7 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $5 local.get $7 - i32.const 31 - i32.shr_u select i32.store offset=8 end @@ -39129,21 +39089,19 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i32.store local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i32.store offset=4 end @@ -40079,20 +40037,18 @@ local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i64.store offset=8 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select local.set $7 local.get $0 @@ -40105,21 +40061,19 @@ local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i64.store local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i64.store offset=16 end @@ -40136,21 +40090,19 @@ local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i64.store local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i64.store offset=8 end @@ -41086,20 +41038,18 @@ local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i64.store offset=8 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select local.set $7 local.get $0 @@ -41112,21 +41062,19 @@ local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i64.store local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i64.store offset=16 end @@ -41143,21 +41091,19 @@ local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select i64.store local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select i64.store offset=8 end @@ -42093,20 +42039,18 @@ local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select f32.store offset=4 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select local.set $7 local.get $0 @@ -42119,21 +42063,19 @@ local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select f32.store local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select f32.store offset=8 end @@ -42150,21 +42092,19 @@ local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u local.set $5 local.get $0 local.get $7 local.get $6 local.get $5 - i32.const 31 - i32.shr_u select f32.store local.get $0 local.get $6 local.get $7 local.get $5 - i32.const 31 - i32.shr_u select f32.store offset=4 end From ecfa6fd00392adfdf480a91fc5a27122b1a79889 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sat, 3 Jul 2021 12:11:53 +0300 Subject: [PATCH 11/29] cleanups --- std/assembly/util/sort.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index 151269df8f..08700f893e 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -276,7 +276,7 @@ function mergeRuns( buffer: usize, comparator: (a: T, b: T) => i32 ): void { - --m; // accounts for different convention in Sedgewick’s book + --m; var i: i32, j: i32, t = r + m; for (i = m + 1; i > l; --i) { store(buffer + ((i - 1) << alignof()), load(dataStart + ((i - 1) << alignof()))); From fa1571073925ff8917da532382893bff0285e9ab Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sat, 3 Jul 2021 14:28:12 +0300 Subject: [PATCH 12/29] refactor --- std/assembly/util/sort.ts | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index 08700f893e..bbe8b47f46 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -1,5 +1,7 @@ import { compareImpl } from "./string"; +type Comparator = (a: T, b: T) => i32; + // @ts-ignore: decorator @inline const EMPTY: u32 = 0xFFFFFFFF; // @ts-ignore: decorator @@ -15,33 +17,33 @@ function log2u(n: u32): u32 { // @ts-ignore: decorator @inline -export function COMPARATOR(): (a: T, b: T) => i32 { +export function COMPARATOR(): Comparator { if (isInteger()) { if (isSigned() && sizeof() <= 4) { - return (a: T, b: T): i32 => (i32(a) - i32(b)); + return (a, b) => i32(a) - i32(b); } else { - return (a: T, b: T): i32 => (i32(a > b) - i32(a < b)); + return (a, b) => i32(a > b) - i32(a < b); } } else if (isFloat()) { if (sizeof() == 4) { - return (a: T, b: T): i32 => { + return (a, b) => { var ia = reinterpret(f32(a)); var ib = reinterpret(f32(b)); - ia ^= (ia >> 31) >>> 1; - ib ^= (ib >> 31) >>> 1; + ia ^= ia >> 31 >>> 1; + ib ^= ib >> 31 >>> 1; return i32(ia > ib) - i32(ia < ib); }; } else { - return (a: T, b: T): i32 => { + return (a, b) => { var ia = reinterpret(f64(a)); var ib = reinterpret(f64(b)); - ia ^= (ia >> 63) >>> 1; - ib ^= (ib >> 63) >>> 1; + ia ^= ia >> 63 >>> 1; + ib ^= ib >> 63 >>> 1; return i32(ia > ib) - i32(ia < ib); }; } } else if (isString()) { - return (a: T, b: T): i32 => { + return (a, b) => { if (a === b || a === null || b === null) return 0; var alen = changetype(a).length; var blen = changetype(b).length; @@ -52,7 +54,7 @@ export function COMPARATOR(): (a: T, b: T) => i32 { return res ? res : alen - blen; }; } else { - return (a: T, b: T): i32 => (i32(a > b) - i32(a < b)); + return (a, b) => i32(a > b) - i32(a < b); } } @@ -63,7 +65,7 @@ export function COMPARATOR(): (a: T, b: T) => i32 { export function SORT( dataStart: usize, length: i32, - comparator: (a: T, b: T) => i32 + comparator: Comparator ): void { var hi = length - 1, n = length; if (n <= INSERTION_SORT_THRESHOLD) { @@ -174,7 +176,7 @@ function insertionSort( left: i32, right: i32, presorted: i32, - comparator: (a: T, b: T) => i32 + comparator: Comparator ): void { if (ASC_SHRINK_LEVEL >= 1) { // slightly improved original insertion sort @@ -233,7 +235,7 @@ function extendRunRight( dataStart: usize, i: i32, right: i32, - comparator: (a: T, b: T) => i32 + comparator: Comparator ): i32 { if (i == right) return i; var j = i; @@ -274,7 +276,7 @@ function mergeRuns( m: i32, r: i32, buffer: usize, - comparator: (a: T, b: T) => i32 + comparator: Comparator ): void { --m; var i: i32, j: i32, t = r + m; From 5fa6c30a56575c67584e5f2c05e8cb3e7359b90e Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sun, 4 Jul 2021 19:22:20 +0300 Subject: [PATCH 13/29] refactor --- std/assembly/util/sort.ts | 109 +- tests/compiler/std/array.optimized.wat | 812 ++--- tests/compiler/std/array.untouched.wat | 2721 +++++++++-------- tests/compiler/std/typedarray.optimized.wat | 1170 +++---- tests/compiler/std/typedarray.untouched.wat | 3034 +++++++++---------- 5 files changed, 3921 insertions(+), 3925 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index bbe8b47f46..e4e2fffc22 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -63,41 +63,40 @@ export function COMPARATOR(): Comparator { // This method usually outperform TimSort. // TODO: refactor c >>> 31 to c < 0 when binaryen will support this opt export function SORT( - dataStart: usize, - length: i32, + ptr: usize, + len: i32, comparator: Comparator ): void { - var hi = length - 1, n = length; - if (n <= INSERTION_SORT_THRESHOLD) { + if (len <= INSERTION_SORT_THRESHOLD) { if (ASC_SHRINK_LEVEL < 1) { - switch (n) { + switch (len) { case 3: { - let a = load(dataStart, 1 << alignof()); - let b = load(dataStart, 2 << alignof()); + let a = load(ptr, 1 << alignof()); + let b = load(ptr, 2 << alignof()); let c = comparator(a, b) >>> 31; - store(dataStart, select(a, b, c), 1 << alignof()); + store(ptr, select(a, b, c), 1 << alignof()); b = select(b, a, c); - a = load(dataStart, 0); + a = load(ptr, 0); c = comparator(a, b) >>> 31; - store(dataStart, select(a, b, c), 0); - store(dataStart, select(b, a, c), 2 << alignof()); + store(ptr, select(a, b, c), 0); + store(ptr, select(b, a, c), 2 << alignof()); } case 2: { - let a = load(dataStart, 0); - let b = load(dataStart, 1 << alignof()); + let a = load(ptr, 0); + let b = load(ptr, 1 << alignof()); let c = comparator(a, b) >>> 31; - store(dataStart, select(a, b, c), 0); - store(dataStart, select(b, a, c), 1 << alignof()); + store(ptr, select(a, b, c), 0); + store(ptr, select(b, a, c), 1 << alignof()); } case 1: case 0: return; } } - insertionSort(dataStart, 0, hi, 0, comparator); + insertionSort(ptr, 0, len - 1, 0, comparator); return; } - var lgPlus2 = log2u(n) + 2; + var lgPlus2 = log2u(len) + 2; var lgPlus2Size = lgPlus2 << alignof(); var leftRunStartBuf = __alloc(lgPlus2Size << 1); var leftRunEndBuf = leftRunStartBuf + lgPlus2Size; @@ -106,26 +105,26 @@ export function SORT( store(leftRunStartBuf + (i << alignof()), EMPTY); } - var top: u32 = 0; - var buffer = __alloc(n << alignof()); - - var startA = 0; - var endA = extendRunRight(dataStart, 0, hi, comparator); + var buffer = __alloc(len << alignof()); + var hi = len - 1; + var endA = extendRunRight(ptr, 0, hi, comparator); var lenA = endA + 1; + if (lenA < MIN_RUN_LENGTH) { endA = min(hi, MIN_RUN_LENGTH - 1); - insertionSort(dataStart, startA, endA, lenA, comparator); + insertionSort(ptr, 0, endA, lenA, comparator); } + var top: u32 = 0, startA = 0; while (endA < hi) { let startB = endA + 1; - let endB = extendRunRight(dataStart, startB, hi, comparator); + let endB = extendRunRight(ptr, startB, hi, comparator); let lenB = endB - startB + 1; if (lenB < MIN_RUN_LENGTH) { endB = min(hi, startB + MIN_RUN_LENGTH - 1); - insertionSort(dataStart, startB, endB, lenB, comparator); + insertionSort(ptr, startB, endB, lenB, comparator); } let k = nodePower(0, hi, startA, startB, endB); @@ -134,7 +133,7 @@ export function SORT( let start = load(leftRunStartBuf + (i << alignof())); if (start != EMPTY) { mergeRuns( - dataStart, + ptr, start, load(leftRunEndBuf + (i << alignof())) + 1, endA, @@ -157,7 +156,7 @@ export function SORT( let start = load(leftRunStartBuf + (i << alignof())); if (start != EMPTY) { mergeRuns( - dataStart, + ptr, start, load(leftRunEndBuf + (i << alignof())) + 1, hi, @@ -172,7 +171,7 @@ export function SORT( } function insertionSort( - dataStart: usize, + ptr: usize, left: i32, right: i32, presorted: i32, @@ -182,41 +181,41 @@ function insertionSort( // slightly improved original insertion sort for (let i = left + presorted; i <= right; ++i) { let j = i - 1; - let a = load(dataStart + (i << alignof())); + let a = load(ptr + (i << alignof())); while (j >= left) { - let b = load(dataStart + (j << alignof())); + let b = load(ptr + (j << alignof())); if (comparator(a, b) < 0) { - store(dataStart + (j << alignof()), b, 1 << alignof()); --j; + store(ptr + (j << alignof()), b, 1 << alignof()); --j; } else break; } - store(dataStart + (j << alignof()), a, 1 << alignof()); + store(ptr + (j << alignof()), a, 1 << alignof()); } } else { // even-odd two-way insertion sort which allow increase minRunLen let range = right - left + 1; let i = left + select(range & 1, presorted - ((range - presorted) & 1), presorted == 0); for (; i <= right; i += 2) { - let a = load(dataStart + (i << alignof()), 0); - let b = load(dataStart + (i << alignof()), 1 << alignof()); + let a = load(ptr + (i << alignof()), 0); + let b = load(ptr + (i << alignof()), 1 << alignof()); let min = b, max = a; if (comparator(a, b) <= 0) { min = a, max = b; } let j = i - 1; while (j >= left) { - a = load(dataStart + (j << alignof())); + a = load(ptr + (j << alignof())); if (comparator(a, max) > 0) { - store(dataStart + (j << alignof()), a, 2 << alignof()); --j; + store(ptr + (j << alignof()), a, 2 << alignof()); --j; } else break; } - store(dataStart + (j << alignof()), max, 2 << alignof()); + store(ptr + (j << alignof()), max, 2 << alignof()); while (j >= left) { - a = load(dataStart + (j << alignof())); + a = load(ptr + (j << alignof())); if (comparator(a, min) > 0) { - store(dataStart + (j << alignof()), a, 1 << alignof()); --j; + store(ptr + (j << alignof()), a, 1 << alignof()); --j; } else break; } - store(dataStart + (j << alignof()), min, 1 << alignof()); + store(ptr + (j << alignof()), min, 1 << alignof()); } } } @@ -232,7 +231,7 @@ function nodePower(left: u32, right: u32, startA: u32, startB: u32, endB: u32): } function extendRunRight( - dataStart: usize, + ptr: usize, i: i32, right: i32, comparator: Comparator @@ -240,29 +239,29 @@ function extendRunRight( if (i == right) return i; var j = i; if (comparator( - load(dataStart + (j << alignof())), - load(dataStart + (++j << alignof())) + load(ptr + ( j << alignof())), + load(ptr + (++j << alignof())) ) > 0) { while ( j < right && bool(comparator( - load(dataStart + (j << alignof()), 1 << alignof()), - load(dataStart + (j << alignof())) + load(ptr + (j << alignof()), 1 << alignof()), + load(ptr + (j << alignof())) ) >>> 31) // < 0 ) ++j; // reverse let k = j; while (i < k) { - let tmp = load(dataStart + (i << alignof())); - store(dataStart + (i << alignof()), load(dataStart + (k << alignof()))); ++i; - store(dataStart + (k << alignof()), tmp); --k; + let tmp = load(ptr + (i << alignof())); + store(ptr + (i << alignof()), load(ptr + (k << alignof()))); ++i; + store(ptr + (k << alignof()), tmp); --k; } } else { while ( j < right && comparator( - load(dataStart + (j << alignof()), 1 << alignof()), - load(dataStart + (j << alignof())) + load(ptr + (j << alignof()), 1 << alignof()), + load(ptr + (j << alignof())) ) >= 0 ) ++j; } @@ -271,7 +270,7 @@ function extendRunRight( // Merges arr[l..m - 1] and arr[m..r] function mergeRuns( - dataStart: usize, + ptr: usize, l: i32, m: i32, r: i32, @@ -281,17 +280,17 @@ function mergeRuns( --m; var i: i32, j: i32, t = r + m; for (i = m + 1; i > l; --i) { - store(buffer + ((i - 1) << alignof()), load(dataStart + ((i - 1) << alignof()))); + store(buffer + ((i - 1) << alignof()), load(ptr + ((i - 1) << alignof()))); } for (j = m; j < r; ++j) { - store(buffer + ((t - j) << alignof()), load(dataStart + (j << alignof()), 1 << alignof())); + store(buffer + ((t - j) << alignof()), load(ptr + (j << alignof()), 1 << alignof())); } for (let k = l; k <= r; ++k) { let a = load(buffer + (j << alignof())); let b = load(buffer + (i << alignof())); let c = comparator(a, b); - store(dataStart + (k << alignof()), select(a, b, c >>> 31)); // c < 0 - store(dataStart + (k << alignof()), select(b, a, c >>> 31)); // c < 0 + store(ptr + (k << alignof()), select(a, b, c >>> 31)); // c < 0 + store(ptr + (k << alignof()), select(b, a, c >>> 31)); // c < 0 j -= i32(c >>> 31); // c < 0 i += i32(c >= 0); } diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 18192fb53a..0ffb8f6a3a 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -5003,12 +5003,8 @@ (local $12 f32) (local $13 i32) (local $14 f32) - (local $15 f32) - (local $16 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $16 + (local $15 i32) + (local $16 f32) local.get $1 i32.const 128 i32.le_s @@ -5022,16 +5018,16 @@ end local.get $0 f32.load offset=4 - local.set $15 + local.set $16 local.get $0 f32.load offset=8 local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $15 + local.get $16 local.get $14 - local.get $15 + local.get $16 local.get $14 local.get $2 i32.load @@ -5048,10 +5044,10 @@ global.set $~argumentsLength local.get $12 local.get $14 - local.get $15 + local.get $16 local.get $1 select - local.tee $15 + local.tee $16 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -5060,12 +5056,12 @@ local.set $1 local.get $0 local.get $12 - local.get $15 + local.get $16 local.get $1 select f32.store local.get $0 - local.get $15 + local.get $16 local.get $12 local.get $1 select @@ -5073,16 +5069,16 @@ end local.get $0 f32.load - local.set $15 + local.set $16 local.get $0 f32.load offset=4 local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $15 + local.get $16 local.get $14 - local.get $15 + local.get $16 local.get $14 local.get $2 i32.load @@ -5094,7 +5090,7 @@ f32.store local.get $0 local.get $14 - local.get $15 + local.get $16 local.get $1 select f32.store offset=4 @@ -5103,7 +5099,9 @@ end local.get $0 i32.const 0 - local.get $16 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -5158,21 +5156,24 @@ local.get $1 i32.const 2 i32.shl - local.set $1 + local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $7 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add local.set $10 local.get $0 i32.const 0 - local.get $16 + local.get $1 + i32.const 1 + i32.sub + local.tee $15 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 @@ -5184,9 +5185,9 @@ if local.get $0 i32.const 0 - local.get $16 + local.get $15 i32.const 31 - local.get $16 + local.get $15 i32.const 31 i32.lt_s select @@ -5197,7 +5198,7 @@ end loop $while-continue|2 local.get $1 - local.get $16 + local.get $15 i32.lt_s if local.get $0 @@ -5205,7 +5206,7 @@ i32.const 1 i32.add local.tee $5 - local.get $16 + local.get $15 local.get $2 call $~lib/util/sort/extendRunRight local.tee $7 @@ -5219,13 +5220,13 @@ if local.get $0 local.get $5 - local.get $16 + local.get $15 local.get $5 i32.const 31 i32.add local.tee $7 local.get $7 - local.get $16 + local.get $15 i32.gt_s select local.tee $7 @@ -5239,7 +5240,7 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $16 + local.get $15 i32.const 1 i32.add i64.extend_i32_u @@ -5349,7 +5350,7 @@ i32.load i32.const 1 i32.add - local.get $16 + local.get $15 local.get $10 local.get $2 call $~lib/util/sort/mergeRuns @@ -5904,12 +5905,8 @@ (local $12 f64) (local $13 i32) (local $14 f64) - (local $15 f64) - (local $16 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $16 + (local $15 i32) + (local $16 f64) local.get $1 i32.const 128 i32.le_s @@ -5923,16 +5920,16 @@ end local.get $0 f64.load offset=8 - local.set $15 + local.set $16 local.get $0 f64.load offset=16 local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $15 + local.get $16 local.get $14 - local.get $15 + local.get $16 local.get $14 local.get $2 i32.load @@ -5949,10 +5946,10 @@ global.set $~argumentsLength local.get $12 local.get $14 - local.get $15 + local.get $16 local.get $1 select - local.tee $15 + local.tee $16 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -5961,12 +5958,12 @@ local.set $1 local.get $0 local.get $12 - local.get $15 + local.get $16 local.get $1 select f64.store local.get $0 - local.get $15 + local.get $16 local.get $12 local.get $1 select @@ -5974,16 +5971,16 @@ end local.get $0 f64.load - local.set $15 + local.set $16 local.get $0 f64.load offset=8 local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $15 + local.get $16 local.get $14 - local.get $15 + local.get $16 local.get $14 local.get $2 i32.load @@ -5995,7 +5992,7 @@ f64.store local.get $0 local.get $14 - local.get $15 + local.get $16 local.get $1 select f64.store offset=8 @@ -6004,7 +6001,9 @@ end local.get $0 i32.const 0 - local.get $16 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -6059,21 +6058,24 @@ local.get $1 i32.const 3 i32.shl - local.set $1 + local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $7 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add local.set $10 local.get $0 i32.const 0 - local.get $16 + local.get $1 + i32.const 1 + i32.sub + local.tee $15 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 @@ -6085,9 +6087,9 @@ if local.get $0 i32.const 0 - local.get $16 + local.get $15 i32.const 31 - local.get $16 + local.get $15 i32.const 31 i32.lt_s select @@ -6098,7 +6100,7 @@ end loop $while-continue|2 local.get $1 - local.get $16 + local.get $15 i32.lt_s if local.get $0 @@ -6106,7 +6108,7 @@ i32.const 1 i32.add local.tee $5 - local.get $16 + local.get $15 local.get $2 call $~lib/util/sort/extendRunRight local.tee $7 @@ -6120,13 +6122,13 @@ if local.get $0 local.get $5 - local.get $16 + local.get $15 local.get $5 i32.const 31 i32.add local.tee $7 local.get $7 - local.get $16 + local.get $15 i32.gt_s select local.tee $7 @@ -6140,7 +6142,7 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $16 + local.get $15 i32.const 1 i32.add i64.extend_i32_u @@ -6250,7 +6252,7 @@ i32.load i32.const 1 i32.add - local.get $16 + local.get $15 local.get $10 local.get $2 call $~lib/util/sort/mergeRuns @@ -6753,17 +6755,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) + (local $12 i64) (local $13 i32) local.get $1 - i32.const 1 - i32.sub - local.set $12 - local.get $1 i32.const 128 i32.le_s if @@ -6779,20 +6777,20 @@ local.set $1 local.get $0 i32.load offset=8 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $6 + local.tee $5 select i32.store offset=4 local.get $0 @@ -6801,9 +6799,9 @@ i32.const 2 global.set $~argumentsLength local.get $3 - local.get $7 + local.get $4 local.get $1 - local.get $6 + local.get $5 select local.tee $1 local.get $2 @@ -6811,17 +6809,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $4 local.get $0 local.get $3 local.get $1 - local.get $7 + local.get $4 select i32.store local.get $0 local.get $1 local.get $3 - local.get $7 + local.get $4 select i32.store offset=8 end @@ -6830,14 +6828,14 @@ local.set $1 local.get $0 i32.load offset=4 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -6847,7 +6845,7 @@ select i32.store local.get $0 - local.get $7 + local.get $4 local.get $1 local.get $2 select @@ -6857,7 +6855,9 @@ end local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -6867,137 +6867,140 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $6 i32.const 2 i32.shl - local.tee $6 + local.tee $5 i32.const 1 i32.shl - local.set $4 + local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $7 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $11 - local.get $6 + local.tee $9 + local.get $5 i32.add local.set $10 i32.const 0 - local.set $6 + local.set $5 loop $for-loop|1 local.get $5 local.get $6 - i32.gt_u + i32.lt_u if - local.get $11 - local.get $6 + local.get $9 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end local.get $1 i32.const 2 i32.shl - local.set $1 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $9 + local.set $11 local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $6 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $8 i32.const 31 - local.get $12 + local.get $8 i32.const 31 i32.lt_s select local.tee $1 - local.get $6 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $12 + local.get $8 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 + local.tee $6 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $5 + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $4 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $8 + local.get $6 i32.const 31 i32.add - local.tee $6 - local.get $6 - local.get $12 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select - local.tee $6 - local.get $4 + local.tee $5 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $8 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -7007,19 +7010,19 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $7 loop $for-loop|3 local.get $4 local.get $7 - i32.lt_u + i32.gt_u if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -7031,7 +7034,7 @@ local.get $0 local.get $13 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -7040,51 +7043,51 @@ i32.const 1 i32.add local.get $1 - local.get $9 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $11 + local.get $9 i32.add i32.const -1 i32.store local.get $13 local.set $3 end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|3 end end - local.get $11 - local.get $4 + local.get $9 + local.get $7 i32.const 2 i32.shl - local.tee $7 + local.tee $4 i32.add local.get $3 i32.store - local.get $7 + local.get $4 local.get $10 i32.add local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 + local.set $3 + local.get $5 local.set $1 - local.get $4 - local.set $7 + local.get $7 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $7 + local.get $4 if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -7096,29 +7099,29 @@ local.get $0 local.get $1 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $12 - local.get $9 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|4 end end - local.get $9 - call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free ) (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -7613,17 +7616,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) + (local $12 i64) (local $13 i32) local.get $1 - i32.const 1 - i32.sub - local.set $12 - local.get $1 i32.const 128 i32.le_s if @@ -7639,20 +7638,20 @@ local.set $1 local.get $0 i32.load offset=8 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $6 + local.tee $5 select i32.store offset=4 local.get $0 @@ -7661,9 +7660,9 @@ i32.const 2 global.set $~argumentsLength local.get $3 - local.get $7 + local.get $4 local.get $1 - local.get $6 + local.get $5 select local.tee $1 local.get $2 @@ -7671,17 +7670,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $4 local.get $0 local.get $3 local.get $1 - local.get $7 + local.get $4 select i32.store local.get $0 local.get $1 local.get $3 - local.get $7 + local.get $4 select i32.store offset=8 end @@ -7690,14 +7689,14 @@ local.set $1 local.get $0 i32.load offset=4 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -7707,7 +7706,7 @@ select i32.store local.get $0 - local.get $7 + local.get $4 local.get $1 local.get $2 select @@ -7717,7 +7716,9 @@ end local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -7727,137 +7728,140 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $6 i32.const 2 i32.shl - local.tee $6 + local.tee $5 i32.const 1 i32.shl - local.set $4 + local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $7 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $11 - local.get $6 + local.tee $9 + local.get $5 i32.add local.set $10 i32.const 0 - local.set $6 + local.set $5 loop $for-loop|1 local.get $5 local.get $6 - i32.gt_u + i32.lt_u if - local.get $11 - local.get $6 + local.get $9 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end local.get $1 i32.const 2 i32.shl - local.set $1 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $9 + local.set $11 local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $6 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $8 i32.const 31 - local.get $12 + local.get $8 i32.const 31 i32.lt_s select local.tee $1 - local.get $6 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $12 + local.get $8 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 + local.tee $6 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $5 + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $4 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $8 + local.get $6 i32.const 31 i32.add - local.tee $6 - local.get $6 - local.get $12 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select - local.tee $6 - local.get $4 + local.tee $5 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $8 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -7867,19 +7871,19 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $7 loop $for-loop|3 local.get $4 local.get $7 - i32.lt_u + i32.gt_u if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -7891,7 +7895,7 @@ local.get $0 local.get $13 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -7900,51 +7904,51 @@ i32.const 1 i32.add local.get $1 - local.get $9 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $11 + local.get $9 i32.add i32.const -1 i32.store local.get $13 local.set $3 end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|3 end end - local.get $11 - local.get $4 + local.get $9 + local.get $7 i32.const 2 i32.shl - local.tee $7 + local.tee $4 i32.add local.get $3 i32.store - local.get $7 + local.get $4 local.get $10 i32.add local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 + local.set $3 + local.get $5 local.set $1 - local.get $4 - local.set $7 + local.get $7 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $7 + local.get $4 if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -7956,29 +7960,29 @@ local.get $0 local.get $1 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $12 - local.get $9 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|4 end end - local.get $9 - call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -8434,11 +8438,11 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) + (local $12 i64) (local $13 i32) global.get $~lib/memory/__stack_pointer i32.const 12 @@ -8456,16 +8460,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $5 i64.const 0 i64.store - local.get $6 + local.get $5 i32.const 0 i32.store offset=8 - local.get $1 - i32.const 1 - i32.sub - local.set $12 block $folding-inner0 local.get $1 i32.const 128 @@ -8478,23 +8478,23 @@ br_table $folding-inner0 $folding-inner0 $case1|0 $case0|0 $break|0 end global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $4 local.get $0 i32.load offset=4 local.tee $1 i32.store - local.get $7 + local.get $4 local.get $0 i32.load offset=8 - local.tee $7 + local.tee $4 i32.store offset=4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -8504,24 +8504,24 @@ select i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.tee $6 - local.get $7 + local.tee $5 + local.get $4 local.get $1 local.get $3 select local.tee $1 i32.store offset=4 - local.get $6 + local.get $5 local.get $0 i32.load - local.tee $7 + local.tee $4 i32.store i32.const 2 global.set $~argumentsLength local.get $0 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $1 local.get $2 i32.load @@ -8533,29 +8533,29 @@ i32.store local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $3 select i32.store offset=8 end global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $4 local.get $0 i32.load local.tee $1 i32.store offset=8 - local.get $7 + local.get $4 local.get $0 i32.load offset=4 - local.tee $7 + local.tee $4 i32.store offset=4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -8565,7 +8565,7 @@ select i32.store local.get $0 - local.get $7 + local.get $4 local.get $1 local.get $2 select @@ -8574,7 +8574,9 @@ end local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort<~lib/array/Array> @@ -8584,137 +8586,140 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $6 i32.const 2 i32.shl - local.tee $6 + local.tee $5 i32.const 1 i32.shl - local.set $4 + local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $7 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $11 - local.get $6 + local.tee $9 + local.get $5 i32.add local.set $10 i32.const 0 - local.set $6 + local.set $5 loop $for-loop|1 local.get $5 local.get $6 - i32.gt_u + i32.lt_u if - local.get $11 - local.get $6 + local.get $9 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end local.get $1 i32.const 2 i32.shl - local.set $1 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $9 + local.set $11 local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight<~lib/array/Array> local.tee $1 i32.const 1 i32.add - local.tee $6 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $8 i32.const 31 - local.get $12 + local.get $8 i32.const 31 i32.lt_s select local.tee $1 - local.get $6 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort<~lib/array/Array> end loop $while-continue|2 local.get $1 - local.get $12 + local.get $8 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 + local.tee $6 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight<~lib/array/Array> - local.tee $6 - local.get $5 + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $4 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $8 + local.get $6 i32.const 31 i32.add - local.tee $6 - local.get $6 - local.get $12 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select - local.tee $6 - local.get $4 + local.tee $5 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort<~lib/array/Array> end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $8 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -8724,19 +8729,19 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $7 loop $for-loop|3 local.get $4 local.get $7 - i32.lt_u + i32.gt_u if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -8748,7 +8753,7 @@ local.get $0 local.get $13 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -8757,51 +8762,51 @@ i32.const 1 i32.add local.get $1 - local.get $9 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns<~lib/array/Array> local.get $3 - local.get $11 + local.get $9 i32.add i32.const -1 i32.store local.get $13 local.set $3 end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|3 end end - local.get $11 - local.get $4 + local.get $9 + local.get $7 i32.const 2 i32.shl - local.tee $7 + local.tee $4 i32.add local.get $3 i32.store - local.get $7 + local.get $4 local.get $10 i32.add local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 + local.set $3 + local.get $5 local.set $1 - local.get $4 - local.set $7 + local.get $7 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $7 + local.get $4 if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -8813,29 +8818,29 @@ local.get $0 local.get $1 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $12 - local.get $9 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns<~lib/array/Array> end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|4 end end - local.get $9 - call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -12462,17 +12467,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) + (local $12 i64) (local $13 i32) local.get $1 - i32.const 1 - i32.sub - local.set $12 - local.get $1 i32.const 128 i32.le_s if @@ -12488,20 +12489,20 @@ local.set $1 local.get $0 i32.load8_u offset=2 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $6 + local.tee $5 select i32.store8 offset=1 local.get $0 @@ -12510,9 +12511,9 @@ i32.const 2 global.set $~argumentsLength local.get $3 - local.get $7 + local.get $4 local.get $1 - local.get $6 + local.get $5 select local.tee $1 local.get $2 @@ -12520,17 +12521,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $4 local.get $0 local.get $3 local.get $1 - local.get $7 + local.get $4 select i32.store8 local.get $0 local.get $1 local.get $3 - local.get $7 + local.get $4 select i32.store8 offset=2 end @@ -12539,14 +12540,14 @@ local.set $1 local.get $0 i32.load8_u offset=1 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -12556,7 +12557,7 @@ select i32.store8 local.get $0 - local.get $7 + local.get $4 local.get $1 local.get $2 select @@ -12566,7 +12567,9 @@ end local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -12576,45 +12579,45 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $6 i32.const 2 i32.shl - local.tee $6 + local.tee $5 i32.const 1 i32.shl - local.set $4 + local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $7 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $11 - local.get $6 + local.tee $9 + local.get $5 i32.add local.set $10 i32.const 0 - local.set $6 + local.set $5 loop $for-loop|1 local.get $5 local.get $6 - i32.gt_u + i32.lt_u if - local.get $11 - local.get $6 + local.get $9 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end @@ -12628,81 +12631,84 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $9 + local.set $11 local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $6 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $8 i32.const 31 - local.get $12 + local.get $8 i32.const 31 i32.lt_s select local.tee $1 - local.get $6 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $12 + local.get $8 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 + local.tee $6 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $5 + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $4 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $8 + local.get $6 i32.const 31 i32.add - local.tee $6 - local.get $6 - local.get $12 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select - local.tee $6 - local.get $4 + local.tee $5 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $8 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -12712,19 +12718,19 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $7 loop $for-loop|3 local.get $4 local.get $7 - i32.lt_u + i32.gt_u if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -12736,7 +12742,7 @@ local.get $0 local.get $13 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -12745,51 +12751,51 @@ i32.const 1 i32.add local.get $1 - local.get $9 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $11 + local.get $9 i32.add i32.const -1 i32.store local.get $13 local.set $3 end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|3 end end - local.get $11 - local.get $4 + local.get $9 + local.get $7 i32.const 2 i32.shl - local.tee $7 + local.tee $4 i32.add local.get $3 i32.store - local.get $7 + local.get $4 local.get $10 i32.add local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 + local.set $3 + local.get $5 local.set $1 - local.get $4 - local.set $7 + local.get $7 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $7 + local.get $4 if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -12801,29 +12807,29 @@ local.get $0 local.get $1 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $12 - local.get $9 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|4 end end - local.get $9 - call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free ) (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) (local $2 i32) diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 2f12648500..99913ac8bf 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -7218,10 +7218,10 @@ ) (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f32) - (local $7 f32) + (local $4 f32) + (local $5 f32) + (local $6 i32) + (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) @@ -7237,14 +7237,7 @@ (local $20 i32) (local $21 i32) (local $22 i32) - (local $23 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $3 local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -7257,21 +7250,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -7279,12 +7272,12 @@ end local.get $0 f32.load offset=4 - local.set $6 + local.set $4 local.get $0 f32.load offset=8 - local.set $7 - local.get $6 - local.get $7 + local.set $5 + local.get $4 + local.get $5 i32.const 2 global.set $~argumentsLength local.get $2 @@ -7292,23 +7285,23 @@ call_indirect $0 (type $f32_f32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select f32.store offset=4 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select - local.set $7 + local.set $5 local.get $0 f32.load - local.set $6 - local.get $6 - local.get $7 + local.set $4 + local.get $4 + local.get $5 i32.const 2 global.set $~argumentsLength local.get $2 @@ -7316,28 +7309,28 @@ call_indirect $0 (type $f32_f32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select f32.store local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select f32.store offset=8 end local.get $0 f32.load - local.set $7 + local.set $5 local.get $0 f32.load offset=4 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -7345,17 +7338,17 @@ call_indirect $0 (type $f32_f32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select f32.store local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select f32.store offset=4 end @@ -7364,271 +7357,277 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $5 + local.get $1 + local.set $3 i32.const 31 - local.get $5 + local.get $3 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $5 + local.set $3 loop $for-loop|1 - local.get $5 - local.get $8 + local.get $3 + local.get $6 i32.lt_u - local.set $12 - local.get $12 + local.set $10 + local.get $10 if - local.get $10 - local.get $5 + local.get $8 + local.get $3 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 + local.set $3 br $for-loop|1 end end - i32.const 0 - local.set $13 - local.get $4 + local.get $1 i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc - local.set $14 - i32.const 0 - local.set $15 + local.set $11 + local.get $1 + i32.const 1 + i32.sub + local.set $12 local.get $0 i32.const 0 - local.get $3 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $14 + local.get $14 i32.const 32 i32.lt_s if - local.get $3 - local.tee $12 + local.get $12 + local.tee $10 i32.const 32 i32.const 1 i32.sub - local.tee $5 - local.get $12 - local.get $5 + local.tee $3 + local.get $10 + local.get $3 i32.lt_s select - local.set $16 + local.set $13 local.get $0 - local.get $15 - local.get $16 - local.get $17 + i32.const 0 + local.get $13 + local.get $14 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $15 + i32.const 0 + local.set $16 loop $while-continue|2 - local.get $16 - local.get $3 - i32.lt_s - local.set $12 + local.get $13 local.get $12 + i32.lt_s + local.set $10 + local.get $10 if - local.get $16 + local.get $13 i32.const 1 i32.add - local.set $5 + local.set $3 local.get $0 - local.get $5 local.get $3 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.set $18 - local.get $18 - local.get $5 + local.set $17 + local.get $17 + local.get $3 i32.sub i32.const 1 i32.add - local.set $19 - local.get $19 + local.set $18 + local.get $18 i32.const 32 i32.lt_s if + local.get $12 + local.tee $19 local.get $3 - local.tee $20 - local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $21 + local.tee $20 + local.get $19 local.get $20 - local.get $21 i32.lt_s select - local.set $18 + local.set $17 local.get $0 - local.get $5 + local.get $3 + local.get $17 local.get $18 - local.get $19 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 + local.get $12 + local.get $16 local.get $3 - local.get $15 - local.get $5 - local.get $18 + local.get $17 call $~lib/util/sort/nodePower + local.set $19 + local.get $15 local.set $20 - local.get $13 - local.set $21 loop $for-loop|3 - local.get $21 local.get $20 + local.get $19 i32.gt_u - local.set $22 - local.get $22 + local.set $21 + local.get $21 if - local.get $10 - local.get $21 + local.get $8 + local.get $20 i32.const 2 i32.shl i32.add i32.load - local.set $23 - local.get $23 + local.set $22 + local.get $22 i32.const -1 i32.ne if local.get $0 - local.get $23 - local.get $11 - local.get $21 + local.get $22 + local.get $9 + local.get $20 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $16 - local.get $14 + local.get $13 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns - local.get $23 - local.set $15 - local.get $10 - local.get $21 + local.get $22 + local.set $16 + local.get $8 + local.get $20 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $21 + local.get $20 i32.const 1 i32.sub - local.set $21 + local.set $20 br $for-loop|3 end end - local.get $10 - local.get $20 + local.get $8 + local.get $19 i32.const 2 i32.shl i32.add - local.get $15 + local.get $16 i32.store - local.get $11 - local.get $20 + local.get $9 + local.get $19 i32.const 2 i32.shl i32.add - local.get $16 + local.get $13 i32.store - local.get $5 - local.set $15 - local.get $18 + local.get $3 local.set $16 - local.get $20 + local.get $17 local.set $13 + local.get $19 + local.set $15 br $while-continue|2 end end - local.get $13 - local.set $12 + local.get $15 + local.set $10 loop $for-loop|4 - local.get $12 + local.get $10 i32.const 0 i32.ne - local.set $21 - local.get $21 + local.set $20 + local.get $20 if + local.get $8 local.get $10 - local.get $12 i32.const 2 i32.shl i32.add i32.load - local.set $22 - local.get $22 + local.set $21 + local.get $21 i32.const -1 i32.ne if local.get $0 - local.get $22 - local.get $11 - local.get $12 + local.get $21 + local.get $9 + local.get $10 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $14 + local.get $12 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $12 + local.get $10 i32.const 1 i32.sub - local.set $12 + local.set $10 br $for-loop|4 end end - local.get $14 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $8 call $~lib/rt/tlsf/__free ) (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) @@ -8304,10 +8303,10 @@ ) (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 f64) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) @@ -8323,14 +8322,7 @@ (local $20 i32) (local $21 i32) (local $22 i32) - (local $23 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $3 local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -8343,21 +8335,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -8365,12 +8357,12 @@ end local.get $0 f64.load offset=8 - local.set $6 + local.set $4 local.get $0 f64.load offset=16 - local.set $7 - local.get $6 - local.get $7 + local.set $5 + local.get $4 + local.get $5 i32.const 2 global.set $~argumentsLength local.get $2 @@ -8378,23 +8370,23 @@ call_indirect $0 (type $f64_f64_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select f64.store offset=8 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select - local.set $7 + local.set $5 local.get $0 f64.load - local.set $6 - local.get $6 - local.get $7 + local.set $4 + local.get $4 + local.get $5 i32.const 2 global.set $~argumentsLength local.get $2 @@ -8402,28 +8394,28 @@ call_indirect $0 (type $f64_f64_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select f64.store local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select f64.store offset=16 end local.get $0 f64.load - local.set $7 + local.set $5 local.get $0 f64.load offset=8 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -8431,17 +8423,17 @@ call_indirect $0 (type $f64_f64_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select f64.store local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select f64.store offset=8 end @@ -8450,271 +8442,277 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $5 + local.get $1 + local.set $3 i32.const 31 - local.get $5 + local.get $3 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $5 + local.set $3 loop $for-loop|1 - local.get $5 - local.get $8 + local.get $3 + local.get $6 i32.lt_u - local.set $12 - local.get $12 + local.set $10 + local.get $10 if - local.get $10 - local.get $5 + local.get $8 + local.get $3 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 + local.set $3 br $for-loop|1 end end - i32.const 0 - local.set $13 - local.get $4 + local.get $1 i32.const 3 i32.shl call $~lib/rt/tlsf/__alloc - local.set $14 - i32.const 0 - local.set $15 + local.set $11 + local.get $1 + i32.const 1 + i32.sub + local.set $12 local.get $0 i32.const 0 - local.get $3 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $14 + local.get $14 i32.const 32 i32.lt_s if - local.get $3 - local.tee $12 + local.get $12 + local.tee $10 i32.const 32 i32.const 1 i32.sub - local.tee $5 - local.get $12 - local.get $5 + local.tee $3 + local.get $10 + local.get $3 i32.lt_s select - local.set $16 + local.set $13 local.get $0 - local.get $15 - local.get $16 - local.get $17 + i32.const 0 + local.get $13 + local.get $14 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $15 + i32.const 0 + local.set $16 loop $while-continue|2 - local.get $16 - local.get $3 - i32.lt_s - local.set $12 + local.get $13 local.get $12 + i32.lt_s + local.set $10 + local.get $10 if - local.get $16 + local.get $13 i32.const 1 i32.add - local.set $5 + local.set $3 local.get $0 - local.get $5 local.get $3 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.set $18 - local.get $18 - local.get $5 + local.set $17 + local.get $17 + local.get $3 i32.sub i32.const 1 i32.add - local.set $19 - local.get $19 + local.set $18 + local.get $18 i32.const 32 i32.lt_s if + local.get $12 + local.tee $19 local.get $3 - local.tee $20 - local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $21 + local.tee $20 + local.get $19 local.get $20 - local.get $21 i32.lt_s select - local.set $18 + local.set $17 local.get $0 - local.get $5 + local.get $3 + local.get $17 local.get $18 - local.get $19 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 + local.get $12 + local.get $16 local.get $3 - local.get $15 - local.get $5 - local.get $18 + local.get $17 call $~lib/util/sort/nodePower + local.set $19 + local.get $15 local.set $20 - local.get $13 - local.set $21 loop $for-loop|3 - local.get $21 local.get $20 + local.get $19 i32.gt_u - local.set $22 - local.get $22 + local.set $21 + local.get $21 if - local.get $10 - local.get $21 + local.get $8 + local.get $20 i32.const 2 i32.shl i32.add i32.load - local.set $23 - local.get $23 + local.set $22 + local.get $22 i32.const -1 i32.ne if local.get $0 - local.get $23 - local.get $11 - local.get $21 + local.get $22 + local.get $9 + local.get $20 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $16 - local.get $14 + local.get $13 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns - local.get $23 - local.set $15 - local.get $10 - local.get $21 + local.get $22 + local.set $16 + local.get $8 + local.get $20 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $21 + local.get $20 i32.const 1 i32.sub - local.set $21 + local.set $20 br $for-loop|3 end end - local.get $10 - local.get $20 + local.get $8 + local.get $19 i32.const 2 i32.shl i32.add - local.get $15 + local.get $16 i32.store - local.get $11 - local.get $20 + local.get $9 + local.get $19 i32.const 2 i32.shl i32.add - local.get $16 + local.get $13 i32.store - local.get $5 - local.set $15 - local.get $18 + local.get $3 local.set $16 - local.get $20 + local.get $17 local.set $13 + local.get $19 + local.set $15 br $while-continue|2 end end - local.get $13 - local.set $12 + local.get $15 + local.set $10 loop $for-loop|4 - local.get $12 + local.get $10 i32.const 0 i32.ne - local.set $21 - local.get $21 + local.set $20 + local.get $20 if + local.get $8 local.get $10 - local.get $12 i32.const 2 i32.shl i32.add i32.load - local.set $22 - local.get $22 + local.set $21 + local.get $21 i32.const -1 i32.ne if local.get $0 - local.get $22 - local.get $11 - local.get $12 + local.get $21 + local.get $9 + local.get $10 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $14 + local.get $12 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $12 + local.get $10 i32.const 1 i32.sub - local.set $12 + local.set $10 br $for-loop|4 end end - local.get $14 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $8 call $~lib/rt/tlsf/__free ) (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) @@ -9437,14 +9435,7 @@ (local $18 i32) (local $19 i32) (local $20 i32) - (local $21 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $3 local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -9457,21 +9448,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -9479,12 +9470,12 @@ end local.get $0 i32.load offset=4 - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.set $6 - local.get $5 - local.get $6 + local.set $4 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -9492,23 +9483,23 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store offset=4 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select - local.set $6 + local.set $4 local.get $0 i32.load - local.set $5 - local.get $5 - local.get $6 + local.set $3 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -9516,28 +9507,28 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store local.get $0 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select i32.store offset=8 end local.get $0 i32.load - local.set $7 + local.set $5 local.get $0 i32.load offset=4 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -9545,17 +9536,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i32.store local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i32.store offset=4 end @@ -9564,272 +9555,278 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $7 + local.get $1 + local.set $5 i32.const 31 - local.get $7 + local.get $5 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $7 + local.set $5 loop $for-loop|1 - local.get $7 - local.get $8 - i32.lt_u - local.set $5 local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 if - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|1 end end - i32.const 0 - local.set $12 - local.get $4 + local.get $1 i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc - local.set $13 - i32.const 0 - local.set $14 + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 local.get $0 i32.const 0 - local.get $3 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $15 - local.get $15 + local.set $12 + local.get $12 i32.const 1 i32.add - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 32 i32.lt_s if - local.get $3 - local.tee $6 + local.get $11 + local.tee $4 i32.const 32 i32.const 1 i32.sub - local.tee $7 - local.get $6 - local.get $7 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s select - local.set $15 + local.set $12 local.get $0 - local.get $14 - local.get $15 - local.get $16 + i32.const 0 + local.get $12 + local.get $13 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 loop $while-continue|2 - local.get $15 - local.get $3 + local.get $12 + local.get $11 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if - local.get $15 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $5 local.get $0 - local.get $7 - local.get $3 + local.get $5 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $5 + local.set $3 + local.get $3 local.get $5 - local.get $7 i32.sub i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $16 + local.get $16 i32.const 32 i32.lt_s if - local.get $3 - local.tee $18 - local.get $7 + local.get $11 + local.tee $17 + local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $19 + local.tee $18 + local.get $17 local.get $18 - local.get $19 i32.lt_s select - local.set $5 + local.set $3 local.get $0 - local.get $7 local.get $5 - local.get $17 + local.get $3 + local.get $16 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 - local.get $3 - local.get $14 - local.get $7 + local.get $11 + local.get $15 local.get $5 + local.get $3 call $~lib/util/sort/nodePower + local.set $17 + local.get $14 local.set $18 - local.get $12 - local.set $19 loop $for-loop|3 - local.get $19 local.get $18 + local.get $17 i32.gt_u - local.set $20 - local.get $20 + local.set $19 + local.get $19 if - local.get $10 - local.get $19 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.load - local.set $21 - local.get $21 + local.set $20 + local.get $20 i32.const -1 i32.ne if local.get $0 - local.get $21 - local.get $11 - local.get $19 + local.get $20 + local.get $9 + local.get $18 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $15 - local.get $13 + local.get $12 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns - local.get $21 - local.set $14 - local.get $10 - local.get $19 + local.get $20 + local.set $15 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $19 + local.get $18 i32.const 1 i32.sub - local.set $19 + local.set $18 br $for-loop|3 end end - local.get $10 - local.get $18 + local.get $8 + local.get $17 i32.const 2 i32.shl i32.add - local.get $14 + local.get $15 i32.store - local.get $11 - local.get $18 + local.get $9 + local.get $17 i32.const 2 i32.shl i32.add - local.get $15 + local.get $12 i32.store - local.get $7 - local.set $14 local.get $5 local.set $15 - local.get $18 + local.get $3 local.set $12 + local.get $17 + local.set $14 br $while-continue|2 end end - local.get $12 - local.set $6 + local.get $14 + local.set $4 loop $for-loop|4 - local.get $6 + local.get $4 i32.const 0 i32.ne - local.set $19 - local.get $19 + local.set $18 + local.get $18 if - local.get $10 - local.get $6 + local.get $8 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $20 - local.get $20 + local.set $19 + local.get $19 i32.const -1 i32.ne if local.get $0 - local.get $20 - local.get $11 - local.get $6 + local.get $19 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $13 + local.get $11 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end - local.get $13 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free ) (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -10415,14 +10412,7 @@ (local $18 i32) (local $19 i32) (local $20 i32) - (local $21 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $3 local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -10435,21 +10425,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -10457,12 +10447,12 @@ end local.get $0 i32.load offset=4 - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.set $6 - local.get $5 - local.get $6 + local.set $4 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -10470,23 +10460,23 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store offset=4 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select - local.set $6 + local.set $4 local.get $0 i32.load - local.set $5 - local.get $5 - local.get $6 + local.set $3 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -10494,28 +10484,28 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store local.get $0 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select i32.store offset=8 end local.get $0 i32.load - local.set $7 + local.set $5 local.get $0 i32.load offset=4 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -10523,17 +10513,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i32.store local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i32.store offset=4 end @@ -10542,272 +10532,278 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $7 + local.get $1 + local.set $5 i32.const 31 - local.get $7 + local.get $5 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $7 + local.set $5 loop $for-loop|1 - local.get $7 - local.get $8 - i32.lt_u - local.set $5 local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 if - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|1 end end - i32.const 0 - local.set $12 - local.get $4 + local.get $1 i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc - local.set $13 - i32.const 0 - local.set $14 + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 local.get $0 i32.const 0 - local.get $3 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $15 - local.get $15 + local.set $12 + local.get $12 i32.const 1 i32.add - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 32 i32.lt_s if - local.get $3 - local.tee $6 + local.get $11 + local.tee $4 i32.const 32 i32.const 1 i32.sub - local.tee $7 - local.get $6 - local.get $7 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s select - local.set $15 + local.set $12 local.get $0 - local.get $14 - local.get $15 - local.get $16 + i32.const 0 + local.get $12 + local.get $13 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 loop $while-continue|2 - local.get $15 - local.get $3 + local.get $12 + local.get $11 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if - local.get $15 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $5 local.get $0 - local.get $7 - local.get $3 + local.get $5 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $5 + local.set $3 + local.get $3 local.get $5 - local.get $7 i32.sub i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $16 + local.get $16 i32.const 32 i32.lt_s if - local.get $3 - local.tee $18 - local.get $7 + local.get $11 + local.tee $17 + local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $19 + local.tee $18 + local.get $17 local.get $18 - local.get $19 i32.lt_s select - local.set $5 + local.set $3 local.get $0 - local.get $7 local.get $5 - local.get $17 + local.get $3 + local.get $16 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 - local.get $3 - local.get $14 - local.get $7 + local.get $11 + local.get $15 local.get $5 + local.get $3 call $~lib/util/sort/nodePower + local.set $17 + local.get $14 local.set $18 - local.get $12 - local.set $19 loop $for-loop|3 - local.get $19 local.get $18 + local.get $17 i32.gt_u - local.set $20 - local.get $20 + local.set $19 + local.get $19 if - local.get $10 - local.get $19 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.load - local.set $21 - local.get $21 + local.set $20 + local.get $20 i32.const -1 i32.ne if local.get $0 - local.get $21 - local.get $11 - local.get $19 + local.get $20 + local.get $9 + local.get $18 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $15 - local.get $13 + local.get $12 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns - local.get $21 - local.set $14 - local.get $10 - local.get $19 + local.get $20 + local.set $15 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $19 + local.get $18 i32.const 1 i32.sub - local.set $19 + local.set $18 br $for-loop|3 end end - local.get $10 - local.get $18 + local.get $8 + local.get $17 i32.const 2 i32.shl i32.add - local.get $14 + local.get $15 i32.store - local.get $11 - local.get $18 + local.get $9 + local.get $17 i32.const 2 i32.shl i32.add - local.get $15 + local.get $12 i32.store - local.get $7 - local.set $14 local.get $5 local.set $15 - local.get $18 + local.get $3 local.set $12 + local.get $17 + local.set $14 br $while-continue|2 end end - local.get $12 - local.set $6 + local.get $14 + local.set $4 loop $for-loop|4 - local.get $6 + local.get $4 i32.const 0 i32.ne - local.set $19 - local.get $19 + local.set $18 + local.get $18 if - local.get $10 - local.get $6 + local.get $8 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $20 - local.get $20 + local.set $19 + local.get $19 i32.const -1 i32.ne if local.get $0 - local.get $20 - local.get $11 - local.get $6 + local.get $19 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $13 + local.get $11 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end - local.get $13 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free ) (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -11477,7 +11473,6 @@ (local $18 i32) (local $19 i32) (local $20 i32) - (local $21 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -11490,12 +11485,6 @@ i32.const 0 i32.store offset=8 local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -11508,21 +11497,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -11531,15 +11520,15 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.tee $5 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 i32.store offset=4 - local.get $5 - local.get $6 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -11547,27 +11536,27 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select - local.tee $6 + local.tee $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $5 + local.tee $3 i32.store - local.get $5 - local.get $6 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -11575,32 +11564,32 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store local.get $0 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select i32.store offset=8 end global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $7 + local.tee $5 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.tee $6 + local.tee $4 i32.store offset=4 - local.get $7 - local.get $6 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -11608,17 +11597,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i32.store local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i32.store offset=4 end @@ -11631,7 +11620,9 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort<~lib/array/Array> @@ -11641,266 +11632,270 @@ global.set $~lib/memory/__stack_pointer return end - local.get $4 - local.set $7 + local.get $1 + local.set $5 i32.const 31 - local.get $7 + local.get $5 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $7 + local.set $5 loop $for-loop|1 - local.get $7 - local.get $8 - i32.lt_u - local.set $5 local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 if - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|1 end end - i32.const 0 - local.set $12 - local.get $4 + local.get $1 i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc - local.set $13 - i32.const 0 - local.set $14 + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 local.get $0 i32.const 0 - local.get $3 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight<~lib/array/Array> - local.set $15 - local.get $15 + local.set $12 + local.get $12 i32.const 1 i32.add - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 32 i32.lt_s if - local.get $3 - local.tee $6 + local.get $11 + local.tee $4 i32.const 32 i32.const 1 i32.sub - local.tee $7 - local.get $6 - local.get $7 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s select - local.set $15 + local.set $12 local.get $0 - local.get $14 - local.get $15 - local.get $16 + i32.const 0 + local.get $12 + local.get $13 local.get $2 call $~lib/util/sort/insertionSort<~lib/array/Array> end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 loop $while-continue|2 - local.get $15 - local.get $3 + local.get $12 + local.get $11 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if - local.get $15 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $5 local.get $0 - local.get $7 - local.get $3 + local.get $5 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight<~lib/array/Array> - local.set $5 + local.set $3 + local.get $3 local.get $5 - local.get $7 i32.sub i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $16 + local.get $16 i32.const 32 i32.lt_s if - local.get $3 - local.tee $18 - local.get $7 + local.get $11 + local.tee $17 + local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $19 + local.tee $18 + local.get $17 local.get $18 - local.get $19 i32.lt_s select - local.set $5 + local.set $3 local.get $0 - local.get $7 local.get $5 - local.get $17 + local.get $3 + local.get $16 local.get $2 call $~lib/util/sort/insertionSort<~lib/array/Array> end i32.const 0 - local.get $3 - local.get $14 - local.get $7 + local.get $11 + local.get $15 local.get $5 + local.get $3 call $~lib/util/sort/nodePower + local.set $17 + local.get $14 local.set $18 - local.get $12 - local.set $19 loop $for-loop|3 - local.get $19 local.get $18 + local.get $17 i32.gt_u - local.set $20 - local.get $20 + local.set $19 + local.get $19 if - local.get $10 - local.get $19 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.load - local.set $21 - local.get $21 + local.set $20 + local.get $20 i32.const -1 i32.ne if local.get $0 - local.get $21 - local.get $11 - local.get $19 + local.get $20 + local.get $9 + local.get $18 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $15 - local.get $13 + local.get $12 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns<~lib/array/Array> - local.get $21 - local.set $14 - local.get $10 - local.get $19 + local.get $20 + local.set $15 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $19 + local.get $18 i32.const 1 i32.sub - local.set $19 + local.set $18 br $for-loop|3 end end - local.get $10 - local.get $18 + local.get $8 + local.get $17 i32.const 2 i32.shl i32.add - local.get $14 + local.get $15 i32.store - local.get $11 - local.get $18 + local.get $9 + local.get $17 i32.const 2 i32.shl i32.add - local.get $15 + local.get $12 i32.store - local.get $7 - local.set $14 local.get $5 local.set $15 - local.get $18 + local.get $3 local.set $12 + local.get $17 + local.set $14 br $while-continue|2 end end - local.get $12 - local.set $6 + local.get $14 + local.set $4 loop $for-loop|4 - local.get $6 + local.get $4 i32.const 0 i32.ne - local.set $19 - local.get $19 + local.set $18 + local.get $18 if - local.get $10 - local.get $6 + local.get $8 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $20 - local.get $20 + local.set $19 + local.get $19 i32.const -1 i32.ne if local.get $0 - local.get $20 - local.get $11 - local.get $6 + local.get $19 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $13 + local.get $11 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns<~lib/array/Array> end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end - local.get $13 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -12397,7 +12392,6 @@ (local $18 i32) (local $19 i32) (local $20 i32) - (local $21 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -12410,12 +12404,6 @@ i32.const 0 i32.store offset=8 local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -12428,21 +12416,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -12451,15 +12439,15 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.tee $5 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 i32.store offset=4 - local.get $5 - local.get $6 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -12467,27 +12455,27 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select - local.tee $6 + local.tee $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $5 + local.tee $3 i32.store - local.get $5 - local.get $6 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -12495,32 +12483,32 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store local.get $0 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select i32.store offset=8 end global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $7 + local.tee $5 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.tee $6 + local.tee $4 i32.store offset=4 - local.get $7 - local.get $6 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -12528,17 +12516,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i32.store local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i32.store offset=4 end @@ -12551,7 +12539,9 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort> @@ -12561,266 +12551,270 @@ global.set $~lib/memory/__stack_pointer return end - local.get $4 - local.set $7 + local.get $1 + local.set $5 i32.const 31 - local.get $7 + local.get $5 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $7 + local.set $5 loop $for-loop|1 - local.get $7 - local.get $8 - i32.lt_u - local.set $5 local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 if - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|1 end end - i32.const 0 - local.set $12 - local.get $4 + local.get $1 i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc - local.set $13 - i32.const 0 - local.set $14 + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 local.get $0 i32.const 0 - local.get $3 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight> - local.set $15 - local.get $15 + local.set $12 + local.get $12 i32.const 1 i32.add - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 32 i32.lt_s if - local.get $3 - local.tee $6 + local.get $11 + local.tee $4 i32.const 32 i32.const 1 i32.sub - local.tee $7 - local.get $6 - local.get $7 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s select - local.set $15 + local.set $12 local.get $0 - local.get $14 - local.get $15 - local.get $16 + i32.const 0 + local.get $12 + local.get $13 local.get $2 call $~lib/util/sort/insertionSort> end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 loop $while-continue|2 - local.get $15 - local.get $3 + local.get $12 + local.get $11 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if - local.get $15 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $5 local.get $0 - local.get $7 - local.get $3 + local.get $5 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight> - local.set $5 + local.set $3 + local.get $3 local.get $5 - local.get $7 i32.sub i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $16 + local.get $16 i32.const 32 i32.lt_s if - local.get $3 - local.tee $18 - local.get $7 + local.get $11 + local.tee $17 + local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $19 + local.tee $18 + local.get $17 local.get $18 - local.get $19 i32.lt_s select - local.set $5 + local.set $3 local.get $0 - local.get $7 local.get $5 - local.get $17 + local.get $3 + local.get $16 local.get $2 call $~lib/util/sort/insertionSort> end i32.const 0 - local.get $3 - local.get $14 - local.get $7 + local.get $11 + local.get $15 local.get $5 + local.get $3 call $~lib/util/sort/nodePower + local.set $17 + local.get $14 local.set $18 - local.get $12 - local.set $19 loop $for-loop|3 - local.get $19 local.get $18 + local.get $17 i32.gt_u - local.set $20 - local.get $20 + local.set $19 + local.get $19 if - local.get $10 - local.get $19 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.load - local.set $21 - local.get $21 + local.set $20 + local.get $20 i32.const -1 i32.ne if local.get $0 - local.get $21 - local.get $11 - local.get $19 + local.get $20 + local.get $9 + local.get $18 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $15 - local.get $13 + local.get $12 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns> - local.get $21 - local.set $14 - local.get $10 - local.get $19 + local.get $20 + local.set $15 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $19 + local.get $18 i32.const 1 i32.sub - local.set $19 + local.set $18 br $for-loop|3 end end - local.get $10 - local.get $18 + local.get $8 + local.get $17 i32.const 2 i32.shl i32.add - local.get $14 + local.get $15 i32.store - local.get $11 - local.get $18 + local.get $9 + local.get $17 i32.const 2 i32.shl i32.add - local.get $15 + local.get $12 i32.store - local.get $7 - local.set $14 local.get $5 local.set $15 - local.get $18 + local.get $3 local.set $12 + local.get $17 + local.set $14 br $while-continue|2 end end - local.get $12 - local.set $6 + local.get $14 + local.set $4 loop $for-loop|4 - local.get $6 + local.get $4 i32.const 0 i32.ne - local.set $19 - local.get $19 + local.set $18 + local.get $18 if - local.get $10 - local.get $6 + local.get $8 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $20 - local.get $20 + local.set $19 + local.get $19 i32.const -1 i32.ne if local.get $0 - local.get $20 - local.get $11 - local.get $6 + local.get $19 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $13 + local.get $11 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns> end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end - local.get $13 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -13230,7 +13224,6 @@ (local $18 i32) (local $19 i32) (local $20 i32) - (local $21 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -13243,12 +13236,6 @@ i32.const 0 i32.store offset=8 local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -13261,21 +13248,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -13284,15 +13271,15 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.tee $5 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 i32.store offset=4 - local.get $5 - local.get $6 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -13300,27 +13287,27 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select - local.tee $6 + local.tee $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $5 + local.tee $3 i32.store - local.get $5 - local.get $6 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -13328,32 +13315,32 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store local.get $0 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select i32.store offset=8 end global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $7 + local.tee $5 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.tee $6 + local.tee $4 i32.store offset=4 - local.get $7 - local.get $6 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -13361,17 +13348,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i32.store local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i32.store offset=4 end @@ -13384,7 +13371,9 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort<~lib/string/String|null> @@ -13394,266 +13383,270 @@ global.set $~lib/memory/__stack_pointer return end - local.get $4 - local.set $7 + local.get $1 + local.set $5 i32.const 31 - local.get $7 + local.get $5 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $7 + local.set $5 loop $for-loop|1 - local.get $7 - local.get $8 - i32.lt_u - local.set $5 local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 if - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|1 end end - i32.const 0 - local.set $12 - local.get $4 + local.get $1 i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc - local.set $13 - i32.const 0 - local.set $14 + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 local.get $0 i32.const 0 - local.get $3 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight<~lib/string/String|null> - local.set $15 - local.get $15 + local.set $12 + local.get $12 i32.const 1 i32.add - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 32 i32.lt_s if - local.get $3 - local.tee $6 + local.get $11 + local.tee $4 i32.const 32 i32.const 1 i32.sub - local.tee $7 - local.get $6 - local.get $7 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s select - local.set $15 + local.set $12 local.get $0 - local.get $14 - local.get $15 - local.get $16 + i32.const 0 + local.get $12 + local.get $13 local.get $2 call $~lib/util/sort/insertionSort<~lib/string/String|null> end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 loop $while-continue|2 - local.get $15 - local.get $3 + local.get $12 + local.get $11 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if - local.get $15 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $5 local.get $0 - local.get $7 - local.get $3 + local.get $5 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight<~lib/string/String|null> - local.set $5 + local.set $3 + local.get $3 local.get $5 - local.get $7 i32.sub i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $16 + local.get $16 i32.const 32 i32.lt_s if - local.get $3 - local.tee $18 - local.get $7 + local.get $11 + local.tee $17 + local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $19 + local.tee $18 + local.get $17 local.get $18 - local.get $19 i32.lt_s select - local.set $5 + local.set $3 local.get $0 - local.get $7 local.get $5 - local.get $17 + local.get $3 + local.get $16 local.get $2 call $~lib/util/sort/insertionSort<~lib/string/String|null> end i32.const 0 - local.get $3 - local.get $14 - local.get $7 + local.get $11 + local.get $15 local.get $5 + local.get $3 call $~lib/util/sort/nodePower + local.set $17 + local.get $14 local.set $18 - local.get $12 - local.set $19 loop $for-loop|3 - local.get $19 local.get $18 + local.get $17 i32.gt_u - local.set $20 - local.get $20 + local.set $19 + local.get $19 if - local.get $10 - local.get $19 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.load - local.set $21 - local.get $21 + local.set $20 + local.get $20 i32.const -1 i32.ne if local.get $0 - local.get $21 - local.get $11 - local.get $19 + local.get $20 + local.get $9 + local.get $18 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $15 - local.get $13 + local.get $12 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns<~lib/string/String|null> - local.get $21 - local.set $14 - local.get $10 - local.get $19 + local.get $20 + local.set $15 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $19 + local.get $18 i32.const 1 i32.sub - local.set $19 + local.set $18 br $for-loop|3 end end - local.get $10 - local.get $18 + local.get $8 + local.get $17 i32.const 2 i32.shl i32.add - local.get $14 + local.get $15 i32.store - local.get $11 - local.get $18 + local.get $9 + local.get $17 i32.const 2 i32.shl i32.add - local.get $15 + local.get $12 i32.store - local.get $7 - local.set $14 local.get $5 local.set $15 - local.get $18 + local.get $3 local.set $12 + local.get $17 + local.set $14 br $while-continue|2 end end - local.get $12 - local.set $6 + local.get $14 + local.set $4 loop $for-loop|4 - local.get $6 + local.get $4 i32.const 0 i32.ne - local.set $19 - local.get $19 + local.set $18 + local.get $18 if - local.get $10 - local.get $6 + local.get $8 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $20 - local.get $20 + local.set $19 + local.get $19 i32.const -1 i32.ne if local.get $0 - local.get $20 - local.get $11 - local.get $6 + local.get $19 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $13 + local.get $11 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns<~lib/string/String|null> end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end - local.get $13 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -14422,7 +14415,6 @@ (local $18 i32) (local $19 i32) (local $20 i32) - (local $21 i32) global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -14435,12 +14427,6 @@ i32.const 0 i32.store offset=8 local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -14453,21 +14439,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -14476,15 +14462,15 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.tee $5 + local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - local.tee $6 + local.tee $4 i32.store offset=4 - local.get $5 - local.get $6 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -14492,27 +14478,27 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select - local.tee $6 + local.tee $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $5 + local.tee $3 i32.store - local.get $5 - local.get $6 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -14520,32 +14506,32 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store local.get $0 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select i32.store offset=8 end global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $7 + local.tee $5 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.tee $6 + local.tee $4 i32.store offset=4 - local.get $7 - local.get $6 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -14553,17 +14539,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i32.store local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i32.store offset=4 end @@ -14576,7 +14562,9 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort<~lib/string/String> @@ -14586,266 +14574,270 @@ global.set $~lib/memory/__stack_pointer return end - local.get $4 - local.set $7 + local.get $1 + local.set $5 i32.const 31 - local.get $7 + local.get $5 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $7 + local.set $5 loop $for-loop|1 - local.get $7 - local.get $8 - i32.lt_u - local.set $5 local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 if - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|1 end end - i32.const 0 - local.set $12 - local.get $4 + local.get $1 i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc - local.set $13 - i32.const 0 - local.set $14 + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 local.get $0 i32.const 0 - local.get $3 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight<~lib/string/String> - local.set $15 - local.get $15 + local.set $12 + local.get $12 i32.const 1 i32.add - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 32 i32.lt_s if - local.get $3 - local.tee $6 + local.get $11 + local.tee $4 i32.const 32 i32.const 1 i32.sub - local.tee $7 - local.get $6 - local.get $7 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s select - local.set $15 + local.set $12 local.get $0 - local.get $14 - local.get $15 - local.get $16 + i32.const 0 + local.get $12 + local.get $13 local.get $2 call $~lib/util/sort/insertionSort<~lib/string/String> end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 loop $while-continue|2 - local.get $15 - local.get $3 + local.get $12 + local.get $11 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if - local.get $15 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $5 local.get $0 - local.get $7 - local.get $3 + local.get $5 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight<~lib/string/String> - local.set $5 + local.set $3 + local.get $3 local.get $5 - local.get $7 i32.sub i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $16 + local.get $16 i32.const 32 i32.lt_s if - local.get $3 - local.tee $18 - local.get $7 + local.get $11 + local.tee $17 + local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $19 + local.tee $18 + local.get $17 local.get $18 - local.get $19 i32.lt_s select - local.set $5 + local.set $3 local.get $0 - local.get $7 local.get $5 - local.get $17 + local.get $3 + local.get $16 local.get $2 call $~lib/util/sort/insertionSort<~lib/string/String> end i32.const 0 - local.get $3 - local.get $14 - local.get $7 + local.get $11 + local.get $15 local.get $5 + local.get $3 call $~lib/util/sort/nodePower + local.set $17 + local.get $14 local.set $18 - local.get $12 - local.set $19 loop $for-loop|3 - local.get $19 local.get $18 + local.get $17 i32.gt_u - local.set $20 - local.get $20 + local.set $19 + local.get $19 if - local.get $10 - local.get $19 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.load - local.set $21 - local.get $21 + local.set $20 + local.get $20 i32.const -1 i32.ne if local.get $0 - local.get $21 - local.get $11 - local.get $19 + local.get $20 + local.get $9 + local.get $18 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $15 - local.get $13 + local.get $12 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns<~lib/string/String> - local.get $21 - local.set $14 - local.get $10 - local.get $19 + local.get $20 + local.set $15 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $19 + local.get $18 i32.const 1 i32.sub - local.set $19 + local.set $18 br $for-loop|3 end end - local.get $10 - local.get $18 + local.get $8 + local.get $17 i32.const 2 i32.shl i32.add - local.get $14 + local.get $15 i32.store - local.get $11 - local.get $18 + local.get $9 + local.get $17 i32.const 2 i32.shl i32.add - local.get $15 + local.get $12 i32.store - local.get $7 - local.set $14 local.get $5 local.set $15 - local.get $18 + local.get $3 local.set $12 + local.get $17 + local.set $14 br $while-continue|2 end end - local.get $12 - local.set $6 + local.get $14 + local.set $4 loop $for-loop|4 - local.get $6 + local.get $4 i32.const 0 i32.ne - local.set $19 - local.get $19 + local.set $18 + local.get $18 if - local.get $10 - local.get $6 + local.get $8 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $20 - local.get $20 + local.set $19 + local.get $19 i32.const -1 i32.ne if local.get $0 - local.get $20 - local.get $11 - local.get $6 + local.get $19 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $13 + local.get $11 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns<~lib/string/String> end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end - local.get $13 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -20123,14 +20115,7 @@ (local $18 i32) (local $19 i32) (local $20 i32) - (local $21 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $3 local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -20143,21 +20128,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -20165,12 +20150,12 @@ end local.get $0 i32.load8_u offset=1 - local.set $5 + local.set $3 local.get $0 i32.load8_u offset=2 - local.set $6 - local.get $5 - local.get $6 + local.set $4 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -20178,23 +20163,23 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store8 offset=1 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select - local.set $6 + local.set $4 local.get $0 i32.load8_u - local.set $5 - local.get $5 - local.get $6 + local.set $3 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -20202,28 +20187,28 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store8 local.get $0 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select i32.store8 offset=2 end local.get $0 i32.load8_u - local.set $7 + local.set $5 local.get $0 i32.load8_u offset=1 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -20231,17 +20216,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i32.store8 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i32.store8 offset=1 end @@ -20250,272 +20235,278 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $7 + local.get $1 + local.set $5 i32.const 31 - local.get $7 + local.get $5 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $7 + local.set $5 loop $for-loop|1 - local.get $7 - local.get $8 - i32.lt_u - local.set $5 local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 if - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|1 end end - i32.const 0 - local.set $12 - local.get $4 + local.get $1 i32.const 0 i32.shl call $~lib/rt/tlsf/__alloc - local.set $13 - i32.const 0 - local.set $14 + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 local.get $0 i32.const 0 - local.get $3 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $15 - local.get $15 + local.set $12 + local.get $12 i32.const 1 i32.add - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 32 i32.lt_s if - local.get $3 - local.tee $6 + local.get $11 + local.tee $4 i32.const 32 i32.const 1 i32.sub - local.tee $7 - local.get $6 - local.get $7 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s select - local.set $15 + local.set $12 local.get $0 - local.get $14 - local.get $15 - local.get $16 + i32.const 0 + local.get $12 + local.get $13 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 loop $while-continue|2 - local.get $15 - local.get $3 + local.get $12 + local.get $11 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if - local.get $15 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $5 local.get $0 - local.get $7 - local.get $3 + local.get $5 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $5 + local.set $3 + local.get $3 local.get $5 - local.get $7 i32.sub i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $16 + local.get $16 i32.const 32 i32.lt_s if - local.get $3 - local.tee $18 - local.get $7 + local.get $11 + local.tee $17 + local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $19 + local.tee $18 + local.get $17 local.get $18 - local.get $19 i32.lt_s select - local.set $5 + local.set $3 local.get $0 - local.get $7 local.get $5 - local.get $17 + local.get $3 + local.get $16 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 - local.get $3 - local.get $14 - local.get $7 + local.get $11 + local.get $15 local.get $5 + local.get $3 call $~lib/util/sort/nodePower + local.set $17 + local.get $14 local.set $18 - local.get $12 - local.set $19 loop $for-loop|3 - local.get $19 local.get $18 + local.get $17 i32.gt_u - local.set $20 - local.get $20 + local.set $19 + local.get $19 if - local.get $10 - local.get $19 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.load - local.set $21 - local.get $21 + local.set $20 + local.get $20 i32.const -1 i32.ne if local.get $0 - local.get $21 - local.get $11 - local.get $19 + local.get $20 + local.get $9 + local.get $18 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $15 - local.get $13 + local.get $12 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns - local.get $21 - local.set $14 - local.get $10 - local.get $19 + local.get $20 + local.set $15 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $19 + local.get $18 i32.const 1 i32.sub - local.set $19 + local.set $18 br $for-loop|3 end end - local.get $10 - local.get $18 + local.get $8 + local.get $17 i32.const 2 i32.shl i32.add - local.get $14 + local.get $15 i32.store - local.get $11 - local.get $18 + local.get $9 + local.get $17 i32.const 2 i32.shl i32.add - local.get $15 + local.get $12 i32.store - local.get $7 - local.set $14 local.get $5 local.set $15 - local.get $18 + local.get $3 local.set $12 + local.get $17 + local.set $14 br $while-continue|2 end end - local.get $12 - local.set $6 + local.get $14 + local.set $4 loop $for-loop|4 - local.get $6 + local.get $4 i32.const 0 i32.ne - local.set $19 - local.get $19 + local.set $18 + local.get $18 if - local.get $10 - local.get $6 + local.get $8 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $20 - local.get $20 + local.set $19 + local.get $19 i32.const -1 i32.ne if local.get $0 - local.get $20 - local.get $11 - local.get $6 + local.get $19 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $13 + local.get $11 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end - local.get $13 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free ) (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 4d3efb1c20..bb88035530 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3469,12 +3469,8 @@ (local $12 f64) (local $13 i32) (local $14 f64) - (local $15 f64) - (local $16 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $16 + (local $15 i32) + (local $16 f64) local.get $1 i32.const 128 i32.le_s @@ -3488,16 +3484,16 @@ end local.get $0 f64.load offset=8 - local.set $15 + local.set $16 local.get $0 f64.load offset=16 local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $15 + local.get $16 local.get $14 - local.get $15 + local.get $16 local.get $14 local.get $2 i32.load @@ -3514,10 +3510,10 @@ global.set $~argumentsLength local.get $12 local.get $14 - local.get $15 + local.get $16 local.get $1 select - local.tee $15 + local.tee $16 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3526,12 +3522,12 @@ local.set $1 local.get $0 local.get $12 - local.get $15 + local.get $16 local.get $1 select f64.store local.get $0 - local.get $15 + local.get $16 local.get $12 local.get $1 select @@ -3539,16 +3535,16 @@ end local.get $0 f64.load - local.set $15 + local.set $16 local.get $0 f64.load offset=8 local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $15 + local.get $16 local.get $14 - local.get $15 + local.get $16 local.get $14 local.get $2 i32.load @@ -3560,7 +3556,7 @@ f64.store local.get $0 local.get $14 - local.get $15 + local.get $16 local.get $1 select f64.store offset=8 @@ -3569,7 +3565,9 @@ end local.get $0 i32.const 0 - local.get $16 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -3624,21 +3622,24 @@ local.get $1 i32.const 3 i32.shl - local.set $1 + local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $7 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add local.set $10 local.get $0 i32.const 0 - local.get $16 + local.get $1 + i32.const 1 + i32.sub + local.tee $15 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 @@ -3650,9 +3651,9 @@ if local.get $0 i32.const 0 - local.get $16 + local.get $15 i32.const 31 - local.get $16 + local.get $15 i32.const 31 i32.lt_s select @@ -3663,7 +3664,7 @@ end loop $while-continue|2 local.get $1 - local.get $16 + local.get $15 i32.lt_s if local.get $0 @@ -3671,7 +3672,7 @@ i32.const 1 i32.add local.tee $5 - local.get $16 + local.get $15 local.get $2 call $~lib/util/sort/extendRunRight local.tee $7 @@ -3685,13 +3686,13 @@ if local.get $0 local.get $5 - local.get $16 + local.get $15 local.get $5 i32.const 31 i32.add local.tee $7 local.get $7 - local.get $16 + local.get $15 i32.gt_s select local.tee $7 @@ -3705,7 +3706,7 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $16 + local.get $15 i32.const 1 i32.add i64.extend_i32_u @@ -3815,7 +3816,7 @@ i32.load i32.const 1 i32.add - local.get $16 + local.get $15 local.get $10 local.get $2 call $~lib/util/sort/mergeRuns @@ -29673,17 +29674,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) + (local $12 i64) (local $13 i32) local.get $1 - i32.const 1 - i32.sub - local.set $12 - local.get $1 i32.const 128 i32.le_s if @@ -29699,20 +29696,20 @@ local.set $1 local.get $0 i32.load8_s offset=2 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $6 + local.tee $5 select i32.store8 offset=1 local.get $0 @@ -29721,9 +29718,9 @@ i32.const 2 global.set $~argumentsLength local.get $3 - local.get $7 + local.get $4 local.get $1 - local.get $6 + local.get $5 select local.tee $1 local.get $2 @@ -29731,17 +29728,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $4 local.get $0 local.get $3 local.get $1 - local.get $7 + local.get $4 select i32.store8 local.get $0 local.get $1 local.get $3 - local.get $7 + local.get $4 select i32.store8 offset=2 end @@ -29750,14 +29747,14 @@ local.set $1 local.get $0 i32.load8_s offset=1 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -29767,7 +29764,7 @@ select i32.store8 local.get $0 - local.get $7 + local.get $4 local.get $1 local.get $2 select @@ -29777,7 +29774,9 @@ end local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -29787,45 +29786,45 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $6 i32.const 2 i32.shl - local.tee $6 + local.tee $5 i32.const 1 i32.shl - local.set $4 + local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $7 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $11 - local.get $6 + local.tee $9 + local.get $5 i32.add local.set $10 i32.const 0 - local.set $6 + local.set $5 loop $for-loop|1 local.get $5 local.get $6 - i32.gt_u + i32.lt_u if - local.get $11 - local.get $6 + local.get $9 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end @@ -29839,81 +29838,84 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $9 + local.set $11 local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $6 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $8 i32.const 31 - local.get $12 + local.get $8 i32.const 31 i32.lt_s select local.tee $1 - local.get $6 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $12 + local.get $8 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 + local.tee $6 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $5 + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $4 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $8 + local.get $6 i32.const 31 i32.add - local.tee $6 - local.get $6 - local.get $12 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select - local.tee $6 - local.get $4 + local.tee $5 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $8 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -29923,19 +29925,19 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $7 loop $for-loop|3 local.get $4 local.get $7 - i32.lt_u + i32.gt_u if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -29947,7 +29949,7 @@ local.get $0 local.get $13 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -29956,51 +29958,51 @@ i32.const 1 i32.add local.get $1 - local.get $9 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $11 + local.get $9 i32.add i32.const -1 i32.store local.get $13 local.set $3 end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|3 end end - local.get $11 - local.get $4 + local.get $9 + local.get $7 i32.const 2 i32.shl - local.tee $7 + local.tee $4 i32.add local.get $3 i32.store - local.get $7 + local.get $4 local.get $10 i32.add local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 + local.set $3 + local.get $5 local.set $1 - local.get $4 - local.set $7 + local.get $7 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $7 + local.get $4 if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -30012,29 +30014,29 @@ local.get $0 local.get $1 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $12 - local.get $9 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|4 end end - local.get $9 - call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -30504,17 +30506,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) + (local $12 i64) (local $13 i32) local.get $1 - i32.const 1 - i32.sub - local.set $12 - local.get $1 i32.const 128 i32.le_s if @@ -30530,20 +30528,20 @@ local.set $1 local.get $0 i32.load8_u offset=2 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $6 + local.tee $5 select i32.store8 offset=1 local.get $0 @@ -30552,9 +30550,9 @@ i32.const 2 global.set $~argumentsLength local.get $3 - local.get $7 + local.get $4 local.get $1 - local.get $6 + local.get $5 select local.tee $1 local.get $2 @@ -30562,17 +30560,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $4 local.get $0 local.get $3 local.get $1 - local.get $7 + local.get $4 select i32.store8 local.get $0 local.get $1 local.get $3 - local.get $7 + local.get $4 select i32.store8 offset=2 end @@ -30581,14 +30579,14 @@ local.set $1 local.get $0 i32.load8_u offset=1 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -30598,7 +30596,7 @@ select i32.store8 local.get $0 - local.get $7 + local.get $4 local.get $1 local.get $2 select @@ -30608,7 +30606,9 @@ end local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -30618,45 +30618,45 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $6 i32.const 2 i32.shl - local.tee $6 + local.tee $5 i32.const 1 i32.shl - local.set $4 + local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $7 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $11 - local.get $6 + local.tee $9 + local.get $5 i32.add local.set $10 i32.const 0 - local.set $6 + local.set $5 loop $for-loop|1 local.get $5 local.get $6 - i32.gt_u + i32.lt_u if - local.get $11 - local.get $6 + local.get $9 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end @@ -30670,81 +30670,84 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $9 + local.set $11 local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $6 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $8 i32.const 31 - local.get $12 + local.get $8 i32.const 31 i32.lt_s select local.tee $1 - local.get $6 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $12 + local.get $8 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 + local.tee $6 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $5 + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $4 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $8 + local.get $6 i32.const 31 i32.add - local.tee $6 - local.get $6 - local.get $12 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select - local.tee $6 - local.get $4 + local.tee $5 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $8 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -30754,19 +30757,19 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $7 loop $for-loop|3 local.get $4 local.get $7 - i32.lt_u + i32.gt_u if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -30778,7 +30781,7 @@ local.get $0 local.get $13 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -30787,51 +30790,51 @@ i32.const 1 i32.add local.get $1 - local.get $9 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $11 + local.get $9 i32.add i32.const -1 i32.store local.get $13 local.set $3 end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|3 end end - local.get $11 - local.get $4 + local.get $9 + local.get $7 i32.const 2 i32.shl - local.tee $7 + local.tee $4 i32.add local.get $3 i32.store - local.get $7 + local.get $4 local.get $10 i32.add local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 + local.set $3 + local.get $5 local.set $1 - local.get $4 - local.set $7 + local.get $7 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $7 + local.get $4 if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -30843,29 +30846,29 @@ local.get $0 local.get $1 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $12 - local.get $9 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|4 end end - local.get $9 - call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -31383,17 +31386,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) + (local $12 i64) (local $13 i32) local.get $1 - i32.const 1 - i32.sub - local.set $12 - local.get $1 i32.const 128 i32.le_s if @@ -31409,20 +31408,20 @@ local.set $1 local.get $0 i32.load16_s offset=4 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $6 + local.tee $5 select i32.store16 offset=2 local.get $0 @@ -31431,9 +31430,9 @@ i32.const 2 global.set $~argumentsLength local.get $3 - local.get $7 + local.get $4 local.get $1 - local.get $6 + local.get $5 select local.tee $1 local.get $2 @@ -31441,17 +31440,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $4 local.get $0 local.get $3 local.get $1 - local.get $7 + local.get $4 select i32.store16 local.get $0 local.get $1 local.get $3 - local.get $7 + local.get $4 select i32.store16 offset=4 end @@ -31460,14 +31459,14 @@ local.set $1 local.get $0 i32.load16_s offset=2 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -31477,7 +31476,7 @@ select i32.store16 local.get $0 - local.get $7 + local.get $4 local.get $1 local.get $2 select @@ -31487,7 +31486,9 @@ end local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -31497,137 +31498,140 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $6 i32.const 2 i32.shl - local.tee $6 + local.tee $5 i32.const 1 i32.shl - local.set $4 + local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $7 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $11 - local.get $6 + local.tee $9 + local.get $5 i32.add local.set $10 i32.const 0 - local.set $6 + local.set $5 loop $for-loop|1 local.get $5 local.get $6 - i32.gt_u + i32.lt_u if - local.get $11 - local.get $6 + local.get $9 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end local.get $1 i32.const 1 i32.shl - local.set $1 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $9 + local.set $11 local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $6 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $8 i32.const 31 - local.get $12 + local.get $8 i32.const 31 i32.lt_s select local.tee $1 - local.get $6 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $12 + local.get $8 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 + local.tee $6 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $5 + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $4 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $8 + local.get $6 i32.const 31 i32.add - local.tee $6 - local.get $6 - local.get $12 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select - local.tee $6 - local.get $4 + local.tee $5 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $8 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -31637,19 +31641,19 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $7 loop $for-loop|3 local.get $4 local.get $7 - i32.lt_u + i32.gt_u if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -31661,7 +31665,7 @@ local.get $0 local.get $13 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -31670,51 +31674,51 @@ i32.const 1 i32.add local.get $1 - local.get $9 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $11 + local.get $9 i32.add i32.const -1 i32.store local.get $13 local.set $3 end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|3 end end - local.get $11 - local.get $4 + local.get $9 + local.get $7 i32.const 2 i32.shl - local.tee $7 + local.tee $4 i32.add local.get $3 i32.store - local.get $7 + local.get $4 local.get $10 i32.add local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 + local.set $3 + local.get $5 local.set $1 - local.get $4 - local.set $7 + local.get $7 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $7 + local.get $4 if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -31726,29 +31730,29 @@ local.get $0 local.get $1 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $12 - local.get $9 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|4 end end - local.get $9 - call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -32258,17 +32262,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) + (local $12 i64) (local $13 i32) local.get $1 - i32.const 1 - i32.sub - local.set $12 - local.get $1 i32.const 128 i32.le_s if @@ -32284,20 +32284,20 @@ local.set $1 local.get $0 i32.load16_u offset=4 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $6 + local.tee $5 select i32.store16 offset=2 local.get $0 @@ -32306,9 +32306,9 @@ i32.const 2 global.set $~argumentsLength local.get $3 - local.get $7 + local.get $4 local.get $1 - local.get $6 + local.get $5 select local.tee $1 local.get $2 @@ -32316,17 +32316,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $4 local.get $0 local.get $3 local.get $1 - local.get $7 + local.get $4 select i32.store16 local.get $0 local.get $1 local.get $3 - local.get $7 + local.get $4 select i32.store16 offset=4 end @@ -32335,14 +32335,14 @@ local.set $1 local.get $0 i32.load16_u offset=2 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -32352,7 +32352,7 @@ select i32.store16 local.get $0 - local.get $7 + local.get $4 local.get $1 local.get $2 select @@ -32362,7 +32362,9 @@ end local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -32372,137 +32374,140 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $6 i32.const 2 i32.shl - local.tee $6 + local.tee $5 i32.const 1 i32.shl - local.set $4 + local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $7 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $11 - local.get $6 + local.tee $9 + local.get $5 i32.add local.set $10 i32.const 0 - local.set $6 + local.set $5 loop $for-loop|1 local.get $5 local.get $6 - i32.gt_u + i32.lt_u if - local.get $11 - local.get $6 + local.get $9 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end local.get $1 i32.const 1 i32.shl - local.set $1 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $9 + local.set $11 local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $6 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $8 i32.const 31 - local.get $12 + local.get $8 i32.const 31 i32.lt_s select local.tee $1 - local.get $6 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $12 + local.get $8 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 + local.tee $6 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $5 + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $4 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $8 + local.get $6 i32.const 31 i32.add - local.tee $6 - local.get $6 - local.get $12 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select - local.tee $6 - local.get $4 + local.tee $5 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $8 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -32512,19 +32517,19 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $7 loop $for-loop|3 local.get $4 local.get $7 - i32.lt_u + i32.gt_u if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -32536,7 +32541,7 @@ local.get $0 local.get $13 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -32545,51 +32550,51 @@ i32.const 1 i32.add local.get $1 - local.get $9 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $11 + local.get $9 i32.add i32.const -1 i32.store local.get $13 local.set $3 end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|3 end end - local.get $11 - local.get $4 + local.get $9 + local.get $7 i32.const 2 i32.shl - local.tee $7 + local.tee $4 i32.add local.get $3 i32.store - local.get $7 + local.get $4 local.get $10 i32.add local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 + local.set $3 + local.get $5 local.set $1 - local.get $4 - local.set $7 + local.get $7 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $7 + local.get $4 if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -32601,29 +32606,29 @@ local.get $0 local.get $1 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $12 - local.get $9 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|4 end end - local.get $9 - call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -33143,17 +33148,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) + (local $12 i64) (local $13 i32) local.get $1 - i32.const 1 - i32.sub - local.set $12 - local.get $1 i32.const 128 i32.le_s if @@ -33169,20 +33170,20 @@ local.set $1 local.get $0 i32.load offset=8 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $6 + local.tee $5 select i32.store offset=4 local.get $0 @@ -33191,9 +33192,9 @@ i32.const 2 global.set $~argumentsLength local.get $3 - local.get $7 + local.get $4 local.get $1 - local.get $6 + local.get $5 select local.tee $1 local.get $2 @@ -33201,17 +33202,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $4 local.get $0 local.get $3 local.get $1 - local.get $7 + local.get $4 select i32.store local.get $0 local.get $1 local.get $3 - local.get $7 + local.get $4 select i32.store offset=8 end @@ -33220,14 +33221,14 @@ local.set $1 local.get $0 i32.load offset=4 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -33237,7 +33238,7 @@ select i32.store local.get $0 - local.get $7 + local.get $4 local.get $1 local.get $2 select @@ -33247,7 +33248,9 @@ end local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -33257,137 +33260,140 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $6 i32.const 2 i32.shl - local.tee $6 + local.tee $5 i32.const 1 i32.shl - local.set $4 + local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $7 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $11 - local.get $6 + local.tee $9 + local.get $5 i32.add local.set $10 i32.const 0 - local.set $6 + local.set $5 loop $for-loop|1 local.get $5 local.get $6 - i32.gt_u + i32.lt_u if - local.get $11 - local.get $6 + local.get $9 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end local.get $1 i32.const 2 i32.shl - local.set $1 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $9 + local.set $11 local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $6 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $8 i32.const 31 - local.get $12 + local.get $8 i32.const 31 i32.lt_s select local.tee $1 - local.get $6 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $12 + local.get $8 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 + local.tee $6 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $5 + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $4 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $8 + local.get $6 i32.const 31 i32.add - local.tee $6 - local.get $6 - local.get $12 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select - local.tee $6 - local.get $4 + local.tee $5 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $8 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -33397,19 +33403,19 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $7 loop $for-loop|3 local.get $4 local.get $7 - i32.lt_u + i32.gt_u if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -33421,7 +33427,7 @@ local.get $0 local.get $13 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -33430,51 +33436,51 @@ i32.const 1 i32.add local.get $1 - local.get $9 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $11 + local.get $9 i32.add i32.const -1 i32.store local.get $13 local.set $3 end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|3 end end - local.get $11 - local.get $4 + local.get $9 + local.get $7 i32.const 2 i32.shl - local.tee $7 + local.tee $4 i32.add local.get $3 i32.store - local.get $7 + local.get $4 local.get $10 i32.add local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 + local.set $3 + local.get $5 local.set $1 - local.get $4 - local.set $7 + local.get $7 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $7 + local.get $4 if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -33486,29 +33492,29 @@ local.get $0 local.get $1 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $12 - local.get $9 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|4 end end - local.get $9 - call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -34012,17 +34018,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) + (local $12 i64) (local $13 i32) local.get $1 - i32.const 1 - i32.sub - local.set $12 - local.get $1 i32.const 128 i32.le_s if @@ -34038,20 +34040,20 @@ local.set $1 local.get $0 i32.load offset=8 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $6 + local.tee $5 select i32.store offset=4 local.get $0 @@ -34060,9 +34062,9 @@ i32.const 2 global.set $~argumentsLength local.get $3 - local.get $7 + local.get $4 local.get $1 - local.get $6 + local.get $5 select local.tee $1 local.get $2 @@ -34070,17 +34072,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $4 local.get $0 local.get $3 local.get $1 - local.get $7 + local.get $4 select i32.store local.get $0 local.get $1 local.get $3 - local.get $7 + local.get $4 select i32.store offset=8 end @@ -34089,14 +34091,14 @@ local.set $1 local.get $0 i32.load offset=4 - local.set $7 + local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 - local.get $7 + local.get $4 local.get $1 - local.get $7 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -34106,7 +34108,7 @@ select i32.store local.get $0 - local.get $7 + local.get $4 local.get $1 local.get $2 select @@ -34116,7 +34118,9 @@ end local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -34126,137 +34130,140 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $6 i32.const 2 i32.shl - local.tee $6 + local.tee $5 i32.const 1 i32.shl - local.set $4 + local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $7 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $11 - local.get $6 + local.tee $9 + local.get $5 i32.add local.set $10 i32.const 0 - local.set $6 + local.set $5 loop $for-loop|1 local.get $5 local.get $6 - i32.gt_u + i32.lt_u if - local.get $11 - local.get $6 + local.get $9 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 + local.set $5 br $for-loop|1 end end local.get $1 i32.const 2 i32.shl - local.set $1 + local.set $5 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $5 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $9 + local.set $11 local.get $0 i32.const 0 - local.get $12 + local.get $1 + i32.const 1 + i32.sub + local.tee $8 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add - local.tee $6 + local.tee $5 i32.const 32 i32.lt_s if local.get $0 i32.const 0 - local.get $12 + local.get $8 i32.const 31 - local.get $12 + local.get $8 i32.const 31 i32.lt_s select local.tee $1 - local.get $6 + local.get $5 local.get $2 call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 - local.get $12 + local.get $8 i32.lt_s if local.get $0 local.get $1 i32.const 1 i32.add - local.tee $5 - local.get $12 + local.tee $6 + local.get $8 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $5 + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $4 + local.tee $7 i32.const 32 i32.lt_s if local.get $0 - local.get $5 - local.get $12 - local.get $5 + local.get $6 + local.get $8 + local.get $6 i32.const 31 i32.add - local.tee $6 - local.get $6 - local.get $12 + local.tee $5 + local.get $5 + local.get $8 i32.gt_s select - local.tee $6 - local.get $4 + local.tee $5 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end local.get $3 - local.get $5 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $12 + local.get $8 i32.const 1 i32.add i64.extend_i32_u - local.tee $8 + local.tee $12 i64.div_u local.get $5 local.get $6 @@ -34266,19 +34273,19 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $8 + local.get $12 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $4 + local.set $7 loop $for-loop|3 local.get $4 local.get $7 - i32.lt_u + i32.gt_u if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -34290,7 +34297,7 @@ local.get $0 local.get $13 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl local.tee $3 @@ -34299,51 +34306,51 @@ i32.const 1 i32.add local.get $1 - local.get $9 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns local.get $3 - local.get $11 + local.get $9 i32.add i32.const -1 i32.store local.get $13 local.set $3 end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|3 end end - local.get $11 - local.get $4 + local.get $9 + local.get $7 i32.const 2 i32.shl - local.tee $7 + local.tee $4 i32.add local.get $3 i32.store - local.get $7 + local.get $4 local.get $10 i32.add local.get $1 i32.store - local.get $5 - local.set $3 local.get $6 + local.set $3 + local.get $5 local.set $1 - local.get $4 - local.set $7 + local.get $7 + local.set $4 br $while-continue|2 end end loop $for-loop|4 - local.get $7 + local.get $4 if - local.get $11 - local.get $7 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add @@ -34355,29 +34362,29 @@ local.get $0 local.get $1 local.get $10 - local.get $7 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $12 - local.get $9 + local.get $8 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $7 + local.get $4 i32.const 1 i32.sub - local.set $7 + local.set $4 br $for-loop|4 end end - local.get $9 - call $~lib/rt/tlsf/__free local.get $11 call $~lib/rt/tlsf/__free + local.get $9 + call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -34895,10 +34902,6 @@ (local $14 i32) (local $15 i32) local.get $1 - i32.const 1 - i32.sub - local.set $10 - local.get $1 i32.const 128 i32.le_s if @@ -34992,7 +34995,9 @@ end local.get $0 i32.const 0 - local.get $10 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -35047,21 +35052,24 @@ local.get $1 i32.const 3 i32.shl - local.set $1 + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $4 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add local.set $15 local.get $0 i32.const 0 - local.get $10 + local.get $1 + i32.const 1 + i32.sub + local.tee $10 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 @@ -35772,10 +35780,6 @@ (local $14 i32) (local $15 i32) local.get $1 - i32.const 1 - i32.sub - local.set $10 - local.get $1 i32.const 128 i32.le_s if @@ -35869,7 +35873,9 @@ end local.get $0 i32.const 0 - local.get $10 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -35924,21 +35930,24 @@ local.get $1 i32.const 3 i32.shl - local.set $1 + local.set $4 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $4 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add local.set $15 local.get $0 i32.const 0 - local.get $10 + local.get $1 + i32.const 1 + i32.sub + local.tee $10 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 @@ -36647,12 +36656,8 @@ (local $12 f32) (local $13 i32) (local $14 f32) - (local $15 f32) - (local $16 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $16 + (local $15 i32) + (local $16 f32) local.get $1 i32.const 128 i32.le_s @@ -36666,16 +36671,16 @@ end local.get $0 f32.load offset=4 - local.set $15 + local.set $16 local.get $0 f32.load offset=8 local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $15 + local.get $16 local.get $14 - local.get $15 + local.get $16 local.get $14 local.get $2 i32.load @@ -36692,10 +36697,10 @@ global.set $~argumentsLength local.get $12 local.get $14 - local.get $15 + local.get $16 local.get $1 select - local.tee $15 + local.tee $16 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -36704,12 +36709,12 @@ local.set $1 local.get $0 local.get $12 - local.get $15 + local.get $16 local.get $1 select f32.store local.get $0 - local.get $15 + local.get $16 local.get $12 local.get $1 select @@ -36717,16 +36722,16 @@ end local.get $0 f32.load - local.set $15 + local.set $16 local.get $0 f32.load offset=4 local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $15 + local.get $16 local.get $14 - local.get $15 + local.get $16 local.get $14 local.get $2 i32.load @@ -36738,7 +36743,7 @@ f32.store local.get $0 local.get $14 - local.get $15 + local.get $16 local.get $1 select f32.store offset=4 @@ -36747,7 +36752,9 @@ end local.get $0 i32.const 0 - local.get $16 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort @@ -36802,21 +36809,24 @@ local.get $1 i32.const 2 i32.shl - local.set $1 + local.set $7 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - local.get $1 + local.get $7 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add local.set $10 local.get $0 i32.const 0 - local.get $16 + local.get $1 + i32.const 1 + i32.sub + local.tee $15 local.get $2 call $~lib/util/sort/extendRunRight local.tee $1 @@ -36828,9 +36838,9 @@ if local.get $0 i32.const 0 - local.get $16 + local.get $15 i32.const 31 - local.get $16 + local.get $15 i32.const 31 i32.lt_s select @@ -36841,7 +36851,7 @@ end loop $while-continue|2 local.get $1 - local.get $16 + local.get $15 i32.lt_s if local.get $0 @@ -36849,7 +36859,7 @@ i32.const 1 i32.add local.tee $5 - local.get $16 + local.get $15 local.get $2 call $~lib/util/sort/extendRunRight local.tee $7 @@ -36863,13 +36873,13 @@ if local.get $0 local.get $5 - local.get $16 + local.get $15 local.get $5 i32.const 31 i32.add local.tee $7 local.get $7 - local.get $16 + local.get $15 i32.gt_s select local.tee $7 @@ -36883,7 +36893,7 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $16 + local.get $15 i32.const 1 i32.add i64.extend_i32_u @@ -36993,7 +37003,7 @@ i32.load i32.const 1 i32.add - local.get $16 + local.get $15 local.get $10 local.get $2 call $~lib/util/sort/mergeRuns diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 14d09e580f..c779b22d1e 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -4031,10 +4031,10 @@ ) (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 f64) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) @@ -4050,14 +4050,7 @@ (local $20 i32) (local $21 i32) (local $22 i32) - (local $23 i32) local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -4070,21 +4063,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -4092,12 +4085,12 @@ end local.get $0 f64.load offset=8 - local.set $6 + local.set $4 local.get $0 f64.load offset=16 - local.set $7 - local.get $6 - local.get $7 + local.set $5 + local.get $4 + local.get $5 i32.const 2 global.set $~argumentsLength local.get $2 @@ -4105,23 +4098,23 @@ call_indirect $0 (type $f64_f64_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select f64.store offset=8 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select - local.set $7 + local.set $5 local.get $0 f64.load - local.set $6 - local.get $6 - local.get $7 + local.set $4 + local.get $4 + local.get $5 i32.const 2 global.set $~argumentsLength local.get $2 @@ -4129,28 +4122,28 @@ call_indirect $0 (type $f64_f64_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select f64.store local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select f64.store offset=16 end local.get $0 f64.load - local.set $7 + local.set $5 local.get $0 f64.load offset=8 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -4158,17 +4151,17 @@ call_indirect $0 (type $f64_f64_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select f64.store local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select f64.store offset=8 end @@ -4177,271 +4170,277 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $5 + local.get $1 + local.set $3 i32.const 31 - local.get $5 + local.get $3 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $5 + local.set $3 loop $for-loop|1 - local.get $5 - local.get $8 + local.get $3 + local.get $6 i32.lt_u - local.set $12 - local.get $12 + local.set $10 + local.get $10 if - local.get $10 - local.get $5 + local.get $8 + local.get $3 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 + local.set $3 br $for-loop|1 end end - i32.const 0 - local.set $13 - local.get $4 + local.get $1 i32.const 3 i32.shl call $~lib/rt/tlsf/__alloc - local.set $14 - i32.const 0 - local.set $15 + local.set $11 + local.get $1 + i32.const 1 + i32.sub + local.set $12 local.get $0 i32.const 0 - local.get $3 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $14 + local.get $14 i32.const 32 i32.lt_s if - local.get $3 - local.tee $12 + local.get $12 + local.tee $10 i32.const 32 i32.const 1 i32.sub - local.tee $5 - local.get $12 - local.get $5 + local.tee $3 + local.get $10 + local.get $3 i32.lt_s select - local.set $16 + local.set $13 local.get $0 - local.get $15 - local.get $16 - local.get $17 + i32.const 0 + local.get $13 + local.get $14 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $15 + i32.const 0 + local.set $16 loop $while-continue|2 - local.get $16 - local.get $3 - i32.lt_s - local.set $12 + local.get $13 local.get $12 + i32.lt_s + local.set $10 + local.get $10 if - local.get $16 + local.get $13 i32.const 1 i32.add - local.set $5 + local.set $3 local.get $0 - local.get $5 local.get $3 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.set $18 - local.get $18 - local.get $5 + local.set $17 + local.get $17 + local.get $3 i32.sub i32.const 1 i32.add - local.set $19 - local.get $19 + local.set $18 + local.get $18 i32.const 32 i32.lt_s if + local.get $12 + local.tee $19 local.get $3 - local.tee $20 - local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $21 + local.tee $20 + local.get $19 local.get $20 - local.get $21 i32.lt_s select - local.set $18 + local.set $17 local.get $0 - local.get $5 + local.get $3 + local.get $17 local.get $18 - local.get $19 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 + local.get $12 + local.get $16 local.get $3 - local.get $15 - local.get $5 - local.get $18 + local.get $17 call $~lib/util/sort/nodePower + local.set $19 + local.get $15 local.set $20 - local.get $13 - local.set $21 loop $for-loop|3 - local.get $21 local.get $20 + local.get $19 i32.gt_u - local.set $22 - local.get $22 + local.set $21 + local.get $21 if - local.get $10 - local.get $21 + local.get $8 + local.get $20 i32.const 2 i32.shl i32.add i32.load - local.set $23 - local.get $23 + local.set $22 + local.get $22 i32.const -1 i32.ne if local.get $0 - local.get $23 - local.get $11 - local.get $21 + local.get $22 + local.get $9 + local.get $20 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $16 - local.get $14 + local.get $13 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns - local.get $23 - local.set $15 - local.get $10 - local.get $21 + local.get $22 + local.set $16 + local.get $8 + local.get $20 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $21 + local.get $20 i32.const 1 i32.sub - local.set $21 + local.set $20 br $for-loop|3 end end - local.get $10 - local.get $20 + local.get $8 + local.get $19 i32.const 2 i32.shl i32.add - local.get $15 + local.get $16 i32.store - local.get $11 - local.get $20 + local.get $9 + local.get $19 i32.const 2 i32.shl i32.add - local.get $16 + local.get $13 i32.store - local.get $5 - local.set $15 - local.get $18 + local.get $3 local.set $16 - local.get $20 + local.get $17 local.set $13 + local.get $19 + local.set $15 br $while-continue|2 end end - local.get $13 - local.set $12 + local.get $15 + local.set $10 loop $for-loop|4 - local.get $12 + local.get $10 i32.const 0 i32.ne - local.set $21 - local.get $21 + local.set $20 + local.get $20 if + local.get $8 local.get $10 - local.get $12 i32.const 2 i32.shl i32.add i32.load - local.set $22 - local.get $22 + local.set $21 + local.get $21 i32.const -1 i32.ne if local.get $0 - local.get $22 - local.get $11 - local.get $12 + local.get $21 + local.get $9 + local.get $10 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $14 + local.get $12 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $12 + local.get $10 i32.const 1 i32.sub - local.set $12 + local.set $10 br $for-loop|4 end end - local.get $14 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $8 call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) @@ -33860,14 +33859,7 @@ (local $18 i32) (local $19 i32) (local $20 i32) - (local $21 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $3 local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -33880,21 +33872,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -33902,12 +33894,12 @@ end local.get $0 i32.load8_s offset=1 - local.set $5 + local.set $3 local.get $0 i32.load8_s offset=2 - local.set $6 - local.get $5 - local.get $6 + local.set $4 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -33915,23 +33907,23 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store8 offset=1 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select - local.set $6 + local.set $4 local.get $0 i32.load8_s - local.set $5 - local.get $5 - local.get $6 + local.set $3 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -33939,28 +33931,28 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store8 local.get $0 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select i32.store8 offset=2 end local.get $0 i32.load8_s - local.set $7 + local.set $5 local.get $0 i32.load8_s offset=1 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -33968,17 +33960,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i32.store8 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i32.store8 offset=1 end @@ -33987,272 +33979,278 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $7 + local.get $1 + local.set $5 i32.const 31 - local.get $7 + local.get $5 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $7 + local.set $5 loop $for-loop|1 - local.get $7 - local.get $8 - i32.lt_u - local.set $5 local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 if - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|1 end end - i32.const 0 - local.set $12 - local.get $4 + local.get $1 i32.const 0 i32.shl call $~lib/rt/tlsf/__alloc - local.set $13 - i32.const 0 - local.set $14 + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 local.get $0 i32.const 0 - local.get $3 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $15 - local.get $15 + local.set $12 + local.get $12 i32.const 1 i32.add - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 32 i32.lt_s if - local.get $3 - local.tee $6 + local.get $11 + local.tee $4 i32.const 32 i32.const 1 i32.sub - local.tee $7 - local.get $6 - local.get $7 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s select - local.set $15 + local.set $12 local.get $0 - local.get $14 - local.get $15 - local.get $16 + i32.const 0 + local.get $12 + local.get $13 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 loop $while-continue|2 - local.get $15 - local.get $3 + local.get $12 + local.get $11 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if - local.get $15 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $5 local.get $0 - local.get $7 - local.get $3 + local.get $5 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $5 + local.set $3 + local.get $3 local.get $5 - local.get $7 i32.sub i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $16 + local.get $16 i32.const 32 i32.lt_s if - local.get $3 - local.tee $18 - local.get $7 + local.get $11 + local.tee $17 + local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $19 + local.tee $18 + local.get $17 local.get $18 - local.get $19 i32.lt_s select - local.set $5 + local.set $3 local.get $0 - local.get $7 local.get $5 - local.get $17 + local.get $3 + local.get $16 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 - local.get $3 - local.get $14 - local.get $7 + local.get $11 + local.get $15 local.get $5 + local.get $3 call $~lib/util/sort/nodePower + local.set $17 + local.get $14 local.set $18 - local.get $12 - local.set $19 loop $for-loop|3 - local.get $19 local.get $18 + local.get $17 i32.gt_u - local.set $20 - local.get $20 + local.set $19 + local.get $19 if - local.get $10 - local.get $19 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.load - local.set $21 - local.get $21 + local.set $20 + local.get $20 i32.const -1 i32.ne if local.get $0 - local.get $21 - local.get $11 - local.get $19 + local.get $20 + local.get $9 + local.get $18 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $15 - local.get $13 + local.get $12 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns - local.get $21 - local.set $14 - local.get $10 - local.get $19 + local.get $20 + local.set $15 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $19 + local.get $18 i32.const 1 i32.sub - local.set $19 + local.set $18 br $for-loop|3 end end - local.get $10 - local.get $18 + local.get $8 + local.get $17 i32.const 2 i32.shl i32.add - local.get $14 + local.get $15 i32.store - local.get $11 - local.get $18 + local.get $9 + local.get $17 i32.const 2 i32.shl i32.add - local.get $15 + local.get $12 i32.store - local.get $7 - local.set $14 local.get $5 local.set $15 - local.get $18 + local.get $3 local.set $12 + local.get $17 + local.set $14 br $while-continue|2 end end - local.get $12 - local.set $6 + local.get $14 + local.set $4 loop $for-loop|4 - local.get $6 + local.get $4 i32.const 0 i32.ne - local.set $19 - local.get $19 + local.set $18 + local.get $18 if - local.get $10 - local.get $6 + local.get $8 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $20 - local.get $20 + local.set $19 + local.get $19 i32.const -1 i32.ne if local.get $0 - local.get $20 - local.get $11 - local.get $6 + local.get $19 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $13 + local.get $11 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end - local.get $13 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -34861,14 +34859,7 @@ (local $18 i32) (local $19 i32) (local $20 i32) - (local $21 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $3 local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -34881,21 +34872,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -34903,12 +34894,12 @@ end local.get $0 i32.load8_u offset=1 - local.set $5 + local.set $3 local.get $0 i32.load8_u offset=2 - local.set $6 - local.get $5 - local.get $6 + local.set $4 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -34916,23 +34907,23 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store8 offset=1 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select - local.set $6 + local.set $4 local.get $0 i32.load8_u - local.set $5 - local.get $5 - local.get $6 + local.set $3 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -34940,28 +34931,28 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store8 local.get $0 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select i32.store8 offset=2 end local.get $0 i32.load8_u - local.set $7 + local.set $5 local.get $0 i32.load8_u offset=1 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -34969,17 +34960,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i32.store8 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i32.store8 offset=1 end @@ -34988,272 +34979,278 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $7 + local.get $1 + local.set $5 i32.const 31 - local.get $7 + local.get $5 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $7 + local.set $5 loop $for-loop|1 - local.get $7 - local.get $8 - i32.lt_u - local.set $5 local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 if - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|1 end end - i32.const 0 - local.set $12 - local.get $4 + local.get $1 i32.const 0 i32.shl call $~lib/rt/tlsf/__alloc - local.set $13 - i32.const 0 - local.set $14 + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 local.get $0 i32.const 0 - local.get $3 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $15 - local.get $15 + local.set $12 + local.get $12 i32.const 1 i32.add - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 32 i32.lt_s if - local.get $3 - local.tee $6 + local.get $11 + local.tee $4 i32.const 32 i32.const 1 i32.sub - local.tee $7 - local.get $6 - local.get $7 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s select - local.set $15 + local.set $12 local.get $0 - local.get $14 - local.get $15 - local.get $16 + i32.const 0 + local.get $12 + local.get $13 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 loop $while-continue|2 - local.get $15 - local.get $3 + local.get $12 + local.get $11 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if - local.get $15 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $5 local.get $0 - local.get $7 - local.get $3 + local.get $5 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $5 + local.set $3 + local.get $3 local.get $5 - local.get $7 i32.sub i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $16 + local.get $16 i32.const 32 i32.lt_s if - local.get $3 - local.tee $18 - local.get $7 + local.get $11 + local.tee $17 + local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $19 + local.tee $18 + local.get $17 local.get $18 - local.get $19 i32.lt_s select - local.set $5 + local.set $3 local.get $0 - local.get $7 local.get $5 - local.get $17 + local.get $3 + local.get $16 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 - local.get $3 - local.get $14 - local.get $7 + local.get $11 + local.get $15 local.get $5 + local.get $3 call $~lib/util/sort/nodePower + local.set $17 + local.get $14 local.set $18 - local.get $12 - local.set $19 loop $for-loop|3 - local.get $19 local.get $18 + local.get $17 i32.gt_u - local.set $20 - local.get $20 + local.set $19 + local.get $19 if - local.get $10 - local.get $19 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.load - local.set $21 - local.get $21 + local.set $20 + local.get $20 i32.const -1 i32.ne if local.get $0 - local.get $21 - local.get $11 - local.get $19 + local.get $20 + local.get $9 + local.get $18 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $15 - local.get $13 + local.get $12 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns - local.get $21 - local.set $14 - local.get $10 - local.get $19 + local.get $20 + local.set $15 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $19 + local.get $18 i32.const 1 i32.sub - local.set $19 + local.set $18 br $for-loop|3 end end - local.get $10 - local.get $18 + local.get $8 + local.get $17 i32.const 2 i32.shl i32.add - local.get $14 + local.get $15 i32.store - local.get $11 - local.get $18 + local.get $9 + local.get $17 i32.const 2 i32.shl i32.add - local.get $15 + local.get $12 i32.store - local.get $7 - local.set $14 local.get $5 local.set $15 - local.get $18 + local.get $3 local.set $12 + local.get $17 + local.set $14 br $while-continue|2 end end - local.get $12 - local.set $6 + local.get $14 + local.set $4 loop $for-loop|4 - local.get $6 + local.get $4 i32.const 0 i32.ne - local.set $19 - local.get $19 + local.set $18 + local.get $18 if - local.get $10 - local.get $6 + local.get $8 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $20 - local.get $20 + local.set $19 + local.get $19 i32.const -1 i32.ne if local.get $0 - local.get $20 - local.get $11 - local.get $6 + local.get $19 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $13 + local.get $11 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end - local.get $13 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -35972,14 +35969,7 @@ (local $18 i32) (local $19 i32) (local $20 i32) - (local $21 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $3 local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -35992,21 +35982,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -36014,12 +36004,12 @@ end local.get $0 i32.load16_s offset=2 - local.set $5 + local.set $3 local.get $0 i32.load16_s offset=4 - local.set $6 - local.get $5 - local.get $6 + local.set $4 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -36027,23 +36017,23 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store16 offset=2 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select - local.set $6 + local.set $4 local.get $0 i32.load16_s - local.set $5 - local.get $5 - local.get $6 + local.set $3 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -36051,28 +36041,28 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store16 local.get $0 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select i32.store16 offset=4 end local.get $0 i32.load16_s - local.set $7 + local.set $5 local.get $0 i32.load16_s offset=2 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -36080,17 +36070,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i32.store16 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i32.store16 offset=2 end @@ -36099,272 +36089,278 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $7 + local.get $1 + local.set $5 i32.const 31 - local.get $7 + local.get $5 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $7 + local.set $5 loop $for-loop|1 - local.get $7 - local.get $8 - i32.lt_u - local.set $5 local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 if - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|1 end end - i32.const 0 - local.set $12 - local.get $4 + local.get $1 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $13 - i32.const 0 - local.set $14 + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 local.get $0 i32.const 0 - local.get $3 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $15 - local.get $15 + local.set $12 + local.get $12 i32.const 1 i32.add - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 32 i32.lt_s if - local.get $3 - local.tee $6 + local.get $11 + local.tee $4 i32.const 32 i32.const 1 i32.sub - local.tee $7 - local.get $6 - local.get $7 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s select - local.set $15 + local.set $12 local.get $0 - local.get $14 - local.get $15 - local.get $16 + i32.const 0 + local.get $12 + local.get $13 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 loop $while-continue|2 - local.get $15 - local.get $3 + local.get $12 + local.get $11 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if - local.get $15 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $5 local.get $0 - local.get $7 - local.get $3 + local.get $5 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $5 + local.set $3 + local.get $3 local.get $5 - local.get $7 i32.sub i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $16 + local.get $16 i32.const 32 i32.lt_s if - local.get $3 - local.tee $18 - local.get $7 + local.get $11 + local.tee $17 + local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $19 + local.tee $18 + local.get $17 local.get $18 - local.get $19 i32.lt_s select - local.set $5 + local.set $3 local.get $0 - local.get $7 local.get $5 - local.get $17 + local.get $3 + local.get $16 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 - local.get $3 - local.get $14 - local.get $7 + local.get $11 + local.get $15 local.get $5 + local.get $3 call $~lib/util/sort/nodePower + local.set $17 + local.get $14 local.set $18 - local.get $12 - local.set $19 loop $for-loop|3 - local.get $19 local.get $18 + local.get $17 i32.gt_u - local.set $20 - local.get $20 + local.set $19 + local.get $19 if - local.get $10 - local.get $19 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.load - local.set $21 - local.get $21 + local.set $20 + local.get $20 i32.const -1 i32.ne if local.get $0 - local.get $21 - local.get $11 - local.get $19 + local.get $20 + local.get $9 + local.get $18 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $15 - local.get $13 + local.get $12 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns - local.get $21 - local.set $14 - local.get $10 - local.get $19 + local.get $20 + local.set $15 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $19 + local.get $18 i32.const 1 i32.sub - local.set $19 + local.set $18 br $for-loop|3 end end - local.get $10 - local.get $18 + local.get $8 + local.get $17 i32.const 2 i32.shl i32.add - local.get $14 + local.get $15 i32.store - local.get $11 - local.get $18 + local.get $9 + local.get $17 i32.const 2 i32.shl i32.add - local.get $15 + local.get $12 i32.store - local.get $7 - local.set $14 local.get $5 local.set $15 - local.get $18 + local.get $3 local.set $12 + local.get $17 + local.set $14 br $while-continue|2 end end - local.get $12 - local.set $6 + local.get $14 + local.set $4 loop $for-loop|4 - local.get $6 + local.get $4 i32.const 0 i32.ne - local.set $19 - local.get $19 + local.set $18 + local.get $18 if - local.get $10 - local.get $6 + local.get $8 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $20 - local.get $20 + local.set $19 + local.get $19 i32.const -1 i32.ne if local.get $0 - local.get $20 - local.get $11 - local.get $6 + local.get $19 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $13 + local.get $11 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end - local.get $13 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -36973,14 +36969,7 @@ (local $18 i32) (local $19 i32) (local $20 i32) - (local $21 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $3 local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -36993,21 +36982,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -37015,12 +37004,12 @@ end local.get $0 i32.load16_u offset=2 - local.set $5 + local.set $3 local.get $0 i32.load16_u offset=4 - local.set $6 - local.get $5 - local.get $6 + local.set $4 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -37028,23 +37017,23 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store16 offset=2 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select - local.set $6 + local.set $4 local.get $0 i32.load16_u - local.set $5 - local.get $5 - local.get $6 + local.set $3 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -37052,28 +37041,28 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store16 local.get $0 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select i32.store16 offset=4 end local.get $0 i32.load16_u - local.set $7 + local.set $5 local.get $0 i32.load16_u offset=2 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -37081,17 +37070,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i32.store16 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i32.store16 offset=2 end @@ -37100,272 +37089,278 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $7 + local.get $1 + local.set $5 i32.const 31 - local.get $7 + local.get $5 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $7 + local.set $5 loop $for-loop|1 - local.get $7 - local.get $8 - i32.lt_u - local.set $5 local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 if - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|1 end end - i32.const 0 - local.set $12 - local.get $4 + local.get $1 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $13 - i32.const 0 - local.set $14 + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 local.get $0 i32.const 0 - local.get $3 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $15 - local.get $15 + local.set $12 + local.get $12 i32.const 1 i32.add - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 32 i32.lt_s if - local.get $3 - local.tee $6 + local.get $11 + local.tee $4 i32.const 32 i32.const 1 i32.sub - local.tee $7 - local.get $6 - local.get $7 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s select - local.set $15 + local.set $12 local.get $0 - local.get $14 - local.get $15 - local.get $16 + i32.const 0 + local.get $12 + local.get $13 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 loop $while-continue|2 - local.get $15 - local.get $3 + local.get $12 + local.get $11 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if - local.get $15 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $5 local.get $0 - local.get $7 - local.get $3 + local.get $5 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $5 + local.set $3 + local.get $3 local.get $5 - local.get $7 i32.sub i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $16 + local.get $16 i32.const 32 i32.lt_s if - local.get $3 - local.tee $18 - local.get $7 + local.get $11 + local.tee $17 + local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $19 + local.tee $18 + local.get $17 local.get $18 - local.get $19 i32.lt_s select - local.set $5 + local.set $3 local.get $0 - local.get $7 local.get $5 - local.get $17 + local.get $3 + local.get $16 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 - local.get $3 - local.get $14 - local.get $7 + local.get $11 + local.get $15 local.get $5 + local.get $3 call $~lib/util/sort/nodePower + local.set $17 + local.get $14 local.set $18 - local.get $12 - local.set $19 loop $for-loop|3 - local.get $19 local.get $18 + local.get $17 i32.gt_u - local.set $20 - local.get $20 + local.set $19 + local.get $19 if - local.get $10 - local.get $19 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.load - local.set $21 - local.get $21 + local.set $20 + local.get $20 i32.const -1 i32.ne if local.get $0 - local.get $21 - local.get $11 - local.get $19 + local.get $20 + local.get $9 + local.get $18 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $15 - local.get $13 + local.get $12 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns - local.get $21 - local.set $14 - local.get $10 - local.get $19 + local.get $20 + local.set $15 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $19 + local.get $18 i32.const 1 i32.sub - local.set $19 + local.set $18 br $for-loop|3 end end - local.get $10 - local.get $18 + local.get $8 + local.get $17 i32.const 2 i32.shl i32.add - local.get $14 + local.get $15 i32.store - local.get $11 - local.get $18 + local.get $9 + local.get $17 i32.const 2 i32.shl i32.add - local.get $15 + local.get $12 i32.store - local.get $7 - local.set $14 local.get $5 local.set $15 - local.get $18 + local.get $3 local.set $12 + local.get $17 + local.set $14 br $while-continue|2 end end - local.get $12 - local.set $6 + local.get $14 + local.set $4 loop $for-loop|4 - local.get $6 + local.get $4 i32.const 0 i32.ne - local.set $19 - local.get $19 + local.set $18 + local.get $18 if - local.get $10 - local.get $6 + local.get $8 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $20 - local.get $20 + local.set $19 + local.get $19 i32.const -1 i32.ne if local.get $0 - local.get $20 - local.get $11 - local.get $6 + local.get $19 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $13 + local.get $11 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end - local.get $13 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -37988,14 +37983,7 @@ (local $18 i32) (local $19 i32) (local $20 i32) - (local $21 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $3 local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -38008,21 +37996,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -38030,12 +38018,12 @@ end local.get $0 i32.load offset=4 - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.set $6 - local.get $5 - local.get $6 + local.set $4 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -38043,23 +38031,23 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store offset=4 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select - local.set $6 + local.set $4 local.get $0 i32.load - local.set $5 - local.get $5 - local.get $6 + local.set $3 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -38067,28 +38055,28 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store local.get $0 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select i32.store offset=8 end local.get $0 i32.load - local.set $7 + local.set $5 local.get $0 i32.load offset=4 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -38096,17 +38084,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i32.store local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i32.store offset=4 end @@ -38115,272 +38103,278 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $7 + local.get $1 + local.set $5 i32.const 31 - local.get $7 + local.get $5 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $7 + local.set $5 loop $for-loop|1 - local.get $7 - local.get $8 - i32.lt_u - local.set $5 local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 if - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|1 end end - i32.const 0 - local.set $12 - local.get $4 + local.get $1 i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc - local.set $13 - i32.const 0 - local.set $14 + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 local.get $0 i32.const 0 - local.get $3 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $15 - local.get $15 + local.set $12 + local.get $12 i32.const 1 i32.add - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 32 i32.lt_s if - local.get $3 - local.tee $6 + local.get $11 + local.tee $4 i32.const 32 i32.const 1 i32.sub - local.tee $7 - local.get $6 - local.get $7 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s select - local.set $15 + local.set $12 local.get $0 - local.get $14 - local.get $15 - local.get $16 + i32.const 0 + local.get $12 + local.get $13 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 loop $while-continue|2 - local.get $15 - local.get $3 + local.get $12 + local.get $11 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if - local.get $15 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $5 local.get $0 - local.get $7 - local.get $3 + local.get $5 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $5 + local.set $3 + local.get $3 local.get $5 - local.get $7 i32.sub i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $16 + local.get $16 i32.const 32 i32.lt_s if - local.get $3 - local.tee $18 - local.get $7 + local.get $11 + local.tee $17 + local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $19 + local.tee $18 + local.get $17 local.get $18 - local.get $19 i32.lt_s select - local.set $5 + local.set $3 local.get $0 - local.get $7 local.get $5 - local.get $17 + local.get $3 + local.get $16 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 - local.get $3 - local.get $14 - local.get $7 + local.get $11 + local.get $15 local.get $5 + local.get $3 call $~lib/util/sort/nodePower + local.set $17 + local.get $14 local.set $18 - local.get $12 - local.set $19 loop $for-loop|3 - local.get $19 local.get $18 + local.get $17 i32.gt_u - local.set $20 - local.get $20 + local.set $19 + local.get $19 if - local.get $10 - local.get $19 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.load - local.set $21 - local.get $21 + local.set $20 + local.get $20 i32.const -1 i32.ne if local.get $0 - local.get $21 - local.get $11 - local.get $19 + local.get $20 + local.get $9 + local.get $18 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $15 - local.get $13 + local.get $12 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns - local.get $21 - local.set $14 - local.get $10 - local.get $19 + local.get $20 + local.set $15 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $19 + local.get $18 i32.const 1 i32.sub - local.set $19 + local.set $18 br $for-loop|3 end end - local.get $10 - local.get $18 + local.get $8 + local.get $17 i32.const 2 i32.shl i32.add - local.get $14 + local.get $15 i32.store - local.get $11 - local.get $18 + local.get $9 + local.get $17 i32.const 2 i32.shl i32.add - local.get $15 + local.get $12 i32.store - local.get $7 - local.set $14 local.get $5 local.set $15 - local.get $18 + local.get $3 local.set $12 + local.get $17 + local.set $14 br $while-continue|2 end end - local.get $12 - local.set $6 + local.get $14 + local.set $4 loop $for-loop|4 - local.get $6 + local.get $4 i32.const 0 i32.ne - local.set $19 - local.get $19 + local.set $18 + local.get $18 if - local.get $10 - local.get $6 + local.get $8 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $20 - local.get $20 + local.set $19 + local.get $19 i32.const -1 i32.ne if local.get $0 - local.get $20 - local.get $11 - local.get $6 + local.get $19 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $13 + local.get $11 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end - local.get $13 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -38983,14 +38977,7 @@ (local $18 i32) (local $19 i32) (local $20 i32) - (local $21 i32) - local.get $1 - i32.const 1 - i32.sub - local.set $3 local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -39003,21 +38990,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -39025,12 +39012,12 @@ end local.get $0 i32.load offset=4 - local.set $5 + local.set $3 local.get $0 i32.load offset=8 - local.set $6 - local.get $5 - local.get $6 + local.set $4 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -39038,23 +39025,23 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store offset=4 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select - local.set $6 + local.set $4 local.get $0 i32.load - local.set $5 - local.get $5 - local.get $6 + local.set $3 + local.get $3 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -39062,28 +39049,28 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $7 + local.set $5 local.get $0 + local.get $3 + local.get $4 local.get $5 - local.get $6 - local.get $7 select i32.store local.get $0 - local.get $6 + local.get $4 + local.get $3 local.get $5 - local.get $7 select i32.store offset=8 end local.get $0 i32.load - local.set $7 + local.set $5 local.get $0 i32.load offset=4 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -39091,17 +39078,17 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i32.store local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i32.store offset=4 end @@ -39110,272 +39097,278 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $7 + local.get $1 + local.set $5 i32.const 31 - local.get $7 + local.get $5 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $7 + local.set $5 loop $for-loop|1 - local.get $7 - local.get $8 - i32.lt_u - local.set $5 local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 if - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $5 i32.const 1 i32.add - local.set $7 + local.set $5 br $for-loop|1 end end - i32.const 0 - local.set $12 - local.get $4 + local.get $1 i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc - local.set $13 - i32.const 0 - local.set $14 + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 local.get $0 i32.const 0 - local.get $3 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $15 - local.get $15 + local.set $12 + local.get $12 i32.const 1 i32.add - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 32 i32.lt_s if - local.get $3 - local.tee $6 + local.get $11 + local.tee $4 i32.const 32 i32.const 1 i32.sub - local.tee $7 - local.get $6 - local.get $7 + local.tee $5 + local.get $4 + local.get $5 i32.lt_s select - local.set $15 + local.set $12 local.get $0 - local.get $14 - local.get $15 - local.get $16 + i32.const 0 + local.get $12 + local.get $13 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 loop $while-continue|2 - local.get $15 - local.get $3 + local.get $12 + local.get $11 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if - local.get $15 + local.get $12 i32.const 1 i32.add - local.set $7 + local.set $5 local.get $0 - local.get $7 - local.get $3 + local.get $5 + local.get $11 local.get $2 call $~lib/util/sort/extendRunRight - local.set $5 + local.set $3 + local.get $3 local.get $5 - local.get $7 i32.sub i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $16 + local.get $16 i32.const 32 i32.lt_s if - local.get $3 - local.tee $18 - local.get $7 + local.get $11 + local.tee $17 + local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $19 + local.tee $18 + local.get $17 local.get $18 - local.get $19 i32.lt_s select - local.set $5 + local.set $3 local.get $0 - local.get $7 local.get $5 - local.get $17 + local.get $3 + local.get $16 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 - local.get $3 - local.get $14 - local.get $7 + local.get $11 + local.get $15 local.get $5 + local.get $3 call $~lib/util/sort/nodePower + local.set $17 + local.get $14 local.set $18 - local.get $12 - local.set $19 loop $for-loop|3 - local.get $19 local.get $18 + local.get $17 i32.gt_u - local.set $20 - local.get $20 + local.set $19 + local.get $19 if - local.get $10 - local.get $19 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.load - local.set $21 - local.get $21 + local.set $20 + local.get $20 i32.const -1 i32.ne if local.get $0 - local.get $21 - local.get $11 - local.get $19 + local.get $20 + local.get $9 + local.get $18 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $15 - local.get $13 + local.get $12 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns - local.get $21 - local.set $14 - local.get $10 - local.get $19 + local.get $20 + local.set $15 + local.get $8 + local.get $18 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $19 + local.get $18 i32.const 1 i32.sub - local.set $19 + local.set $18 br $for-loop|3 end end - local.get $10 - local.get $18 + local.get $8 + local.get $17 i32.const 2 i32.shl i32.add - local.get $14 + local.get $15 i32.store - local.get $11 - local.get $18 + local.get $9 + local.get $17 i32.const 2 i32.shl i32.add - local.get $15 + local.get $12 i32.store - local.get $7 - local.set $14 local.get $5 local.set $15 - local.get $18 + local.get $3 local.set $12 + local.get $17 + local.set $14 br $while-continue|2 end end - local.get $12 - local.set $6 + local.get $14 + local.set $4 loop $for-loop|4 - local.get $6 + local.get $4 i32.const 0 i32.ne - local.set $19 - local.get $19 + local.set $18 + local.get $18 if - local.get $10 - local.get $6 + local.get $8 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $20 - local.get $20 + local.set $19 + local.get $19 i32.const -1 i32.ne if local.get $0 - local.get $20 - local.get $11 - local.get $6 + local.get $19 + local.get $9 + local.get $4 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $13 + local.get $11 + local.get $10 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $6 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|4 end end - local.get $13 - call $~lib/rt/tlsf/__free local.get $10 call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -39965,10 +39958,10 @@ ) (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) + (local $4 i64) + (local $5 i64) + (local $6 i32) + (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) @@ -39984,14 +39977,7 @@ (local $20 i32) (local $21 i32) (local $22 i32) - (local $23 i32) local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -40004,21 +39990,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -40026,12 +40012,12 @@ end local.get $0 i64.load offset=8 - local.set $6 + local.set $4 local.get $0 i64.load offset=16 - local.set $7 - local.get $6 - local.get $7 + local.set $5 + local.get $4 + local.get $5 i32.const 2 global.set $~argumentsLength local.get $2 @@ -40039,23 +40025,23 @@ call_indirect $0 (type $i64_i64_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i64.store offset=8 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select - local.set $7 + local.set $5 local.get $0 i64.load - local.set $6 - local.get $6 - local.get $7 + local.set $4 + local.get $4 + local.get $5 i32.const 2 global.set $~argumentsLength local.get $2 @@ -40063,28 +40049,28 @@ call_indirect $0 (type $i64_i64_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i64.store local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i64.store offset=16 end local.get $0 i64.load - local.set $7 + local.set $5 local.get $0 i64.load offset=8 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -40092,17 +40078,17 @@ call_indirect $0 (type $i64_i64_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i64.store local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i64.store offset=8 end @@ -40111,271 +40097,277 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $5 + local.get $1 + local.set $3 i32.const 31 - local.get $5 + local.get $3 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $5 + local.set $3 loop $for-loop|1 - local.get $5 - local.get $8 + local.get $3 + local.get $6 i32.lt_u - local.set $12 - local.get $12 + local.set $10 + local.get $10 if - local.get $10 - local.get $5 + local.get $8 + local.get $3 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 + local.set $3 br $for-loop|1 end end - i32.const 0 - local.set $13 - local.get $4 + local.get $1 i32.const 3 i32.shl call $~lib/rt/tlsf/__alloc - local.set $14 - i32.const 0 - local.set $15 + local.set $11 + local.get $1 + i32.const 1 + i32.sub + local.set $12 local.get $0 i32.const 0 - local.get $3 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $14 + local.get $14 i32.const 32 i32.lt_s if - local.get $3 - local.tee $12 + local.get $12 + local.tee $10 i32.const 32 i32.const 1 i32.sub - local.tee $5 - local.get $12 - local.get $5 + local.tee $3 + local.get $10 + local.get $3 i32.lt_s select - local.set $16 + local.set $13 local.get $0 - local.get $15 - local.get $16 - local.get $17 + i32.const 0 + local.get $13 + local.get $14 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $15 + i32.const 0 + local.set $16 loop $while-continue|2 - local.get $16 - local.get $3 - i32.lt_s - local.set $12 + local.get $13 local.get $12 + i32.lt_s + local.set $10 + local.get $10 if - local.get $16 + local.get $13 i32.const 1 i32.add - local.set $5 + local.set $3 local.get $0 - local.get $5 local.get $3 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.set $18 - local.get $18 - local.get $5 + local.set $17 + local.get $17 + local.get $3 i32.sub i32.const 1 i32.add - local.set $19 - local.get $19 + local.set $18 + local.get $18 i32.const 32 i32.lt_s if + local.get $12 + local.tee $19 local.get $3 - local.tee $20 - local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $21 + local.tee $20 + local.get $19 local.get $20 - local.get $21 i32.lt_s select - local.set $18 + local.set $17 local.get $0 - local.get $5 + local.get $3 + local.get $17 local.get $18 - local.get $19 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 + local.get $12 + local.get $16 local.get $3 - local.get $15 - local.get $5 - local.get $18 + local.get $17 call $~lib/util/sort/nodePower + local.set $19 + local.get $15 local.set $20 - local.get $13 - local.set $21 loop $for-loop|3 - local.get $21 local.get $20 + local.get $19 i32.gt_u - local.set $22 - local.get $22 + local.set $21 + local.get $21 if - local.get $10 - local.get $21 + local.get $8 + local.get $20 i32.const 2 i32.shl i32.add i32.load - local.set $23 - local.get $23 + local.set $22 + local.get $22 i32.const -1 i32.ne if local.get $0 - local.get $23 - local.get $11 - local.get $21 + local.get $22 + local.get $9 + local.get $20 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $16 - local.get $14 + local.get $13 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns - local.get $23 - local.set $15 - local.get $10 - local.get $21 + local.get $22 + local.set $16 + local.get $8 + local.get $20 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $21 + local.get $20 i32.const 1 i32.sub - local.set $21 + local.set $20 br $for-loop|3 end end - local.get $10 - local.get $20 + local.get $8 + local.get $19 i32.const 2 i32.shl i32.add - local.get $15 + local.get $16 i32.store - local.get $11 - local.get $20 + local.get $9 + local.get $19 i32.const 2 i32.shl i32.add - local.get $16 + local.get $13 i32.store - local.get $5 - local.set $15 - local.get $18 + local.get $3 local.set $16 - local.get $20 + local.get $17 local.set $13 + local.get $19 + local.set $15 br $while-continue|2 end end - local.get $13 - local.set $12 + local.get $15 + local.set $10 loop $for-loop|4 - local.get $12 + local.get $10 i32.const 0 i32.ne - local.set $21 - local.get $21 + local.set $20 + local.get $20 if + local.get $8 local.get $10 - local.get $12 i32.const 2 i32.shl i32.add i32.load - local.set $22 - local.get $22 + local.set $21 + local.get $21 i32.const -1 i32.ne if local.get $0 - local.get $22 - local.get $11 - local.get $12 + local.get $21 + local.get $9 + local.get $10 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $14 + local.get $12 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $12 + local.get $10 i32.const 1 i32.sub - local.set $12 + local.set $10 br $for-loop|4 end end - local.get $14 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $8 call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Int64Array#sort (param $0 i32) (param $1 i32) (result i32) @@ -40966,10 +40958,10 @@ ) (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) + (local $4 i64) + (local $5 i64) + (local $6 i32) + (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) @@ -40985,14 +40977,7 @@ (local $20 i32) (local $21 i32) (local $22 i32) - (local $23 i32) local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -41005,21 +40990,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -41027,12 +41012,12 @@ end local.get $0 i64.load offset=8 - local.set $6 + local.set $4 local.get $0 i64.load offset=16 - local.set $7 - local.get $6 - local.get $7 + local.set $5 + local.get $4 + local.get $5 i32.const 2 global.set $~argumentsLength local.get $2 @@ -41040,23 +41025,23 @@ call_indirect $0 (type $i64_i64_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i64.store offset=8 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select - local.set $7 + local.set $5 local.get $0 i64.load - local.set $6 - local.get $6 - local.get $7 + local.set $4 + local.get $4 + local.get $5 i32.const 2 global.set $~argumentsLength local.get $2 @@ -41064,28 +41049,28 @@ call_indirect $0 (type $i64_i64_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i64.store local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i64.store offset=16 end local.get $0 i64.load - local.set $7 + local.set $5 local.get $0 i64.load offset=8 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -41093,17 +41078,17 @@ call_indirect $0 (type $i64_i64_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select i64.store local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select i64.store offset=8 end @@ -41112,271 +41097,277 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $5 + local.get $1 + local.set $3 i32.const 31 - local.get $5 + local.get $3 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $5 + local.set $3 loop $for-loop|1 - local.get $5 - local.get $8 + local.get $3 + local.get $6 i32.lt_u - local.set $12 - local.get $12 + local.set $10 + local.get $10 if - local.get $10 - local.get $5 + local.get $8 + local.get $3 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 + local.set $3 br $for-loop|1 end end - i32.const 0 - local.set $13 - local.get $4 + local.get $1 i32.const 3 i32.shl call $~lib/rt/tlsf/__alloc - local.set $14 - i32.const 0 - local.set $15 + local.set $11 + local.get $1 + i32.const 1 + i32.sub + local.set $12 local.get $0 i32.const 0 - local.get $3 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $14 + local.get $14 i32.const 32 i32.lt_s if - local.get $3 - local.tee $12 + local.get $12 + local.tee $10 i32.const 32 i32.const 1 i32.sub - local.tee $5 - local.get $12 - local.get $5 + local.tee $3 + local.get $10 + local.get $3 i32.lt_s select - local.set $16 + local.set $13 local.get $0 - local.get $15 - local.get $16 - local.get $17 + i32.const 0 + local.get $13 + local.get $14 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $15 + i32.const 0 + local.set $16 loop $while-continue|2 - local.get $16 - local.get $3 - i32.lt_s - local.set $12 + local.get $13 local.get $12 + i32.lt_s + local.set $10 + local.get $10 if - local.get $16 + local.get $13 i32.const 1 i32.add - local.set $5 + local.set $3 local.get $0 - local.get $5 local.get $3 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.set $18 - local.get $18 - local.get $5 + local.set $17 + local.get $17 + local.get $3 i32.sub i32.const 1 i32.add - local.set $19 - local.get $19 + local.set $18 + local.get $18 i32.const 32 i32.lt_s if + local.get $12 + local.tee $19 local.get $3 - local.tee $20 - local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $21 + local.tee $20 + local.get $19 local.get $20 - local.get $21 i32.lt_s select - local.set $18 + local.set $17 local.get $0 - local.get $5 + local.get $3 + local.get $17 local.get $18 - local.get $19 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 + local.get $12 + local.get $16 local.get $3 - local.get $15 - local.get $5 - local.get $18 + local.get $17 call $~lib/util/sort/nodePower + local.set $19 + local.get $15 local.set $20 - local.get $13 - local.set $21 loop $for-loop|3 - local.get $21 local.get $20 + local.get $19 i32.gt_u - local.set $22 - local.get $22 + local.set $21 + local.get $21 if - local.get $10 - local.get $21 + local.get $8 + local.get $20 i32.const 2 i32.shl i32.add i32.load - local.set $23 - local.get $23 + local.set $22 + local.get $22 i32.const -1 i32.ne if local.get $0 - local.get $23 - local.get $11 - local.get $21 + local.get $22 + local.get $9 + local.get $20 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $16 - local.get $14 + local.get $13 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns - local.get $23 - local.set $15 - local.get $10 - local.get $21 + local.get $22 + local.set $16 + local.get $8 + local.get $20 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $21 + local.get $20 i32.const 1 i32.sub - local.set $21 + local.set $20 br $for-loop|3 end end - local.get $10 - local.get $20 + local.get $8 + local.get $19 i32.const 2 i32.shl i32.add - local.get $15 + local.get $16 i32.store - local.get $11 - local.get $20 + local.get $9 + local.get $19 i32.const 2 i32.shl i32.add - local.get $16 + local.get $13 i32.store - local.get $5 - local.set $15 - local.get $18 + local.get $3 local.set $16 - local.get $20 + local.get $17 local.set $13 + local.get $19 + local.set $15 br $while-continue|2 end end - local.get $13 - local.set $12 + local.get $15 + local.set $10 loop $for-loop|4 - local.get $12 + local.get $10 i32.const 0 i32.ne - local.set $21 - local.get $21 + local.set $20 + local.get $20 if + local.get $8 local.get $10 - local.get $12 i32.const 2 i32.shl i32.add i32.load - local.set $22 - local.get $22 + local.set $21 + local.get $21 i32.const -1 i32.ne if local.get $0 - local.get $22 - local.get $11 - local.get $12 + local.get $21 + local.get $9 + local.get $10 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $14 + local.get $12 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $12 + local.get $10 i32.const 1 i32.sub - local.set $12 + local.set $10 br $for-loop|4 end end - local.get $14 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $8 call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Uint64Array#sort (param $0 i32) (param $1 i32) (result i32) @@ -41967,10 +41958,10 @@ ) (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f32) - (local $7 f32) + (local $4 f32) + (local $5 f32) + (local $6 i32) + (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) @@ -41986,14 +41977,7 @@ (local $20 i32) (local $21 i32) (local $22 i32) - (local $23 i32) local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $1 - local.set $4 - local.get $4 i32.const 128 i32.le_s if @@ -42006,21 +41990,21 @@ block $case2|0 block $case1|0 block $case0|0 - local.get $4 - local.set $5 - local.get $5 + local.get $1 + local.set $3 + local.get $3 i32.const 3 i32.eq br_if $case0|0 - local.get $5 + local.get $3 i32.const 2 i32.eq br_if $case1|0 - local.get $5 + local.get $3 i32.const 1 i32.eq br_if $case2|0 - local.get $5 + local.get $3 i32.const 0 i32.eq br_if $case3|0 @@ -42028,12 +42012,12 @@ end local.get $0 f32.load offset=4 - local.set $6 + local.set $4 local.get $0 f32.load offset=8 - local.set $7 - local.get $6 - local.get $7 + local.set $5 + local.get $4 + local.get $5 i32.const 2 global.set $~argumentsLength local.get $2 @@ -42041,23 +42025,23 @@ call_indirect $0 (type $f32_f32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select f32.store offset=4 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select - local.set $7 + local.set $5 local.get $0 f32.load - local.set $6 - local.get $6 - local.get $7 + local.set $4 + local.get $4 + local.get $5 i32.const 2 global.set $~argumentsLength local.get $2 @@ -42065,28 +42049,28 @@ call_indirect $0 (type $f32_f32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select f32.store local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select f32.store offset=8 end local.get $0 f32.load - local.set $7 + local.set $5 local.get $0 f32.load offset=4 - local.set $6 - local.get $7 - local.get $6 + local.set $4 + local.get $5 + local.get $4 i32.const 2 global.set $~argumentsLength local.get $2 @@ -42094,17 +42078,17 @@ call_indirect $0 (type $f32_f32_=>_i32) i32.const 31 i32.shr_u - local.set $5 + local.set $3 local.get $0 - local.get $7 - local.get $6 local.get $5 + local.get $4 + local.get $3 select f32.store local.get $0 - local.get $6 - local.get $7 + local.get $4 local.get $5 + local.get $3 select f32.store offset=4 end @@ -42113,271 +42097,277 @@ end local.get $0 i32.const 0 - local.get $3 + local.get $1 + i32.const 1 + i32.sub i32.const 0 local.get $2 call $~lib/util/sort/insertionSort return end - local.get $4 - local.set $5 + local.get $1 + local.set $3 i32.const 31 - local.get $5 + local.get $3 i32.clz i32.sub i32.const 2 i32.add - local.set $8 - local.get $8 + local.set $6 + local.get $6 i32.const 2 i32.shl - local.set $9 - local.get $9 + local.set $7 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $10 - local.get $9 + local.set $8 + local.get $8 + local.get $7 i32.add - local.set $11 + local.set $9 i32.const 0 - local.set $5 + local.set $3 loop $for-loop|1 - local.get $5 - local.get $8 + local.get $3 + local.get $6 i32.lt_u - local.set $12 - local.get $12 + local.set $10 + local.get $10 if - local.get $10 - local.get $5 + local.get $8 + local.get $3 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 + local.set $3 br $for-loop|1 end end - i32.const 0 - local.set $13 - local.get $4 + local.get $1 i32.const 2 i32.shl call $~lib/rt/tlsf/__alloc - local.set $14 - i32.const 0 - local.set $15 + local.set $11 + local.get $1 + i32.const 1 + i32.sub + local.set $12 local.get $0 i32.const 0 - local.get $3 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.set $16 - local.get $16 + local.set $13 + local.get $13 i32.const 1 i32.add - local.set $17 - local.get $17 + local.set $14 + local.get $14 i32.const 32 i32.lt_s if - local.get $3 - local.tee $12 + local.get $12 + local.tee $10 i32.const 32 i32.const 1 i32.sub - local.tee $5 - local.get $12 - local.get $5 + local.tee $3 + local.get $10 + local.get $3 i32.lt_s select - local.set $16 + local.set $13 local.get $0 - local.get $15 - local.get $16 - local.get $17 + i32.const 0 + local.get $13 + local.get $14 local.get $2 call $~lib/util/sort/insertionSort end + i32.const 0 + local.set $15 + i32.const 0 + local.set $16 loop $while-continue|2 - local.get $16 - local.get $3 - i32.lt_s - local.set $12 + local.get $13 local.get $12 + i32.lt_s + local.set $10 + local.get $10 if - local.get $16 + local.get $13 i32.const 1 i32.add - local.set $5 + local.set $3 local.get $0 - local.get $5 local.get $3 + local.get $12 local.get $2 call $~lib/util/sort/extendRunRight - local.set $18 - local.get $18 - local.get $5 + local.set $17 + local.get $17 + local.get $3 i32.sub i32.const 1 i32.add - local.set $19 - local.get $19 + local.set $18 + local.get $18 i32.const 32 i32.lt_s if + local.get $12 + local.tee $19 local.get $3 - local.tee $20 - local.get $5 i32.const 32 i32.add i32.const 1 i32.sub - local.tee $21 + local.tee $20 + local.get $19 local.get $20 - local.get $21 i32.lt_s select - local.set $18 + local.set $17 local.get $0 - local.get $5 + local.get $3 + local.get $17 local.get $18 - local.get $19 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 + local.get $12 + local.get $16 local.get $3 - local.get $15 - local.get $5 - local.get $18 + local.get $17 call $~lib/util/sort/nodePower + local.set $19 + local.get $15 local.set $20 - local.get $13 - local.set $21 loop $for-loop|3 - local.get $21 local.get $20 + local.get $19 i32.gt_u - local.set $22 - local.get $22 + local.set $21 + local.get $21 if - local.get $10 - local.get $21 + local.get $8 + local.get $20 i32.const 2 i32.shl i32.add i32.load - local.set $23 - local.get $23 + local.set $22 + local.get $22 i32.const -1 i32.ne if local.get $0 - local.get $23 - local.get $11 - local.get $21 + local.get $22 + local.get $9 + local.get $20 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $16 - local.get $14 + local.get $13 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns - local.get $23 - local.set $15 - local.get $10 - local.get $21 + local.get $22 + local.set $16 + local.get $8 + local.get $20 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $21 + local.get $20 i32.const 1 i32.sub - local.set $21 + local.set $20 br $for-loop|3 end end - local.get $10 - local.get $20 + local.get $8 + local.get $19 i32.const 2 i32.shl i32.add - local.get $15 + local.get $16 i32.store - local.get $11 - local.get $20 + local.get $9 + local.get $19 i32.const 2 i32.shl i32.add - local.get $16 + local.get $13 i32.store - local.get $5 - local.set $15 - local.get $18 + local.get $3 local.set $16 - local.get $20 + local.get $17 local.set $13 + local.get $19 + local.set $15 br $while-continue|2 end end - local.get $13 - local.set $12 + local.get $15 + local.set $10 loop $for-loop|4 - local.get $12 + local.get $10 i32.const 0 i32.ne - local.set $21 - local.get $21 + local.set $20 + local.get $20 if + local.get $8 local.get $10 - local.get $12 i32.const 2 i32.shl i32.add i32.load - local.set $22 - local.get $22 + local.set $21 + local.get $21 i32.const -1 i32.ne if local.get $0 - local.get $22 - local.get $11 - local.get $12 + local.get $21 + local.get $9 + local.get $10 i32.const 2 i32.shl i32.add i32.load i32.const 1 i32.add - local.get $3 - local.get $14 + local.get $12 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $12 + local.get $10 i32.const 1 i32.sub - local.set $12 + local.set $10 br $for-loop|4 end end - local.get $14 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $8 call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Float32Array#sort (param $0 i32) (param $1 i32) (result i32) From fa63754d17c45d2f93aab16b7cd6bed031a7ac9b Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 5 Jul 2021 20:27:37 +0300 Subject: [PATCH 14/29] minor opt --- std/assembly/util/sort.ts | 10 +- tests/compiler/std/array.optimized.wat | 97 +++++------ tests/compiler/std/array.untouched.wat | 108 ++++-------- tests/compiler/std/typedarray.optimized.wat | 180 +++++++++----------- tests/compiler/std/typedarray.untouched.wat | 120 +++++-------- 5 files changed, 203 insertions(+), 312 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index e4e2fffc22..9ceda28535 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -288,10 +288,10 @@ function mergeRuns( for (let k = l; k <= r; ++k) { let a = load(buffer + (j << alignof())); let b = load(buffer + (i << alignof())); - let c = comparator(a, b); - store(ptr + (k << alignof()), select(a, b, c >>> 31)); // c < 0 - store(ptr + (k << alignof()), select(b, a, c >>> 31)); // c < 0 - j -= i32(c >>> 31); // c < 0 - i += i32(c >= 0); + let c = comparator(a, b) >>> 31; // c < 0 + store(ptr + (k << alignof()), select(a, b, c)); + store(ptr + (k << alignof()), select(b, a, c)); + j -= c; // i32(c < 0) + i += c ^ 1; // i32(c >= 0) } } diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 0ffb8f6a3a..2885267e98 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -4866,7 +4866,6 @@ (local $8 i32) (local $9 f32) (local $10 f32) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -4952,7 +4951,7 @@ i32.const 2 i32.shl i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -4960,26 +4959,25 @@ local.get $5 i32.load call_indirect $0 (type $f32_f32_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select f32.store - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select f32.store local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 @@ -5768,7 +5766,6 @@ (local $8 i32) (local $9 f64) (local $10 f64) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -5854,7 +5851,7 @@ i32.const 3 i32.shl i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -5862,26 +5859,25 @@ local.get $5 i32.load call_indirect $0 (type $f64_f64_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select f64.store - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select f64.store local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 @@ -6625,7 +6621,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -6711,7 +6706,7 @@ i32.const 2 i32.shl i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -6719,26 +6714,25 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select i32.store - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select i32.store local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 @@ -7486,7 +7480,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -7572,7 +7565,7 @@ i32.const 2 i32.shl i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -7580,26 +7573,25 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select i32.store - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select i32.store local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 @@ -8281,7 +8273,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -8398,7 +8389,6 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - local.tee $11 i32.const 31 i32.shr_u local.tee $9 @@ -8415,9 +8405,8 @@ i32.sub local.set $6 local.get $2 - local.get $11 - i32.const 0 - i32.ge_s + local.get $9 + i32.eqz i32.add local.set $2 local.get $1 @@ -12349,7 +12338,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -12423,7 +12411,7 @@ local.get $0 local.get $1 i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -12431,26 +12419,25 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select i32.store8 - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select i32.store8 local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 99913ac8bf..9e44a75f34 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -7171,6 +7171,8 @@ local.get $5 i32.load call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -7180,8 +7182,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select f32.store local.get $0 @@ -7192,20 +7192,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select f32.store local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -8256,6 +8252,8 @@ local.get $5 i32.load call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -8265,8 +8263,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select f64.store local.get $0 @@ -8277,20 +8273,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select f64.store local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -9371,6 +9363,8 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -9380,8 +9374,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $0 @@ -9392,20 +9384,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -10348,6 +10336,8 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -10357,8 +10347,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $0 @@ -10369,20 +10357,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -11405,6 +11389,8 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -11414,8 +11400,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $0 @@ -11426,20 +11410,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -12324,6 +12304,8 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -12333,8 +12315,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $0 @@ -12345,20 +12325,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -13156,6 +13132,8 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -13165,8 +13143,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $0 @@ -13177,20 +13153,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -14347,6 +14319,8 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -14356,8 +14330,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $0 @@ -14368,20 +14340,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -20051,6 +20019,8 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -20060,8 +20030,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i32.store8 local.get $0 @@ -20072,20 +20040,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i32.store8 local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index bb88035530..da898e13c8 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3332,7 +3332,6 @@ (local $8 i32) (local $9 f64) (local $10 f64) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -3418,7 +3417,7 @@ i32.const 3 i32.shl i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -3426,26 +3425,25 @@ local.get $5 i32.load call_indirect $0 (type $f64_f64_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select f64.store - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select f64.store local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 @@ -29556,7 +29554,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -29630,7 +29627,7 @@ local.get $0 local.get $1 i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -29638,26 +29635,25 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select i32.store8 - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select i32.store8 local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 @@ -30388,7 +30384,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -30462,7 +30457,7 @@ local.get $0 local.get $1 i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -30470,26 +30465,25 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select i32.store8 - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select i32.store8 local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 @@ -31256,7 +31250,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -31342,7 +31335,7 @@ i32.const 1 i32.shl i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -31350,26 +31343,25 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select i32.store16 - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select i32.store16 local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 @@ -32132,7 +32124,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -32218,7 +32209,7 @@ i32.const 1 i32.shl i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -32226,26 +32217,25 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select i32.store16 - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select i32.store16 local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 @@ -33018,7 +33008,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -33104,7 +33093,7 @@ i32.const 2 i32.shl i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -33112,26 +33101,25 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select i32.store - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select i32.store local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 @@ -33888,7 +33876,6 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -33974,7 +33961,7 @@ i32.const 2 i32.shl i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -33982,26 +33969,25 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select i32.store - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select i32.store local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 @@ -34763,7 +34749,6 @@ (local $8 i32) (local $9 i64) (local $10 i64) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -34849,7 +34834,7 @@ i32.const 3 i32.shl i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -34857,26 +34842,25 @@ local.get $5 i32.load call_indirect $0 (type $i64_i64_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select i64.store - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select i64.store local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 @@ -35641,7 +35625,6 @@ (local $8 i32) (local $9 i64) (local $10 i64) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -35727,7 +35710,7 @@ i32.const 3 i32.shl i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -35735,26 +35718,25 @@ local.get $5 i32.load call_indirect $0 (type $i64_i64_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select i64.store - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select i64.store local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 @@ -36519,7 +36501,6 @@ (local $8 i32) (local $9 f32) (local $10 f32) - (local $11 i32) local.get $3 local.get $2 i32.const 1 @@ -36605,7 +36586,7 @@ i32.const 2 i32.shl i32.add - local.tee $7 + local.tee $8 local.get $9 local.get $10 local.get $9 @@ -36613,26 +36594,25 @@ local.get $5 i32.load call_indirect $0 (type $f32_f32_=>_i32) - local.tee $8 i32.const 31 i32.shr_u - local.tee $11 + local.tee $7 select f32.store - local.get $7 + local.get $8 local.get $10 local.get $9 - local.get $11 + local.get $7 select f32.store local.get $6 - local.get $11 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $8 - i32.const 0 - i32.ge_s + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index c779b22d1e..87033b55f2 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -3984,6 +3984,8 @@ local.get $5 i32.load call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -3993,8 +3995,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select f64.store local.get $0 @@ -4005,20 +4005,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select f64.store local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -33795,6 +33791,8 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -33804,8 +33802,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i32.store8 local.get $0 @@ -33816,20 +33812,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i32.store8 local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -34795,6 +34787,8 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -34804,8 +34798,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i32.store8 local.get $0 @@ -34816,20 +34808,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i32.store8 local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -35905,6 +35893,8 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -35914,8 +35904,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i32.store16 local.get $0 @@ -35926,20 +35914,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i32.store16 local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -36905,6 +36889,8 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -36914,8 +36900,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i32.store16 local.get $0 @@ -36926,20 +36910,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i32.store16 local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -37919,6 +37899,8 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -37928,8 +37910,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $0 @@ -37940,20 +37920,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -38913,6 +38889,8 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -38922,8 +38900,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $0 @@ -38934,20 +38910,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i32.store local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -39911,6 +39883,8 @@ local.get $5 i32.load call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -39920,8 +39894,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i64.store local.get $0 @@ -39932,20 +39904,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i64.store local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -40911,6 +40879,8 @@ local.get $5 i32.load call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -40920,8 +40890,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select i64.store local.get $0 @@ -40932,20 +40900,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select i64.store local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 @@ -41911,6 +41875,8 @@ local.get $5 i32.load call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u local.set $13 local.get $0 local.get $9 @@ -41920,8 +41886,6 @@ local.get $11 local.get $12 local.get $13 - i32.const 31 - i32.shr_u select f32.store local.get $0 @@ -41932,20 +41896,16 @@ local.get $12 local.get $11 local.get $13 - i32.const 31 - i32.shr_u select f32.store local.get $7 local.get $13 - i32.const 31 - i32.shr_u i32.sub local.set $7 local.get $6 local.get $13 - i32.const 0 - i32.ge_s + i32.const 1 + i32.xor i32.add local.set $6 local.get $9 From a474907bf57eaa1f410641b4cd3c8701b3d826d2 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 7 Jul 2021 11:37:32 +0300 Subject: [PATCH 15/29] simplify main sorting routines --- std/assembly/array.ts | 14 +- std/assembly/typedarray.ts | 81 +- tests/compiler/std/array.optimized.wat | 464 ++----- tests/compiler/std/array.untouched.wat | 631 +--------- tests/compiler/std/typedarray.optimized.wat | 738 ++++------- tests/compiler/std/typedarray.untouched.wat | 1241 ++++++------------- 6 files changed, 780 insertions(+), 2389 deletions(-) diff --git a/std/assembly/array.ts b/std/assembly/array.ts index dfaf90df41..5ff758502a 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -440,19 +440,7 @@ export class Array { } sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): this { - var length = this.length_; - if (length <= 1) return this; - var base = this.dataStart; - if (length == 2) { - let a: T = load(base, sizeof()); // a = arr[1] - let b: T = load(base); // b = arr[0] - if (comparator(a, b) < 0) { - store(base, b, sizeof()); // arr[1] = b; - store(base, a); // arr[0] = a; - } - return this; - } - SORT(base, length, comparator); + SORT(this.dataStart, this.length_, comparator); return this; } diff --git a/std/assembly/typedarray.ts b/std/assembly/typedarray.ts index 80e4b13620..5aa13d54f0 100644 --- a/std/assembly/typedarray.ts +++ b/std/assembly/typedarray.ts @@ -1,4 +1,4 @@ -import { COMPARATOR, SORT as SORT_IMPL } from "./util/sort"; +import { COMPARATOR, SORT } from "./util/sort"; import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_NOTIMPLEMENTED } from "./util/error"; import { joinIntegerArray, joinFloatArray } from "./util/string"; import { idof } from "./builtins"; @@ -65,7 +65,10 @@ export class Int8Array extends ArrayBufferView { } sort(comparator: (a: i8, b: i8) => i32 = COMPARATOR()): Int8Array { - return SORT(this, comparator); + var len = this.length; + if (len <= 1) return this; + SORT(this.dataStart, len, comparator); + return this; } slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int8Array { @@ -200,7 +203,10 @@ export class Uint8Array extends ArrayBufferView { } sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8Array { - return SORT(this, comparator); + var len = this.length; + if (len <= 1) return this; + SORT(this.dataStart, len, comparator); + return this; } slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8Array { @@ -334,8 +340,11 @@ export class Uint8ClampedArray extends ArrayBufferView { return FILL(this, value, start, end); } - sort(fn: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8ClampedArray { - return SORT(this, fn); + sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8ClampedArray { + var len = this.length; + if (len <= 1) return this; + SORT(this.dataStart, len, comparator); + return this; } slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint8ClampedArray { @@ -470,7 +479,10 @@ export class Int16Array extends ArrayBufferView { } sort(comparator: (a: i16, b: i16) => i32 = COMPARATOR()): Int16Array { - return SORT(this, comparator); + var len = this.length; + if (len <= 1) return this; + SORT(this.dataStart, len, comparator); + return this; } slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int16Array { @@ -605,7 +617,10 @@ export class Uint16Array extends ArrayBufferView { } sort(comparator: (a: u16, b: u16) => i32 = COMPARATOR()): Uint16Array { - return SORT(this, comparator); + var len = this.length; + if (len <= 1) return this; + SORT(this.dataStart, len, comparator); + return this; } slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint16Array { @@ -740,7 +755,10 @@ export class Int32Array extends ArrayBufferView { } sort(comparator: (a: i32, b: i32) => i32 = COMPARATOR()): Int32Array { - return SORT(this, comparator); + var len = this.length; + if (len <= 1) return this; + SORT(this.dataStart, len, comparator); + return this; } slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int32Array { @@ -875,7 +893,10 @@ export class Uint32Array extends ArrayBufferView { } sort(comparator: (a: u32, b: u32) => i32 = COMPARATOR()): Uint32Array { - return SORT(this, comparator); + var len = this.length; + if (len <= 1) return this; + SORT(this.dataStart, len, comparator); + return this; } slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint32Array { @@ -1010,7 +1031,10 @@ export class Int64Array extends ArrayBufferView { } sort(comparator: (a: i64, b: i64) => i32 = COMPARATOR()): Int64Array { - return SORT(this, comparator); + var len = this.length; + if (len <= 1) return this; + SORT(this.dataStart, len, comparator); + return this; } slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Int64Array { @@ -1145,7 +1169,10 @@ export class Uint64Array extends ArrayBufferView { } sort(comparator: (a: u64, b: u64) => i32 = COMPARATOR()): Uint64Array { - return SORT(this, comparator); + var len = this.length; + if (len <= 1) return this; + SORT(this.dataStart, len, comparator); + return this; } slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Uint64Array { @@ -1280,7 +1307,10 @@ export class Float32Array extends ArrayBufferView { } sort(comparator: (a: f32, b: f32) => i32 = COMPARATOR()): Float32Array { - return SORT(this, comparator); + var len = this.length; + if (len <= 1) return this; + SORT(this.dataStart, len, comparator); + return this; } slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Float32Array { @@ -1415,7 +1445,10 @@ export class Float64Array extends ArrayBufferView { } sort(comparator: (a: f64, b: f64) => i32 = COMPARATOR()): Float64Array { - return SORT(this, comparator); + var len = this.length; + if (len <= 1) return this; + SORT(this.dataStart, len, comparator); + return this; } slice(begin: i32 = 0, end: i32 = i32.MAX_VALUE): Float64Array { @@ -1511,28 +1544,6 @@ function FILL( return array; } -// @ts-ignore: decorator -@inline -function SORT( - array: TArray, - comparator: (a: T, b: T) => i32 -): TArray { - var len = array.length; - if (len <= 1) return array; - var base = array.dataStart; - if (len == 2) { - let a: T = load(base, sizeof()); // a = arr[1] - let b: T = load(base); // b = arr[0] - if (comparator(a, b) < 0) { - store(base, b, sizeof()); // arr[1] = b - store(base, a); // arr[0] = a - } - return array; - } - SORT_IMPL(base, len, comparator); - return array; -} - // @ts-ignore: decorator @inline function SLICE( diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 2885267e98..f0f782ed8e 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -7117,58 +7117,6 @@ local.get $9 call $~lib/rt/tlsf/__free ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store - end - local.get $0 - return - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT - local.get $0 - ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -12995,31 +12943,33 @@ i32.const 0 i32.store local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 local.get $1 - call $~lib/array/Array#sort - local.set $2 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store block $__inlined_func$std/array/isSorted (result i32) i32.const 1 - local.set $0 - local.get $2 + local.set $2 + local.get $0 i32.load offset=12 local.set $3 loop $for-loop|0 - local.get $0 + local.get $2 local.get $3 i32.lt_s if - local.get $2 local.get $0 + local.get $2 i32.const 1 i32.sub call $~lib/array/Array#__get local.set $4 - local.get $2 local.get $0 + local.get $2 call $~lib/array/Array#__get local.set $5 i32.const 2 @@ -13034,10 +12984,10 @@ i32.gt_s br_if $__inlined_func$std/array/isSorted drop - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end @@ -13307,15 +13257,17 @@ i32.const 0 i32.store local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 local.get $1 - call $~lib/array/Array<~lib/array/Array>#sort - local.set $2 + call $~lib/util/sort/SORT<~lib/array/Array> global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $2 + local.tee $2 + local.get $0 i32.store block $__inlined_func$std/array/isSorted<~lib/array/Array> (result i32) - local.get $0 + local.get $2 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -13327,17 +13279,17 @@ i64.const 0 i64.store i32.const 1 - local.set $0 - local.get $2 + local.set $2 + local.get $0 i32.load offset=12 local.set $5 loop $for-loop|0 - local.get $0 + local.get $2 local.get $5 i32.lt_s if - local.get $2 local.get $0 + local.get $2 i32.const 1 i32.sub call $~lib/array/Array#__get @@ -13345,8 +13297,8 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store - local.get $2 local.get $0 + local.get $2 call $~lib/array/Array#__get local.set $4 global.get $~lib/memory/__stack_pointer @@ -13369,10 +13321,10 @@ i32.const 0 br $__inlined_func$std/array/isSorted<~lib/array/Array> end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|0 end end @@ -13726,7 +13678,6 @@ (local $10 i32) (local $11 f64) (local $12 f32) - (local $13 f64) global.get $~lib/memory/__stack_pointer i32.const 76 i32.sub @@ -22872,50 +22823,12 @@ i32.const 7824 i32.store end - block $__inlined_func$~lib/array/Array#sort - local.get $5 - i32.load offset=12 - local.tee $0 - i32.const 1 - i32.le_s - br_if $__inlined_func$~lib/array/Array#sort - local.get $5 - i32.load offset=4 - local.set $3 - local.get $0 - i32.const 2 - i32.eq - if - local.get $3 - f64.load offset=8 - local.set $13 - local.get $3 - f64.load - local.set $11 - i32.const 2 - global.set $~argumentsLength - local.get $13 - local.get $11 - local.get $1 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $11 - f64.store offset=8 - local.get $3 - local.get $13 - f64.store - end - br $__inlined_func$~lib/array/Array#sort - end - local.get $3 - local.get $0 - local.get $1 - call $~lib/util/sort/SORT - end + local.get $5 + i32.load offset=4 + local.get $5 + i32.load offset=12 + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -23037,9 +22950,11 @@ i32.store end local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 local.get $1 - call $~lib/array/Array#sort - drop + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -23604,12 +23519,14 @@ i32.const 27 i32.const 8896 call $~lib/rt/__newArray - local.tee $0 + local.tee $3 i32.store offset=56 i32.const 1 global.set $~argumentsLength + local.get $1 + local.set $0 i32.const 0 - local.set $2 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -23632,7 +23549,7 @@ unreachable end i32.const 8944 - local.set $2 + local.set $7 global.get $~lib/memory/__stack_pointer i32.const 8944 i32.store @@ -23648,16 +23565,18 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/array/Array>#sort - local.set $7 - global.get $~lib/memory/__stack_pointer - local.tee $3 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 local.get $7 + call $~lib/util/sort/SORT<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.tee $4 + local.get $0 i32.store block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) - local.get $3 + local.get $4 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer @@ -23670,35 +23589,35 @@ i64.store i32.const 1 local.set $9 - local.get $7 + local.get $0 i32.load offset=12 - local.set $3 + local.set $4 loop $for-loop|060 - local.get $3 + local.get $4 local.get $9 i32.gt_s if - local.get $7 + local.get $0 local.get $9 i32.const 1 i32.sub call $~lib/array/Array#__get - local.set $5 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $2 i32.store - local.get $7 + local.get $0 local.get $9 call $~lib/array/Array#__get - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=4 i32.const 2 global.set $~argumentsLength - local.get $5 - local.get $4 local.get $2 + local.get $5 + local.get $7 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 @@ -23759,19 +23678,19 @@ block $folding-inner062 local.get $1 i32.load offset=12 - local.tee $3 - local.get $0 + local.tee $0 + local.get $3 i32.load offset=12 i32.ne br_if $folding-inner062 - local.get $0 local.get $1 + local.get $3 i32.eq br_if $folding-inner161 loop $for-loop|064 + local.get $0 local.get $2 - local.get $3 - i32.lt_s + i32.gt_s if local.get $1 local.get $2 @@ -23780,7 +23699,7 @@ global.get $~lib/memory/__stack_pointer local.get $5 i32.store - local.get $0 + local.get $3 local.get $2 call $~lib/array/Array#__get local.set $4 @@ -27909,9 +27828,6 @@ ) (func $~lib/array/Array#sort@varargs (param $0 i32) (local $1 i32) - (local $2 i32) - (local $3 f32) - (local $4 f32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -27944,59 +27860,18 @@ i32.const 7536 i32.store end - block $__inlined_func$~lib/array/Array#sort - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.le_s - br_if $__inlined_func$~lib/array/Array#sort - local.get $0 - i32.load offset=4 - local.set $0 - local.get $2 - i32.const 2 - i32.eq - if - local.get $0 - f32.load offset=4 - local.set $3 - local.get $0 - f32.load - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $4 - f32.store offset=4 - local.get $0 - local.get $3 - f32.store - end - br $__inlined_func$~lib/array/Array#sort - end - local.get $0 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT - end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -28029,50 +27904,12 @@ i32.const 8128 i32.store end - block $__inlined_func$~lib/array/Array#sort - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.le_s - br_if $__inlined_func$~lib/array/Array#sort - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store - end - br $__inlined_func$~lib/array/Array#sort - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT - end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -28185,89 +28022,6 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 15108 - i32.lt_s - if - i32.const 31520 - i32.const 31568 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - block $folding-inner0 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.le_s - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.tee $4 - local.get $3 - i32.load offset=4 - local.tee $2 - i32.store - local.get $4 - local.get $3 - i32.load - local.tee $4 - i32.store offset=4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store - end - br $folding-inner0 - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT<~lib/array/Array> - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - return - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - ) (func $~lib/array/Array<~lib/string/String>#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -30921,7 +30675,7 @@ i32.store i32.const 14640 i32.const 1104 - i32.const 477 + i32.const 465 i32.const 7 call $~lib/builtins/abort unreachable @@ -32667,8 +32421,6 @@ ) (func $export:~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -32710,50 +32462,12 @@ i32.const 14704 i32.store end - block $__inlined_func$~lib/array/Array#sort - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1 - i32.le_s - br_if $__inlined_func$~lib/array/Array#sort - local.get $0 - i32.load offset=4 - local.set $2 - local.get $3 - i32.const 2 - i32.eq - if - local.get $2 - i32.load8_u offset=1 - local.set $3 - local.get $2 - i32.load8_u - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $4 - i32.store8 offset=1 - local.get $2 - local.get $3 - i32.store8 - end - br $__inlined_func$~lib/array/Array#sort - end - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/sort/SORT - end + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -34704,8 +34418,11 @@ i32.store end local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 local.get $1 - call $~lib/array/Array<~lib/array/Array>#sort + call $~lib/util/sort/SORT<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -34714,6 +34431,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 return end i32.const 31520 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 9e44a75f34..20433dcafc 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -7627,55 +7627,10 @@ call $~lib/rt/tlsf/__free ) (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - f32.load offset=4 - local.set $4 - local.get $3 - f32.load - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - f32.store offset=4 - local.get $3 - local.get $4 - f32.store - end - local.get $0 - return - end - local.get $3 - local.get $2 + local.get $0 + i32.load offset=12 local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -8708,55 +8663,10 @@ call $~lib/rt/tlsf/__free ) (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - f64.load offset=8 - local.set $4 - local.get $3 - f64.load - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - f64.store offset=8 - local.get $3 - local.get $4 - f64.store - end - local.get $0 - return - end - local.get $3 - local.get $2 + local.get $0 + i32.load offset=12 local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -9817,55 +9727,10 @@ call $~lib/rt/tlsf/__free ) (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store - end - local.get $0 - return - end - local.get $3 - local.get $2 + local.get $0 + i32.load offset=12 local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -10790,55 +10655,10 @@ call $~lib/rt/tlsf/__free ) (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store - end - local.get $0 - return - end - local.get $3 - local.get $2 + local.get $0 + i32.load offset=12 local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -11881,6 +11701,15 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + local.get $1 + call $~lib/util/sort/SORT<~lib/array/Array> + local.get $0 + ) (func $~lib/array/Array<~lib/array/Array>#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 @@ -12796,6 +12625,15 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + local.get $1 + call $~lib/util/sort/SORT> + local.get $0 + ) (func $~lib/array/Array>#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 @@ -13624,6 +13462,15 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/array/Array<~lib/string/String|null>#sort (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + local.get $1 + call $~lib/util/sort/SORT<~lib/string/String|null> + local.get $0 + ) (func $~lib/array/Array<~lib/string/String|null>#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 @@ -14811,6 +14658,15 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/array/Array<~lib/string/String>#sort (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + local.get $1 + call $~lib/util/sort/SORT<~lib/string/String> + local.get $0 + ) (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 @@ -18717,7 +18573,7 @@ drop i32.const 13616 i32.const 80 - i32.const 477 + i32.const 465 i32.const 7 call $~lib/builtins/abort unreachable @@ -20473,57 +20329,12 @@ call $~lib/rt/tlsf/__free ) (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + local.get $0 + i32.load offset=4 local.get $0 i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load8_u offset=1 - local.set $4 - local.get $3 - i32.load8_u - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - i32.store8 offset=1 - local.get $3 - local.get $4 - i32.store8 - end - local.get $0 - return - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT + local.get $1 + call $~lib/util/sort/SORT local.get $0 ) (func $~lib/array/Array#flat (param $0 i32) (result i32) @@ -20532,7 +20343,7 @@ drop i32.const 13616 i32.const 80 - i32.const 477 + i32.const 465 i32.const 7 call $~lib/builtins/abort unreachable @@ -20916,7 +20727,7 @@ drop i32.const 13616 i32.const 80 - i32.const 477 + i32.const 465 i32.const 7 call $~lib/builtins/abort unreachable @@ -35860,91 +35671,6 @@ global.set $~lib/memory/__stack_pointer local.get $5 ) - (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load offset=4 - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load - local.tee $5 - i32.store offset=4 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store - end - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT<~lib/array/Array> - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) (func $~lib/array/Array<~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -36122,91 +35848,6 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) - (func $~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load offset=4 - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load - local.tee $5 - i32.store offset=4 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store - end - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT> - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) (func $~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -36263,91 +35904,6 @@ global.set $~lib/memory/__stack_pointer local.get $3 ) - (func $~lib/array/Array<~lib/string/String|null>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load offset=4 - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load - local.tee $5 - i32.store offset=4 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store - end - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT<~lib/string/String|null> - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) (func $~lib/array/Array<~lib/string/String|null>#__get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -36596,91 +36152,6 @@ global.set $~lib/memory/__stack_pointer local.get $6 ) - (func $~lib/array/Array<~lib/string/String>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load offset=4 - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.load - local.tee $5 - i32.store offset=4 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store - end - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT<~lib/string/String> - local.get $0 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index da898e13c8..33203abf3d 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -10,9 +10,9 @@ (type $i64_i32_i32_=>_i32 (func (param i64 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f32_i32_i32_=>_i32 (func (param f32 i32 i32) (result i32))) (type $f64_i32_i32_=>_i32 (func (param f64 i32 i32) (result i32))) + (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) (type $i64_i64_i32_i32_=>_i64 (func (param i64 i64 i32 i32) (result i64))) @@ -2964,7 +2964,7 @@ if i32.const 1360 i32.const 1632 - i32.const 710 + i32.const 725 i32.const 64 call $~lib/builtins/abort unreachable @@ -2988,7 +2988,7 @@ if i32.const 1360 i32.const 1632 - i32.const 699 + i32.const 714 i32.const 64 call $~lib/builtins/abort unreachable @@ -3011,7 +3011,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1385 + i32.const 1415 i32.const 64 call $~lib/builtins/abort unreachable @@ -3833,56 +3833,23 @@ ) (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + if local.get $0 - i32.load offset=4 - local.set $2 - local.get $3 - i32.const 2 - i32.eq - if - local.get $2 - f64.load offset=8 - local.set $4 - local.get $2 - f64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $5 - local.get $1 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $5 - f64.store offset=8 - local.get $2 - local.get $4 - f64.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/sort/SORT + return end local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) (local $2 i64) @@ -3923,7 +3890,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1374 + i32.const 1404 i32.const 64 call $~lib/builtins/abort unreachable @@ -3944,7 +3911,7 @@ if i32.const 1360 i32.const 1632 - i32.const 305 + i32.const 311 i32.const 45 call $~lib/builtins/abort unreachable @@ -3976,7 +3943,7 @@ if i32.const 1360 i32.const 1632 - i32.const 294 + i32.const 300 i32.const 45 call $~lib/builtins/abort unreachable @@ -5277,7 +5244,7 @@ if i32.const 1360 i32.const 1632 - i32.const 170 + i32.const 173 i32.const 45 call $~lib/builtins/abort unreachable @@ -5299,7 +5266,7 @@ if i32.const 1360 i32.const 1632 - i32.const 440 + i32.const 449 i32.const 64 call $~lib/builtins/abort unreachable @@ -5323,7 +5290,7 @@ if i32.const 1360 i32.const 1632 - i32.const 575 + i32.const 587 i32.const 64 call $~lib/builtins/abort unreachable @@ -5347,7 +5314,7 @@ if i32.const 1360 i32.const 1632 - i32.const 845 + i32.const 863 i32.const 64 call $~lib/builtins/abort unreachable @@ -5371,7 +5338,7 @@ if i32.const 1360 i32.const 1632 - i32.const 980 + i32.const 1001 i32.const 64 call $~lib/builtins/abort unreachable @@ -5400,7 +5367,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1115 + i32.const 1139 i32.const 64 call $~lib/builtins/abort unreachable @@ -5424,7 +5391,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1250 + i32.const 1277 i32.const 64 call $~lib/builtins/abort unreachable @@ -5495,7 +5462,7 @@ if i32.const 1360 i32.const 1632 - i32.const 182 + i32.const 185 i32.const 33 call $~lib/builtins/abort unreachable @@ -5524,7 +5491,7 @@ if i32.const 1360 i32.const 1632 - i32.const 317 + i32.const 323 i32.const 33 call $~lib/builtins/abort unreachable @@ -5555,7 +5522,7 @@ if i32.const 1360 i32.const 1632 - i32.const 452 + i32.const 461 i32.const 33 call $~lib/builtins/abort unreachable @@ -5588,7 +5555,7 @@ if i32.const 1360 i32.const 1632 - i32.const 587 + i32.const 599 i32.const 33 call $~lib/builtins/abort unreachable @@ -5621,7 +5588,7 @@ if i32.const 1360 i32.const 1632 - i32.const 722 + i32.const 737 i32.const 33 call $~lib/builtins/abort unreachable @@ -5654,7 +5621,7 @@ if i32.const 1360 i32.const 1632 - i32.const 857 + i32.const 875 i32.const 33 call $~lib/builtins/abort unreachable @@ -5687,7 +5654,7 @@ if i32.const 1360 i32.const 1632 - i32.const 992 + i32.const 1013 i32.const 33 call $~lib/builtins/abort unreachable @@ -5720,7 +5687,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1127 + i32.const 1151 i32.const 33 call $~lib/builtins/abort unreachable @@ -5753,7 +5720,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1262 + i32.const 1289 i32.const 33 call $~lib/builtins/abort unreachable @@ -5786,7 +5753,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1397 + i32.const 1427 i32.const 33 call $~lib/builtins/abort unreachable @@ -5812,7 +5779,7 @@ if i32.const 1360 i32.const 1632 - i32.const 159 + i32.const 162 i32.const 45 call $~lib/builtins/abort unreachable @@ -5833,7 +5800,7 @@ if i32.const 1360 i32.const 1632 - i32.const 429 + i32.const 438 i32.const 64 call $~lib/builtins/abort unreachable @@ -5856,7 +5823,7 @@ if i32.const 1360 i32.const 1632 - i32.const 564 + i32.const 576 i32.const 64 call $~lib/builtins/abort unreachable @@ -5879,7 +5846,7 @@ if i32.const 1360 i32.const 1632 - i32.const 834 + i32.const 852 i32.const 64 call $~lib/builtins/abort unreachable @@ -5907,7 +5874,7 @@ if i32.const 1360 i32.const 1632 - i32.const 969 + i32.const 990 i32.const 64 call $~lib/builtins/abort unreachable @@ -5930,7 +5897,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1104 + i32.const 1128 i32.const 64 call $~lib/builtins/abort unreachable @@ -5958,7 +5925,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1239 + i32.const 1266 i32.const 64 call $~lib/builtins/abort unreachable @@ -28089,7 +28056,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1826 + i32.const 1837 i32.const 5 call $~lib/builtins/abort unreachable @@ -28108,7 +28075,7 @@ else i32.const 1056 i32.const 1632 - i32.const 1835 + i32.const 1846 i32.const 7 call $~lib/builtins/abort unreachable @@ -28123,7 +28090,7 @@ if i32.const 1056 i32.const 1632 - i32.const 1840 + i32.const 1851 i32.const 7 call $~lib/builtins/abort unreachable @@ -28167,7 +28134,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28219,7 +28186,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28269,7 +28236,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28297,7 +28264,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28349,7 +28316,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28374,7 +28341,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -28391,7 +28358,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28458,7 +28425,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -28475,7 +28442,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28543,7 +28510,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28599,7 +28566,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28655,7 +28622,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28707,7 +28674,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28738,7 +28705,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28788,7 +28755,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28818,7 +28785,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28874,7 +28841,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28928,7 +28895,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28987,7 +28954,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -29040,7 +29007,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -29094,7 +29061,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -29122,7 +29089,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -29176,7 +29143,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -29235,7 +29202,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -30036,53 +30003,21 @@ ) (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.le_s - br_if $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.le_s + if local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load8_s offset=1 - local.set $2 - local.get $3 - i32.load8_s - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $4 - i32.store8 offset=1 - local.get $3 - local.get $2 - i32.store8 - end - br $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT + return end local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -30866,53 +30801,21 @@ ) (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.le_s - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.le_s + if local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load8_u offset=1 - local.set $2 - local.get $3 - i32.load8_u - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $4 - i32.store8 offset=1 - local.get $3 - local.get $2 - i32.store8 - end - br $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT + return end local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -31748,55 +31651,23 @@ ) (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + if local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load16_s offset=2 - local.set $2 - local.get $3 - i32.load16_s - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $4 - i32.store16 offset=2 - local.get $3 - local.get $2 - i32.store16 - end - br $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT + return end local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -32622,55 +32493,23 @@ ) (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + if local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load16_u offset=2 - local.set $2 - local.get $3 - i32.load16_u - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $4 - i32.store16 offset=2 - local.get $3 - local.get $2 - i32.store16 - end - br $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT + return end local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -33506,55 +33345,23 @@ ) (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + if local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT + return end local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -34374,55 +34181,23 @@ ) (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + if local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.eq - if - local.get $3 - i32.load offset=4 - local.set $2 - local.get $3 - i32.load - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $2 - i32.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT + return end local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -35249,56 +35024,23 @@ ) (func $~lib/typedarray/Int64Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i64) - block $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + if local.get $0 - i32.load offset=4 - local.set $2 - local.get $3 - i32.const 2 - i32.eq - if - local.get $2 - i64.load offset=8 - local.set $4 - local.get $2 - i64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $5 - local.get $1 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $5 - i64.store offset=8 - local.get $2 - local.get $4 - i64.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/sort/SORT + return end local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 @@ -36125,56 +35867,23 @@ ) (func $~lib/typedarray/Uint64Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i64) - block $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + if local.get $0 - i32.load offset=4 - local.set $2 - local.get $3 - i32.const 2 - i32.eq - if - local.get $2 - i64.load offset=8 - local.set $4 - local.get $2 - i64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $5 - local.get $1 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $5 - i64.store offset=8 - local.get $2 - local.get $4 - i64.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/sort/SORT + return end local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 @@ -37002,56 +36711,23 @@ ) (func $~lib/typedarray/Float32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f32) - block $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + i32.const 1 + i32.le_u + if local.get $0 - i32.load offset=4 - local.set $2 - local.get $3 - i32.const 2 - i32.eq - if - local.get $2 - f32.load offset=4 - local.set $4 - local.get $2 - f32.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $5 - local.get $1 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $5 - f32.store offset=4 - local.get $2 - local.get $4 - f32.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/sort/SORT + return end local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) (local $2 i32) @@ -43463,7 +43139,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -43855,7 +43531,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -44368,7 +44044,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -44773,7 +44449,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -45178,7 +44854,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -45583,7 +45259,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -45988,7 +45664,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -46393,7 +46069,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -46798,7 +46474,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -47311,7 +46987,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -47850,7 +47526,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -63729,7 +63405,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -63841,7 +63517,7 @@ end i32.const 1056 i32.const 1632 - i32.const 1831 + i32.const 1842 i32.const 9 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 87033b55f2..03da9ddc17 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -3412,7 +3412,7 @@ if i32.const 336 i32.const 608 - i32.const 710 + i32.const 725 i32.const 64 call $~lib/builtins/abort unreachable @@ -3436,7 +3436,7 @@ if i32.const 336 i32.const 608 - i32.const 699 + i32.const 714 i32.const 64 call $~lib/builtins/abort unreachable @@ -3459,7 +3459,7 @@ if i32.const 336 i32.const 608 - i32.const 1385 + i32.const 1415 i32.const 64 call $~lib/builtins/abort unreachable @@ -4441,65 +4441,22 @@ ) (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 f64) - block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + local.get $0 + call $~lib/typedarray/Float64Array#get:length + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s - if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq - if - local.get $5 - f64.load offset=8 - local.set $6 - local.get $5 - f64.load - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - f64.store offset=8 - local.get $5 - local.get $6 - f64.store - end - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $5 - local.get $4 - local.get $2 - call $~lib/util/sort/SORT - local.get $3 + return end + local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) (local $2 i64) @@ -4544,7 +4501,7 @@ if i32.const 336 i32.const 608 - i32.const 1374 + i32.const 1404 i32.const 64 call $~lib/builtins/abort unreachable @@ -4565,7 +4522,7 @@ if i32.const 336 i32.const 608 - i32.const 305 + i32.const 311 i32.const 45 call $~lib/builtins/abort unreachable @@ -4597,7 +4554,7 @@ if i32.const 336 i32.const 608 - i32.const 294 + i32.const 300 i32.const 45 call $~lib/builtins/abort unreachable @@ -6462,7 +6419,7 @@ if i32.const 336 i32.const 608 - i32.const 170 + i32.const 173 i32.const 45 call $~lib/builtins/abort unreachable @@ -6600,7 +6557,7 @@ if i32.const 336 i32.const 608 - i32.const 440 + i32.const 449 i32.const 64 call $~lib/builtins/abort unreachable @@ -6682,7 +6639,7 @@ if i32.const 336 i32.const 608 - i32.const 575 + i32.const 587 i32.const 64 call $~lib/builtins/abort unreachable @@ -6822,7 +6779,7 @@ if i32.const 336 i32.const 608 - i32.const 845 + i32.const 863 i32.const 64 call $~lib/builtins/abort unreachable @@ -6904,7 +6861,7 @@ if i32.const 336 i32.const 608 - i32.const 980 + i32.const 1001 i32.const 64 call $~lib/builtins/abort unreachable @@ -6986,7 +6943,7 @@ if i32.const 336 i32.const 608 - i32.const 1115 + i32.const 1139 i32.const 64 call $~lib/builtins/abort unreachable @@ -7068,7 +7025,7 @@ if i32.const 336 i32.const 608 - i32.const 1250 + i32.const 1277 i32.const 64 call $~lib/builtins/abort unreachable @@ -7324,7 +7281,7 @@ if i32.const 336 i32.const 608 - i32.const 182 + i32.const 185 i32.const 33 call $~lib/builtins/abort unreachable @@ -7430,7 +7387,7 @@ if i32.const 336 i32.const 608 - i32.const 317 + i32.const 323 i32.const 33 call $~lib/builtins/abort unreachable @@ -7538,7 +7495,7 @@ if i32.const 336 i32.const 608 - i32.const 452 + i32.const 461 i32.const 33 call $~lib/builtins/abort unreachable @@ -7648,7 +7605,7 @@ if i32.const 336 i32.const 608 - i32.const 587 + i32.const 599 i32.const 33 call $~lib/builtins/abort unreachable @@ -7758,7 +7715,7 @@ if i32.const 336 i32.const 608 - i32.const 722 + i32.const 737 i32.const 33 call $~lib/builtins/abort unreachable @@ -7868,7 +7825,7 @@ if i32.const 336 i32.const 608 - i32.const 857 + i32.const 875 i32.const 33 call $~lib/builtins/abort unreachable @@ -7978,7 +7935,7 @@ if i32.const 336 i32.const 608 - i32.const 992 + i32.const 1013 i32.const 33 call $~lib/builtins/abort unreachable @@ -8088,7 +8045,7 @@ if i32.const 336 i32.const 608 - i32.const 1127 + i32.const 1151 i32.const 33 call $~lib/builtins/abort unreachable @@ -8198,7 +8155,7 @@ if i32.const 336 i32.const 608 - i32.const 1262 + i32.const 1289 i32.const 33 call $~lib/builtins/abort unreachable @@ -8308,7 +8265,7 @@ if i32.const 336 i32.const 608 - i32.const 1397 + i32.const 1427 i32.const 33 call $~lib/builtins/abort unreachable @@ -9041,7 +8998,7 @@ if i32.const 336 i32.const 608 - i32.const 159 + i32.const 162 i32.const 45 call $~lib/builtins/abort unreachable @@ -9072,7 +9029,7 @@ if i32.const 336 i32.const 608 - i32.const 429 + i32.const 438 i32.const 64 call $~lib/builtins/abort unreachable @@ -9100,7 +9057,7 @@ if i32.const 336 i32.const 608 - i32.const 564 + i32.const 576 i32.const 64 call $~lib/builtins/abort unreachable @@ -9133,7 +9090,7 @@ if i32.const 336 i32.const 608 - i32.const 834 + i32.const 852 i32.const 64 call $~lib/builtins/abort unreachable @@ -9161,7 +9118,7 @@ if i32.const 336 i32.const 608 - i32.const 969 + i32.const 990 i32.const 64 call $~lib/builtins/abort unreachable @@ -9189,7 +9146,7 @@ if i32.const 336 i32.const 608 - i32.const 1104 + i32.const 1128 i32.const 64 call $~lib/builtins/abort unreachable @@ -9217,7 +9174,7 @@ if i32.const 336 i32.const 608 - i32.const 1239 + i32.const 1266 i32.const 64 call $~lib/builtins/abort unreachable @@ -23879,7 +23836,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -23894,7 +23851,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -24025,7 +23982,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -24040,7 +23997,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -24154,7 +24111,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -24169,7 +24126,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -24284,7 +24241,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -24299,7 +24256,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -24408,7 +24365,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -24423,7 +24380,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -24485,7 +24442,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -24500,7 +24457,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -24605,7 +24562,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -24620,7 +24577,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -24682,7 +24639,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -24697,7 +24654,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -24828,7 +24785,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -24843,7 +24800,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -24957,7 +24914,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -24972,7 +24929,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -25083,7 +25040,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -25098,7 +25055,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -25207,7 +25164,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -25222,7 +25179,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -25284,7 +25241,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -25299,7 +25256,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -25404,7 +25361,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -25419,7 +25376,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -25482,7 +25439,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -25497,7 +25454,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -25622,7 +25579,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -25637,7 +25594,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -25750,7 +25707,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -25765,7 +25722,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -25887,7 +25844,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -25902,7 +25859,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -26009,7 +25966,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -26024,7 +25981,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -26087,7 +26044,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -26102,7 +26059,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -26220,7 +26177,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -26235,7 +26192,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -26352,7 +26309,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -26367,7 +26324,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -26500,7 +26457,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -26515,7 +26472,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -26629,7 +26586,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -26644,7 +26601,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -26755,7 +26712,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -26770,7 +26727,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -26884,7 +26841,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -26899,7 +26856,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -27004,7 +26961,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -27019,7 +26976,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -27081,7 +27038,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -27096,7 +27053,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -27206,7 +27163,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -27221,7 +27178,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -27354,7 +27311,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -27369,7 +27326,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -27483,7 +27440,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -27498,7 +27455,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -27609,7 +27566,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -27624,7 +27581,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -27738,7 +27695,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -27753,7 +27710,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -27858,7 +27815,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -27873,7 +27830,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -27935,7 +27892,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -27950,7 +27907,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28055,7 +28012,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -28070,7 +28027,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28151,7 +28108,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -28166,7 +28123,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28280,7 +28237,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -28295,7 +28252,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28406,7 +28363,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -28421,7 +28378,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28535,7 +28492,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -28550,7 +28507,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28660,7 +28617,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -28675,7 +28632,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28785,7 +28742,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -28800,7 +28757,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -28905,7 +28862,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -28920,7 +28877,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -29005,7 +28962,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -29020,7 +28977,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -29134,7 +29091,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -29149,7 +29106,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -29260,7 +29217,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -29275,7 +29232,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -29389,7 +29346,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -29404,7 +29361,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -29514,7 +29471,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -29529,7 +29486,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -29639,7 +29596,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -29654,7 +29611,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -29764,7 +29721,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -29779,7 +29736,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -29912,7 +29869,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -29927,7 +29884,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -30036,7 +29993,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -30051,7 +30008,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -30114,7 +30071,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -30129,7 +30086,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -30243,7 +30200,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -30258,7 +30215,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -30368,7 +30325,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -30383,7 +30340,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -30493,7 +30450,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -30508,7 +30465,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -30618,7 +30575,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -30633,7 +30590,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -30766,7 +30723,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -30781,7 +30738,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -30890,7 +30847,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -30905,7 +30862,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -30968,7 +30925,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -30983,7 +30940,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -31097,7 +31054,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -31112,7 +31069,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -31222,7 +31179,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -31237,7 +31194,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -31347,7 +31304,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -31362,7 +31319,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -31472,7 +31429,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -31487,7 +31444,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -31611,7 +31568,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -31626,7 +31583,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -31688,7 +31645,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -31703,7 +31660,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -31814,7 +31771,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -31829,7 +31786,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -31940,7 +31897,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -31955,7 +31912,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -32066,7 +32023,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -32081,7 +32038,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -32192,7 +32149,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -32207,7 +32164,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -32336,7 +32293,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -32351,7 +32308,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -32462,7 +32419,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -32477,7 +32434,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -32588,7 +32545,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -32603,7 +32560,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -32714,7 +32671,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -32729,7 +32686,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -32840,7 +32797,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -32855,7 +32812,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -32967,7 +32924,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -32982,7 +32939,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -33095,7 +33052,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -33110,7 +33067,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -33230,7 +33187,7 @@ if i32.const 336 i32.const 608 - i32.const 1864 + i32.const 1875 i32.const 19 call $~lib/builtins/abort unreachable @@ -33245,7 +33202,7 @@ if i32.const 336 i32.const 608 - i32.const 1865 + i32.const 1876 i32.const 47 call $~lib/builtins/abort unreachable @@ -34246,65 +34203,22 @@ ) (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s - if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq - if - local.get $5 - i32.load8_s offset=1 - local.set $6 - local.get $5 - i32.load8_s - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - i32.store8 offset=1 - local.get $5 - local.get $6 - i32.store8 - end - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $5 - local.get $4 - local.get $2 - call $~lib/util/sort/SORT - local.get $3 + return end + local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -35242,65 +35156,22 @@ ) (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/typedarray/Uint8Array#get:length + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s - if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq - if - local.get $5 - i32.load8_u offset=1 - local.set $6 - local.get $5 - i32.load8_u - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - i32.store8 offset=1 - local.get $5 - local.get $6 - i32.store8 - end - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $5 - local.get $4 - local.get $2 - call $~lib/util/sort/SORT - local.get $3 + return end + local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -35338,65 +35209,22 @@ ) (func $~lib/typedarray/Uint8ClampedArray#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s - if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq - if - local.get $5 - i32.load8_u offset=1 - local.set $6 - local.get $5 - i32.load8_u - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - i32.store8 offset=1 - local.get $5 - local.get $6 - i32.store8 - end - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $5 - local.get $4 - local.get $2 - call $~lib/util/sort/SORT - local.get $3 + return end + local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|1 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -36348,65 +36176,22 @@ ) (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + local.get $0 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s - if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq - if - local.get $5 - i32.load16_s offset=2 - local.set $6 - local.get $5 - i32.load16_s - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - i32.store16 offset=2 - local.get $5 - local.get $6 - i32.store16 - end - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $5 - local.get $4 - local.get $2 - call $~lib/util/sort/SORT - local.get $3 + return end + local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -37344,65 +37129,22 @@ ) (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + local.get $0 + call $~lib/typedarray/Uint16Array#get:length + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s - if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq - if - local.get $5 - i32.load16_u offset=2 - local.set $6 - local.get $5 - i32.load16_u - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - i32.store16 offset=2 - local.get $5 - local.get $6 - i32.store16 - end - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $5 - local.get $4 - local.get $2 - call $~lib/util/sort/SORT - local.get $3 + return end + local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -38354,65 +38096,22 @@ ) (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s - if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq - if - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - i32.load - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - i32.store offset=4 - local.get $5 - local.get $6 - i32.store - end - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $5 - local.get $4 - local.get $2 - call $~lib/util/sort/SORT - local.get $3 + return end + local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -39344,65 +39043,22 @@ ) (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + local.get $0 + call $~lib/typedarray/Uint32Array#get:length + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s - if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq - if - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - i32.load - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - i32.store offset=4 - local.get $5 - local.get $6 - i32.store - end - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $5 - local.get $4 - local.get $2 - call $~lib/util/sort/SORT - local.get $3 + return end + local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -40340,65 +39996,22 @@ ) (func $~lib/typedarray/Int64Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - block $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + local.get $0 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s - if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq - if - local.get $5 - i64.load offset=8 - local.set $6 - local.get $5 - i64.load - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - i64.store offset=8 - local.get $5 - local.get $6 - i64.store - end - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $5 - local.get $4 - local.get $2 - call $~lib/util/sort/SORT - local.get $3 + return end + local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 @@ -41336,65 +40949,22 @@ ) (func $~lib/typedarray/Uint64Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - (local $7 i64) - block $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + local.get $0 + call $~lib/typedarray/Uint64Array#get:length + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s - if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq - if - local.get $5 - i64.load offset=8 - local.set $6 - local.get $5 - i64.load - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - i64.store offset=8 - local.get $5 - local.get $6 - i64.store - end - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $5 - local.get $4 - local.get $2 - call $~lib/util/sort/SORT - local.get $3 + return end + local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 @@ -42332,65 +41902,22 @@ ) (func $~lib/typedarray/Float32Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f32) - (local $7 f32) - block $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + local.get $0 + call $~lib/typedarray/Float32Array#get:length + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if local.get $0 - local.set $3 - local.get $1 - local.set $2 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $4 - local.get $4 - i32.const 1 - i32.le_s - if - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq - if - local.get $5 - f32.load offset=4 - local.set $6 - local.get $5 - f32.load - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - f32.store offset=4 - local.get $5 - local.get $6 - f32.store - end - local.get $3 - br $~lib/typedarray/SORT<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $5 - local.get $4 - local.get $2 - call $~lib/util/sort/SORT - local.get $3 + return end + local.get $0 + i32.load offset=4 + local.get $2 + local.get $1 + call $~lib/util/sort/SORT + local.get $0 ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) (local $2 i32) @@ -70845,7 +70372,7 @@ if i32.const 336 i32.const 608 - i32.const 1826 + i32.const 1837 i32.const 5 call $~lib/builtins/abort unreachable @@ -70864,7 +70391,7 @@ if i32.const 32 i32.const 608 - i32.const 1831 + i32.const 1842 i32.const 9 call $~lib/builtins/abort unreachable @@ -70876,7 +70403,7 @@ else i32.const 32 i32.const 608 - i32.const 1835 + i32.const 1846 i32.const 7 call $~lib/builtins/abort unreachable @@ -70894,7 +70421,7 @@ if i32.const 32 i32.const 608 - i32.const 1840 + i32.const 1851 i32.const 7 call $~lib/builtins/abort unreachable @@ -71063,7 +70590,7 @@ if i32.const 336 i32.const 608 - i32.const 1826 + i32.const 1837 i32.const 5 call $~lib/builtins/abort unreachable @@ -71082,7 +70609,7 @@ if i32.const 32 i32.const 608 - i32.const 1831 + i32.const 1842 i32.const 9 call $~lib/builtins/abort unreachable @@ -71094,7 +70621,7 @@ else i32.const 32 i32.const 608 - i32.const 1835 + i32.const 1846 i32.const 7 call $~lib/builtins/abort unreachable @@ -71112,7 +70639,7 @@ if i32.const 32 i32.const 608 - i32.const 1840 + i32.const 1851 i32.const 7 call $~lib/builtins/abort unreachable @@ -71182,7 +70709,7 @@ if i32.const 336 i32.const 608 - i32.const 1826 + i32.const 1837 i32.const 5 call $~lib/builtins/abort unreachable @@ -71201,7 +70728,7 @@ if i32.const 32 i32.const 608 - i32.const 1831 + i32.const 1842 i32.const 9 call $~lib/builtins/abort unreachable @@ -71213,7 +70740,7 @@ else i32.const 32 i32.const 608 - i32.const 1835 + i32.const 1846 i32.const 7 call $~lib/builtins/abort unreachable @@ -71231,7 +70758,7 @@ if i32.const 32 i32.const 608 - i32.const 1840 + i32.const 1851 i32.const 7 call $~lib/builtins/abort unreachable @@ -71301,7 +70828,7 @@ if i32.const 336 i32.const 608 - i32.const 1826 + i32.const 1837 i32.const 5 call $~lib/builtins/abort unreachable @@ -71320,7 +70847,7 @@ if i32.const 32 i32.const 608 - i32.const 1831 + i32.const 1842 i32.const 9 call $~lib/builtins/abort unreachable @@ -71332,7 +70859,7 @@ else i32.const 32 i32.const 608 - i32.const 1835 + i32.const 1846 i32.const 7 call $~lib/builtins/abort unreachable @@ -71350,7 +70877,7 @@ if i32.const 32 i32.const 608 - i32.const 1840 + i32.const 1851 i32.const 7 call $~lib/builtins/abort unreachable @@ -71420,7 +70947,7 @@ if i32.const 336 i32.const 608 - i32.const 1826 + i32.const 1837 i32.const 5 call $~lib/builtins/abort unreachable @@ -71439,7 +70966,7 @@ if i32.const 32 i32.const 608 - i32.const 1831 + i32.const 1842 i32.const 9 call $~lib/builtins/abort unreachable @@ -71451,7 +70978,7 @@ else i32.const 32 i32.const 608 - i32.const 1835 + i32.const 1846 i32.const 7 call $~lib/builtins/abort unreachable @@ -71469,7 +70996,7 @@ if i32.const 32 i32.const 608 - i32.const 1840 + i32.const 1851 i32.const 7 call $~lib/builtins/abort unreachable @@ -71539,7 +71066,7 @@ if i32.const 336 i32.const 608 - i32.const 1826 + i32.const 1837 i32.const 5 call $~lib/builtins/abort unreachable @@ -71558,7 +71085,7 @@ if i32.const 32 i32.const 608 - i32.const 1831 + i32.const 1842 i32.const 9 call $~lib/builtins/abort unreachable @@ -71570,7 +71097,7 @@ else i32.const 32 i32.const 608 - i32.const 1835 + i32.const 1846 i32.const 7 call $~lib/builtins/abort unreachable @@ -71588,7 +71115,7 @@ if i32.const 32 i32.const 608 - i32.const 1840 + i32.const 1851 i32.const 7 call $~lib/builtins/abort unreachable @@ -71658,7 +71185,7 @@ if i32.const 336 i32.const 608 - i32.const 1826 + i32.const 1837 i32.const 5 call $~lib/builtins/abort unreachable @@ -71677,7 +71204,7 @@ if i32.const 32 i32.const 608 - i32.const 1831 + i32.const 1842 i32.const 9 call $~lib/builtins/abort unreachable @@ -71689,7 +71216,7 @@ else i32.const 32 i32.const 608 - i32.const 1835 + i32.const 1846 i32.const 7 call $~lib/builtins/abort unreachable @@ -71707,7 +71234,7 @@ if i32.const 32 i32.const 608 - i32.const 1840 + i32.const 1851 i32.const 7 call $~lib/builtins/abort unreachable @@ -71777,7 +71304,7 @@ if i32.const 336 i32.const 608 - i32.const 1826 + i32.const 1837 i32.const 5 call $~lib/builtins/abort unreachable @@ -71796,7 +71323,7 @@ if i32.const 32 i32.const 608 - i32.const 1831 + i32.const 1842 i32.const 9 call $~lib/builtins/abort unreachable @@ -71808,7 +71335,7 @@ else i32.const 32 i32.const 608 - i32.const 1835 + i32.const 1846 i32.const 7 call $~lib/builtins/abort unreachable @@ -71826,7 +71353,7 @@ if i32.const 32 i32.const 608 - i32.const 1840 + i32.const 1851 i32.const 7 call $~lib/builtins/abort unreachable @@ -71896,7 +71423,7 @@ if i32.const 336 i32.const 608 - i32.const 1826 + i32.const 1837 i32.const 5 call $~lib/builtins/abort unreachable @@ -71915,7 +71442,7 @@ if i32.const 32 i32.const 608 - i32.const 1831 + i32.const 1842 i32.const 9 call $~lib/builtins/abort unreachable @@ -71927,7 +71454,7 @@ else i32.const 32 i32.const 608 - i32.const 1835 + i32.const 1846 i32.const 7 call $~lib/builtins/abort unreachable @@ -71945,7 +71472,7 @@ if i32.const 32 i32.const 608 - i32.const 1840 + i32.const 1851 i32.const 7 call $~lib/builtins/abort unreachable @@ -72015,7 +71542,7 @@ if i32.const 336 i32.const 608 - i32.const 1826 + i32.const 1837 i32.const 5 call $~lib/builtins/abort unreachable @@ -72034,7 +71561,7 @@ if i32.const 32 i32.const 608 - i32.const 1831 + i32.const 1842 i32.const 9 call $~lib/builtins/abort unreachable @@ -72046,7 +71573,7 @@ else i32.const 32 i32.const 608 - i32.const 1835 + i32.const 1846 i32.const 7 call $~lib/builtins/abort unreachable @@ -72064,7 +71591,7 @@ if i32.const 32 i32.const 608 - i32.const 1840 + i32.const 1851 i32.const 7 call $~lib/builtins/abort unreachable @@ -72134,7 +71661,7 @@ if i32.const 336 i32.const 608 - i32.const 1826 + i32.const 1837 i32.const 5 call $~lib/builtins/abort unreachable @@ -72153,7 +71680,7 @@ if i32.const 32 i32.const 608 - i32.const 1831 + i32.const 1842 i32.const 9 call $~lib/builtins/abort unreachable @@ -72165,7 +71692,7 @@ else i32.const 32 i32.const 608 - i32.const 1835 + i32.const 1846 i32.const 7 call $~lib/builtins/abort unreachable @@ -72183,7 +71710,7 @@ if i32.const 32 i32.const 608 - i32.const 1840 + i32.const 1851 i32.const 7 call $~lib/builtins/abort unreachable From fed4e12adc9c328c9c95cc44a0472e8fd96f0b3b Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 7 Jul 2021 11:43:50 +0300 Subject: [PATCH 16/29] more --- std/assembly/typedarray.ts | 44 +- tests/compiler/std/typedarray.optimized.wat | 4492 +++++++++---------- tests/compiler/std/typedarray.untouched.wat | 614 ++- 3 files changed, 2450 insertions(+), 2700 deletions(-) diff --git a/std/assembly/typedarray.ts b/std/assembly/typedarray.ts index 5aa13d54f0..3baa1337eb 100644 --- a/std/assembly/typedarray.ts +++ b/std/assembly/typedarray.ts @@ -65,9 +65,7 @@ export class Int8Array extends ArrayBufferView { } sort(comparator: (a: i8, b: i8) => i32 = COMPARATOR()): Int8Array { - var len = this.length; - if (len <= 1) return this; - SORT(this.dataStart, len, comparator); + SORT(this.dataStart, this.length, comparator); return this; } @@ -203,9 +201,7 @@ export class Uint8Array extends ArrayBufferView { } sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8Array { - var len = this.length; - if (len <= 1) return this; - SORT(this.dataStart, len, comparator); + SORT(this.dataStart, this.length, comparator); return this; } @@ -341,9 +337,7 @@ export class Uint8ClampedArray extends ArrayBufferView { } sort(comparator: (a: u8, b: u8) => i32 = COMPARATOR()): Uint8ClampedArray { - var len = this.length; - if (len <= 1) return this; - SORT(this.dataStart, len, comparator); + SORT(this.dataStart, this.length, comparator); return this; } @@ -479,9 +473,7 @@ export class Int16Array extends ArrayBufferView { } sort(comparator: (a: i16, b: i16) => i32 = COMPARATOR()): Int16Array { - var len = this.length; - if (len <= 1) return this; - SORT(this.dataStart, len, comparator); + SORT(this.dataStart, this.length, comparator); return this; } @@ -617,9 +609,7 @@ export class Uint16Array extends ArrayBufferView { } sort(comparator: (a: u16, b: u16) => i32 = COMPARATOR()): Uint16Array { - var len = this.length; - if (len <= 1) return this; - SORT(this.dataStart, len, comparator); + SORT(this.dataStart, this.length, comparator); return this; } @@ -755,9 +745,7 @@ export class Int32Array extends ArrayBufferView { } sort(comparator: (a: i32, b: i32) => i32 = COMPARATOR()): Int32Array { - var len = this.length; - if (len <= 1) return this; - SORT(this.dataStart, len, comparator); + SORT(this.dataStart, this.length, comparator); return this; } @@ -893,9 +881,7 @@ export class Uint32Array extends ArrayBufferView { } sort(comparator: (a: u32, b: u32) => i32 = COMPARATOR()): Uint32Array { - var len = this.length; - if (len <= 1) return this; - SORT(this.dataStart, len, comparator); + SORT(this.dataStart, this.length, comparator); return this; } @@ -1031,9 +1017,7 @@ export class Int64Array extends ArrayBufferView { } sort(comparator: (a: i64, b: i64) => i32 = COMPARATOR()): Int64Array { - var len = this.length; - if (len <= 1) return this; - SORT(this.dataStart, len, comparator); + SORT(this.dataStart, this.length, comparator); return this; } @@ -1169,9 +1153,7 @@ export class Uint64Array extends ArrayBufferView { } sort(comparator: (a: u64, b: u64) => i32 = COMPARATOR()): Uint64Array { - var len = this.length; - if (len <= 1) return this; - SORT(this.dataStart, len, comparator); + SORT(this.dataStart, this.length, comparator); return this; } @@ -1307,9 +1289,7 @@ export class Float32Array extends ArrayBufferView { } sort(comparator: (a: f32, b: f32) => i32 = COMPARATOR()): Float32Array { - var len = this.length; - if (len <= 1) return this; - SORT(this.dataStart, len, comparator); + SORT(this.dataStart, this.length, comparator); return this; } @@ -1445,9 +1425,7 @@ export class Float64Array extends ArrayBufferView { } sort(comparator: (a: f64, b: f64) => i32 = COMPARATOR()): Float64Array { - var len = this.length; - if (len <= 1) return this; - SORT(this.dataStart, len, comparator); + SORT(this.dataStart, this.length, comparator); return this; } diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 33203abf3d..1309b72e91 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -2964,7 +2964,7 @@ if i32.const 1360 i32.const 1632 - i32.const 725 + i32.const 715 i32.const 64 call $~lib/builtins/abort unreachable @@ -2988,7 +2988,7 @@ if i32.const 1360 i32.const 1632 - i32.const 714 + i32.const 704 i32.const 64 call $~lib/builtins/abort unreachable @@ -3011,7 +3011,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1415 + i32.const 1395 i32.const 64 call $~lib/builtins/abort unreachable @@ -3831,26 +3831,6 @@ local.get $13 call $~lib/rt/tlsf/__free ) - (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT - local.get $0 - ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) @@ -3890,7 +3870,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1404 + i32.const 1384 i32.const 64 call $~lib/builtins/abort unreachable @@ -3911,7 +3891,7 @@ if i32.const 1360 i32.const 1632 - i32.const 311 + i32.const 307 i32.const 45 call $~lib/builtins/abort unreachable @@ -3943,7 +3923,7 @@ if i32.const 1360 i32.const 1632 - i32.const 300 + i32.const 296 i32.const 45 call $~lib/builtins/abort unreachable @@ -5244,7 +5224,7 @@ if i32.const 1360 i32.const 1632 - i32.const 173 + i32.const 171 i32.const 45 call $~lib/builtins/abort unreachable @@ -5266,7 +5246,7 @@ if i32.const 1360 i32.const 1632 - i32.const 449 + i32.const 443 i32.const 64 call $~lib/builtins/abort unreachable @@ -5290,7 +5270,7 @@ if i32.const 1360 i32.const 1632 - i32.const 587 + i32.const 579 i32.const 64 call $~lib/builtins/abort unreachable @@ -5314,7 +5294,7 @@ if i32.const 1360 i32.const 1632 - i32.const 863 + i32.const 851 i32.const 64 call $~lib/builtins/abort unreachable @@ -5338,7 +5318,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1001 + i32.const 987 i32.const 64 call $~lib/builtins/abort unreachable @@ -5367,7 +5347,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1139 + i32.const 1123 i32.const 64 call $~lib/builtins/abort unreachable @@ -5391,7 +5371,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1277 + i32.const 1259 i32.const 64 call $~lib/builtins/abort unreachable @@ -5462,7 +5442,7 @@ if i32.const 1360 i32.const 1632 - i32.const 185 + i32.const 183 i32.const 33 call $~lib/builtins/abort unreachable @@ -5491,7 +5471,7 @@ if i32.const 1360 i32.const 1632 - i32.const 323 + i32.const 319 i32.const 33 call $~lib/builtins/abort unreachable @@ -5522,7 +5502,7 @@ if i32.const 1360 i32.const 1632 - i32.const 461 + i32.const 455 i32.const 33 call $~lib/builtins/abort unreachable @@ -5555,7 +5535,7 @@ if i32.const 1360 i32.const 1632 - i32.const 599 + i32.const 591 i32.const 33 call $~lib/builtins/abort unreachable @@ -5588,7 +5568,7 @@ if i32.const 1360 i32.const 1632 - i32.const 737 + i32.const 727 i32.const 33 call $~lib/builtins/abort unreachable @@ -5621,7 +5601,7 @@ if i32.const 1360 i32.const 1632 - i32.const 875 + i32.const 863 i32.const 33 call $~lib/builtins/abort unreachable @@ -5654,7 +5634,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1013 + i32.const 999 i32.const 33 call $~lib/builtins/abort unreachable @@ -5687,7 +5667,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1151 + i32.const 1135 i32.const 33 call $~lib/builtins/abort unreachable @@ -5720,7 +5700,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1289 + i32.const 1271 i32.const 33 call $~lib/builtins/abort unreachable @@ -5753,7 +5733,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1427 + i32.const 1407 i32.const 33 call $~lib/builtins/abort unreachable @@ -5779,7 +5759,7 @@ if i32.const 1360 i32.const 1632 - i32.const 162 + i32.const 160 i32.const 45 call $~lib/builtins/abort unreachable @@ -5800,7 +5780,7 @@ if i32.const 1360 i32.const 1632 - i32.const 438 + i32.const 432 i32.const 64 call $~lib/builtins/abort unreachable @@ -5823,7 +5803,7 @@ if i32.const 1360 i32.const 1632 - i32.const 576 + i32.const 568 i32.const 64 call $~lib/builtins/abort unreachable @@ -5846,7 +5826,7 @@ if i32.const 1360 i32.const 1632 - i32.const 852 + i32.const 840 i32.const 64 call $~lib/builtins/abort unreachable @@ -5874,7 +5854,7 @@ if i32.const 1360 i32.const 1632 - i32.const 990 + i32.const 976 i32.const 64 call $~lib/builtins/abort unreachable @@ -5897,7 +5877,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1128 + i32.const 1112 i32.const 64 call $~lib/builtins/abort unreachable @@ -5925,7 +5905,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1266 + i32.const 1248 i32.const 64 call $~lib/builtins/abort unreachable @@ -28056,7 +28036,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1837 + i32.const 1815 i32.const 5 call $~lib/builtins/abort unreachable @@ -28075,7 +28055,7 @@ else i32.const 1056 i32.const 1632 - i32.const 1846 + i32.const 1824 i32.const 7 call $~lib/builtins/abort unreachable @@ -28090,7 +28070,7 @@ if i32.const 1056 i32.const 1632 - i32.const 1851 + i32.const 1829 i32.const 7 call $~lib/builtins/abort unreachable @@ -28134,7 +28114,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28186,7 +28166,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28236,7 +28216,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28264,7 +28244,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28316,7 +28296,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28341,7 +28321,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -28358,7 +28338,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28425,7 +28405,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -28442,7 +28422,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28510,7 +28490,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28566,7 +28546,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28622,7 +28602,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28674,7 +28654,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28705,7 +28685,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28755,7 +28735,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28785,7 +28765,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28841,7 +28821,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28895,7 +28875,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28954,7 +28934,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -29007,7 +28987,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -29061,7 +29041,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -29089,7 +29069,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -29143,7 +29123,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -29202,7 +29182,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -30001,24 +29981,6 @@ local.get $9 call $~lib/rt/tlsf/__free ) - (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT - local.get $0 - ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.extend8_s @@ -30799,24 +30761,6 @@ local.get $9 call $~lib/rt/tlsf/__free ) - (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT - local.get $0 - ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 255 @@ -31649,26 +31593,6 @@ local.get $9 call $~lib/rt/tlsf/__free ) - (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT - local.get $0 - ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.extend16_s @@ -32491,26 +32415,6 @@ local.get $9 call $~lib/rt/tlsf/__free ) - (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT - local.get $0 - ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 65535 @@ -33343,26 +33247,6 @@ local.get $9 call $~lib/rt/tlsf/__free ) - (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT - local.get $0 - ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -34179,26 +34063,6 @@ local.get $9 call $~lib/rt/tlsf/__free ) - (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT - local.get $0 - ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -35022,26 +34886,6 @@ local.get $12 call $~lib/rt/tlsf/__free ) - (func $~lib/typedarray/Int64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT - local.get $0 - ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 local.get $1 @@ -35865,26 +35709,6 @@ local.get $12 call $~lib/rt/tlsf/__free ) - (func $~lib/typedarray/Uint64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT - local.get $0 - ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 local.get $1 @@ -36709,26 +36533,6 @@ local.get $13 call $~lib/rt/tlsf/__free ) - (func $~lib/typedarray/Float32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $2 - i32.const 1 - i32.le_u - if - local.get $0 - return - end - local.get $0 - i32.load offset=4 - local.get $2 - local.get $1 - call $~lib/util/sort/SORT - local.get $0 - ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) (local $2 i32) (local $3 i32) @@ -43139,7 +42943,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -43531,7 +43335,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -44044,7 +43848,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -44449,7 +44253,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -44854,7 +44658,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -45259,7 +45063,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -45664,7 +45468,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -46069,7 +45873,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -46474,7 +46278,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -46987,7 +46791,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -47526,7 +47330,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -47570,16 +47374,16 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i64.const 0 i64.store offset=16 - local.get $1 + local.get $0 i64.const 0 i64.store offset=24 memory.size @@ -47621,21 +47425,21 @@ global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -47649,9 +47453,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub if @@ -47662,7 +47466,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 12 i32.ne @@ -47674,7 +47478,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 @@ -47687,7 +47491,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 2 @@ -47700,7 +47504,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -47714,13 +47518,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#subarray - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -47734,9 +47538,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub i32.const 4 @@ -47749,7 +47553,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 4 i32.ne @@ -47761,7 +47565,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 2 @@ -47777,48 +47581,48 @@ global.get $~lib/memory/__stack_pointer i32.const 8 call $~lib/typedarray/Float64Array#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 f64.const 7 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 3 f64.const 6 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 4 f64.const 5 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 5 f64.const 4 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 6 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 7 f64.const 8 call $~lib/typedarray/Float64Array#__set global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 2 i32.const 6 call $~lib/typedarray/Float64Array#subarray - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u @@ -47832,9 +47636,9 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.get $1 i32.load i32.sub i32.const 16 @@ -47847,7 +47651,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 32 i32.ne @@ -47861,16 +47665,16 @@ end i32.const 0 global.set $~argumentsLength - local.get $0 + local.get $1 call $~lib/typedarray/Float64Array#sort@varargs drop - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 4 f64.eq if (result i32) - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 5 @@ -47879,7 +47683,7 @@ i32.const 0 end if (result i32) - local.get $0 + local.get $1 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 6 @@ -47888,7 +47692,7 @@ i32.const 0 end if (result i32) - local.get $0 + local.get $1 i32.const 3 call $~lib/typedarray/Float64Array#__get f64.const 7 @@ -47908,21 +47712,21 @@ global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 i32.const -32 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 256 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get if @@ -47933,7 +47737,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 @@ -47946,7 +47750,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 255 @@ -47994,12 +47798,12 @@ i32.const 15 i32.const 1728 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $2 - local.get $1 + local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -48020,12 +47824,12 @@ i32.const 15 i32.const 1808 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $2 - local.get $1 + local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -48046,12 +47850,12 @@ i32.const 15 i32.const 1840 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $2 - local.get $1 + local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -48072,12 +47876,12 @@ i32.const 15 i32.const 1872 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $2 - local.get $1 + local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -48098,12 +47902,12 @@ i32.const 15 i32.const 1904 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $2 - local.get $1 + local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -48119,14 +47923,14 @@ i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#subarray - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $0 + local.get $1 i32.const 0 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int8Array#fill - local.get $0 + local.get $1 i32.load offset=8 i32.const 3 i32.ne @@ -48138,9 +47942,9 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.get $1 i32.load i32.sub i32.const 1 @@ -48153,7 +47957,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 3 i32.ne @@ -48170,12 +47974,12 @@ i32.const 15 i32.const 1936 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $1 + local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -48191,12 +47995,12 @@ i32.const 15 i32.const 1968 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $2 - local.get $1 + local.get $0 call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -48240,35 +48044,35 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 1 i32.gt_s select - local.set $1 + local.set $0 i32.const 3 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 3 i32.gt_s select - local.set $0 + local.set $1 loop $for-loop|0 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if local.get $2 - local.get $1 + local.get $0 i32.const 2 i32.shl i32.add i32.const 1 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -48277,12 +48081,12 @@ i32.const 16 i32.const 2000 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $3 - local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -48295,7 +48099,7 @@ end local.get $3 i32.load offset=4 - local.set $0 + local.set $1 i32.const 0 local.get $3 i32.load offset=8 @@ -48306,23 +48110,23 @@ i32.const 0 i32.gt_s select - local.set $1 + local.set $0 loop $for-loop|01 - local.get $1 + local.get $0 local.get $2 i32.lt_s if - local.get $0 local.get $1 + local.get $0 i32.const 2 i32.shl i32.add i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|01 end end @@ -48331,12 +48135,12 @@ i32.const 16 i32.const 2048 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $3 - local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -48355,38 +48159,38 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 0 i32.gt_s select - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 3 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 loop $for-loop|03 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if local.get $2 - local.get $1 + local.get $0 i32.const 2 i32.shl i32.add i32.const 1 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|03 end end @@ -48395,12 +48199,12 @@ i32.const 16 i32.const 2096 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $3 - local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -48418,32 +48222,32 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.const 2 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $1 + local.set $0 loop $for-loop|05 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if local.get $2 - local.get $1 + local.get $0 i32.const 2 i32.shl i32.add i32.const 2 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|05 end end @@ -48452,12 +48256,12 @@ i32.const 16 i32.const 2144 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $3 - local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -48476,35 +48280,35 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 1 i32.gt_s select - local.set $1 + local.set $0 i32.const 0 - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 loop $for-loop|07 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if local.get $2 - local.get $1 + local.get $0 i32.const 2 i32.shl i32.add i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|07 end end @@ -48513,12 +48317,12 @@ i32.const 16 i32.const 2192 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $3 - local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -48538,7 +48342,7 @@ i32.store offset=12 local.get $4 i32.load offset=4 - local.set $0 + local.set $1 i32.const 0 local.get $4 i32.load offset=8 @@ -48549,23 +48353,23 @@ i32.const 0 i32.gt_s select - local.set $1 + local.set $0 loop $for-loop|09 - local.get $1 + local.get $0 local.get $2 i32.lt_s if - local.get $0 local.get $1 + local.get $0 i32.const 2 i32.shl i32.add i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|09 end end @@ -48615,12 +48419,12 @@ i32.const 16 i32.const 2240 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $4 - local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -48636,12 +48440,12 @@ i32.const 16 i32.const 2272 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $3 - local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -48655,40 +48459,40 @@ global.get $~lib/memory/__stack_pointer i32.const 6 call $~lib/typedarray/Int8Array#constructor - local.tee $1 + local.tee $0 i32.store offset=12 - local.get $1 + local.get $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 5 i32.const 6 call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 1 i32.const 6 call $~lib/typedarray/Int8Array#subarray - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 2 @@ -48701,7 +48505,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 5 i32.ne @@ -48713,9 +48517,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub i32.const 1 @@ -48728,7 +48532,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 5 i32.ne @@ -48741,13 +48545,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 1 i32.const 5 call $~lib/typedarray/Int8Array#subarray - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 3 @@ -48760,7 +48564,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 4 i32.ne @@ -48772,9 +48576,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub i32.const 2 @@ -48787,7 +48591,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 4 i32.ne @@ -48800,13 +48604,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 1 i32.const 4 call $~lib/typedarray/Int8Array#subarray - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 4 @@ -48819,7 +48623,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.ne @@ -48831,9 +48635,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub i32.const 3 @@ -48846,7 +48650,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 3 i32.ne @@ -48861,55 +48665,55 @@ global.get $~lib/memory/__stack_pointer i32.const 5 call $~lib/typedarray/Int32Array#constructor - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 4 i32.const 5 call $~lib/typedarray/Int32Array#__set global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice local.tee $2 i32.store - local.get $1 + local.get $0 i32.const 0 i32.const 3 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=20 i32.const 5 i32.const 2 i32.const 16 i32.const 2320 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -48925,28 +48729,28 @@ i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 1 i32.const 3 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=20 i32.const 5 i32.const 2 i32.const 16 i32.const 2368 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -48962,28 +48766,28 @@ i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 1 i32.const 2 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=20 i32.const 5 i32.const 2 i32.const 16 i32.const 2416 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -48999,28 +48803,28 @@ i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 2 i32.const 2 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=20 i32.const 5 i32.const 2 i32.const 16 i32.const 2464 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -49036,28 +48840,28 @@ i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=20 i32.const 5 i32.const 2 i32.const 16 i32.const 2512 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -49073,28 +48877,28 @@ i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 1 i32.const 3 i32.const 4 call $~lib/typedarray/Int32Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=20 i32.const 5 i32.const 2 i32.const 16 i32.const 2560 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -49110,28 +48914,28 @@ i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 1 i32.const 2 i32.const 4 call $~lib/typedarray/Int32Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=20 i32.const 5 i32.const 2 i32.const 16 i32.const 2608 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -49147,28 +48951,28 @@ i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 i32.const -2 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=20 i32.const 5 i32.const 2 i32.const 16 i32.const 2656 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -49184,28 +48988,28 @@ i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 i32.const -2 i32.const -1 call $~lib/typedarray/Int32Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=20 i32.const 5 i32.const 2 i32.const 16 i32.const 2704 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -49221,28 +49025,28 @@ i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const -4 i32.const -3 i32.const -2 call $~lib/typedarray/Int32Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=20 i32.const 5 i32.const 2 i32.const 16 i32.const 2752 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -49258,28 +49062,28 @@ i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const -4 i32.const -3 i32.const -1 call $~lib/typedarray/Int32Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=20 i32.const 5 i32.const 2 i32.const 16 i32.const 2800 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -49295,28 +49099,28 @@ i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.const -4 i32.const -3 i32.const 2147483647 call $~lib/typedarray/Int32Array#copyWithin - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=20 i32.const 5 i32.const 2 i32.const 16 i32.const 2848 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 local.get $1 + local.get $0 call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -49357,9 +49161,9 @@ i32.const 1 i32.const 4 call $~lib/typedarray/Int32Array#subarray - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -49373,9 +49177,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub i32.const 4 @@ -49388,7 +49192,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 12 i32.ne @@ -49405,9 +49209,9 @@ i32.const 1 i32.const 3 call $~lib/typedarray/Int32Array#slice - local.tee $0 + local.tee $1 i32.store offset=8 - local.get $0 + local.get $1 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 2 @@ -49420,7 +49224,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -49433,7 +49237,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u @@ -49447,9 +49251,9 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.get $1 i32.load i32.sub if @@ -49460,7 +49264,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load offset=8 i32.const 8 i32.ne @@ -49473,13 +49277,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=12 - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -49492,7 +49296,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -49506,9 +49310,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub if @@ -49519,7 +49323,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 4 i32.ne @@ -49536,9 +49340,9 @@ i32.const 0 i32.const 2147483647 call $~lib/typedarray/Int32Array#slice - local.tee $1 + local.tee $0 i32.store offset=24 - local.get $1 + local.get $0 local.get $2 i32.eq if @@ -49549,7 +49353,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -49566,9 +49370,9 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=4 - local.get $1 + local.get $0 i32.load i32.sub local.get $2 @@ -49585,7 +49389,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.load offset=8 local.get $2 i32.load offset=8 @@ -49607,10 +49411,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $3 @@ -49631,7 +49435,7 @@ i32.const 2896 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -49639,29 +49443,29 @@ i32.load offset=8 local.set $2 loop $for-loop|011 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_s - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength local.get $9 - local.get $1 local.get $0 + local.get $1 local.get $3 i32.const 2896 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $9 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|011 end end @@ -49700,10 +49504,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $3 @@ -49724,7 +49528,7 @@ i32.const 2928 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -49732,29 +49536,29 @@ i32.load offset=8 local.set $2 loop $for-loop|013 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength local.get $5 - local.get $1 local.get $0 + local.get $1 local.get $3 i32.const 2928 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $5 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|013 end end @@ -49777,10 +49581,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $3 @@ -49801,7 +49605,7 @@ i32.const 2960 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 i32.const 0 local.set $5 local.get $3 @@ -49811,29 +49615,29 @@ i32.load offset=8 local.set $2 loop $for-loop|016 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength local.get $5 - local.get $1 local.get $0 + local.get $1 local.get $3 i32.const 2960 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $5 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|016 end end @@ -49856,10 +49660,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $3 @@ -49880,7 +49684,7 @@ i32.const 2992 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 i32.const 0 local.set $9 local.get $3 @@ -49892,31 +49696,31 @@ i32.shr_u local.set $2 loop $for-loop|08 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_s - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength local.get $9 - local.get $1 local.get $0 + local.get $1 local.get $3 i32.const 2992 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $9 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|08 end end @@ -49939,10 +49743,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $3 @@ -49963,7 +49767,7 @@ i32.const 3024 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 i32.const 0 local.set $9 local.get $3 @@ -49975,31 +49779,31 @@ i32.shr_u local.set $2 loop $for-loop|010 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_u - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength local.get $9 - local.get $1 local.get $0 + local.get $1 local.get $3 i32.const 3024 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $9 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|010 end end @@ -50022,10 +49826,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $3 @@ -50046,7 +49850,7 @@ i32.const 3056 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 i32.const 0 local.set $9 local.get $3 @@ -50058,31 +49862,31 @@ i32.shr_u local.set $2 loop $for-loop|012 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength local.get $9 - local.get $1 local.get $0 + local.get $1 local.get $3 i32.const 3056 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $9 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|012 end end @@ -50103,10 +49907,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $3 @@ -50127,7 +49931,7 @@ i32.const 3088 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 i32.const 0 local.set $9 local.get $3 @@ -50139,31 +49943,31 @@ i32.shr_u local.set $2 loop $for-loop|014 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength local.get $9 - local.get $1 local.get $0 + local.get $1 local.get $3 i32.const 3088 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $9 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|014 end end @@ -50184,10 +49988,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $4 @@ -50208,7 +50012,7 @@ i32.const 3120 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -50216,14 +50020,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|01622 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -50233,16 +50037,16 @@ global.set $~argumentsLength local.get $13 local.get $10 - local.get $0 + local.get $1 local.get $4 i32.const 3120 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $13 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|01622 end end @@ -50263,10 +50067,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $4 @@ -50287,7 +50091,7 @@ i32.const 3152 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 i64.const 0 local.set $13 local.get $4 @@ -50297,14 +50101,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|018 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -50314,16 +50118,16 @@ global.set $~argumentsLength local.get $13 local.get $10 - local.get $0 + local.get $1 local.get $4 i32.const 3152 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) local.set $13 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|018 end end @@ -50344,10 +50148,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $4 @@ -50368,7 +50172,7 @@ i32.const 3184 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -50376,14 +50180,14 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|021 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -50393,16 +50197,16 @@ global.set $~argumentsLength local.get $14 local.get $11 - local.get $0 + local.get $1 local.get $4 i32.const 3184 i32.load call_indirect $0 (type $f32_f32_i32_i32_=>_f32) local.set $14 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|021 end end @@ -50423,10 +50227,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $4 @@ -50447,7 +50251,7 @@ i32.const 3216 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -50455,14 +50259,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|023 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -50472,16 +50276,16 @@ global.set $~argumentsLength local.get $15 local.get $12 - local.get $0 + local.get $1 local.get $4 i32.const 3216 i32.load call_indirect $0 (type $f64_f64_i32_i32_=>_f64) local.set $15 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|023 end end @@ -50502,39 +50306,39 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Int8Array#at i32.const 1 i32.ne br_if $folding-inner2 - local.get $1 + local.get $0 i32.const -1 call $~lib/typedarray/Int8Array#at i32.const 3 i32.ne br_if $folding-inner3 - local.get $1 + local.get $0 i32.const -3 call $~lib/typedarray/Int8Array#at i32.const 1 @@ -50553,39 +50357,39 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8Array#__set - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Uint8Array#at i32.const 1 i32.ne br_if $folding-inner2 - local.get $1 + local.get $0 i32.const -1 call $~lib/typedarray/Uint8Array#at i32.const 3 i32.ne br_if $folding-inner3 - local.get $1 + local.get $0 i32.const -3 call $~lib/typedarray/Uint8Array#at i32.const 1 @@ -50604,39 +50408,39 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#at i32.const 1 i32.ne br_if $folding-inner2 - local.get $1 + local.get $0 i32.const -1 call $~lib/typedarray/Uint8ClampedArray#at i32.const 3 i32.ne br_if $folding-inner3 - local.get $1 + local.get $0 i32.const -3 call $~lib/typedarray/Uint8ClampedArray#at i32.const 1 @@ -50655,39 +50459,39 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int16Array#__set - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Int16Array#at i32.const 1 i32.ne br_if $folding-inner2 - local.get $1 + local.get $0 i32.const -1 call $~lib/typedarray/Int16Array#at i32.const 3 i32.ne br_if $folding-inner3 - local.get $1 + local.get $0 i32.const -3 call $~lib/typedarray/Int16Array#at i32.const 1 @@ -50706,39 +50510,39 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Uint16Array#at i32.const 1 i32.ne br_if $folding-inner2 - local.get $1 + local.get $0 i32.const -1 call $~lib/typedarray/Uint16Array#at i32.const 3 i32.ne br_if $folding-inner3 - local.get $1 + local.get $0 i32.const -3 call $~lib/typedarray/Uint16Array#at i32.const 1 @@ -50757,39 +50561,39 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Int32Array#__set - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Int32Array#at i32.const 1 i32.ne br_if $folding-inner2 - local.get $1 + local.get $0 i32.const -1 call $~lib/typedarray/Int32Array#at i32.const 3 i32.ne br_if $folding-inner3 - local.get $1 + local.get $0 i32.const -3 call $~lib/typedarray/Int32Array#at i32.const 1 @@ -50808,39 +50612,39 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 3 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Uint32Array#at i32.const 1 i32.ne br_if $folding-inner2 - local.get $1 + local.get $0 i32.const -1 call $~lib/typedarray/Uint32Array#at i32.const 3 i32.ne br_if $folding-inner3 - local.get $1 + local.get $0 i32.const -3 call $~lib/typedarray/Uint32Array#at i32.const 1 @@ -50859,39 +50663,39 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Int64Array#at i64.const 1 i64.ne br_if $folding-inner2 - local.get $1 + local.get $0 i32.const -1 call $~lib/typedarray/Int64Array#at i64.const 3 i64.ne br_if $folding-inner3 - local.get $1 + local.get $0 i32.const -3 call $~lib/typedarray/Int64Array#at i64.const 1 @@ -50910,39 +50714,39 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Uint64Array#at i64.const 1 i64.ne br_if $folding-inner2 - local.get $1 + local.get $0 i32.const -1 call $~lib/typedarray/Uint64Array#at i64.const 3 i64.ne br_if $folding-inner3 - local.get $1 + local.get $0 i32.const -3 call $~lib/typedarray/Uint64Array#at i64.const 1 @@ -50961,39 +50765,39 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Float32Array#at f32.const 1 f32.ne br_if $folding-inner2 - local.get $1 + local.get $0 i32.const -1 call $~lib/typedarray/Float32Array#at f32.const 3 f32.ne br_if $folding-inner3 - local.get $1 + local.get $0 i32.const -3 call $~lib/typedarray/Float32Array#at f32.const 1 @@ -51012,39 +50816,39 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Float64Array#at f64.const 1 f64.ne br_if $folding-inner2 - local.get $1 + local.get $0 i32.const -1 call $~lib/typedarray/Float64Array#at f64.const 3 f64.ne br_if $folding-inner3 - local.get $1 + local.get $0 i32.const -3 call $~lib/typedarray/Float64Array#at f64.const 1 @@ -51063,10 +50867,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $4 @@ -51087,7 +50891,7 @@ i32.const 3248 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -51105,17 +50909,17 @@ local.get $5 i32.add i32.load8_s - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength - local.get $0 local.get $1 + local.get $0 local.get $5 local.get $4 i32.const 3248 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 + local.set $1 local.get $5 i32.const 1 i32.sub @@ -51123,7 +50927,7 @@ br $for-loop|025 end end - local.get $0 + local.get $1 i32.const 255 i32.and i32.const 6 @@ -51142,10 +50946,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $4 @@ -51174,31 +50978,31 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $0 + local.set $1 loop $for-loop|039 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 local.get $2 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength local.get $5 - local.get $1 local.get $0 + local.get $1 local.get $4 i32.const 3280 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $5 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $for-loop|039 end end @@ -51221,10 +51025,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $4 @@ -51253,31 +51057,31 @@ i32.load offset=8 i32.const 1 i32.sub - local.set $0 + local.set $1 loop $for-loop|042 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 local.get $2 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength local.get $5 - local.get $1 local.get $0 + local.get $1 local.get $4 i32.const 3312 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) local.set $5 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $for-loop|042 end end @@ -51300,10 +51104,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $4 @@ -51324,7 +51128,7 @@ i32.const 3344 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -51346,17 +51150,17 @@ i32.shl i32.add i32.load16_s - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength - local.get $0 local.get $1 + local.get $0 local.get $5 local.get $4 i32.const 3344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 + local.set $1 local.get $5 i32.const 1 i32.sub @@ -51364,7 +51168,7 @@ br $for-loop|027 end end - local.get $0 + local.get $1 i32.const 65535 i32.and i32.const 6 @@ -51383,10 +51187,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $4 @@ -51407,7 +51211,7 @@ i32.const 3376 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -51429,17 +51233,17 @@ i32.shl i32.add i32.load16_u - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength - local.get $0 local.get $1 + local.get $0 local.get $5 local.get $4 i32.const 3376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 + local.set $1 local.get $5 i32.const 1 i32.sub @@ -51447,7 +51251,7 @@ br $for-loop|029 end end - local.get $0 + local.get $1 i32.const 65535 i32.and i32.const 6 @@ -51466,10 +51270,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $4 @@ -51490,7 +51294,7 @@ i32.const 3408 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -51512,17 +51316,17 @@ i32.shl i32.add i32.load - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength - local.get $0 local.get $1 + local.get $0 local.get $5 local.get $4 i32.const 3408 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 + local.set $1 local.get $5 i32.const 1 i32.sub @@ -51530,7 +51334,7 @@ br $for-loop|031 end end - local.get $0 + local.get $1 i32.const 6 i32.ne br_if $folding-inner5 @@ -51547,10 +51351,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $4 @@ -51571,7 +51375,7 @@ i32.const 3440 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -51593,17 +51397,17 @@ i32.shl i32.add i32.load - local.set $1 + local.set $0 i32.const 4 global.set $~argumentsLength - local.get $0 local.get $1 + local.get $0 local.get $5 local.get $4 i32.const 3440 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $0 + local.set $1 local.get $5 i32.const 1 i32.sub @@ -51611,7 +51415,7 @@ br $for-loop|033 end end - local.get $0 + local.get $1 i32.const 6 i32.ne br_if $folding-inner5 @@ -51628,23 +51432,23 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Int64Array#__set @@ -51653,10 +51457,10 @@ i32.store offset=4 i64.const 0 local.set $13 - local.get $0 + local.get $1 i32.load offset=4 - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u @@ -51668,7 +51472,7 @@ i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $5 i32.const 3 i32.shl @@ -51680,7 +51484,7 @@ local.get $13 local.get $10 local.get $5 - local.get $0 + local.get $1 i32.const 3472 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) @@ -51709,23 +51513,23 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 i64.const 1 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i64.const 2 call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 2 i64.const 3 call $~lib/typedarray/Uint64Array#__set @@ -51734,10 +51538,10 @@ i32.store offset=4 i64.const 0 local.set $13 - local.get $0 + local.get $1 i32.load offset=4 - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u @@ -51749,7 +51553,7 @@ i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $5 i32.const 3 i32.shl @@ -51761,7 +51565,7 @@ local.get $13 local.get $10 local.get $5 - local.get $0 + local.get $1 i32.const 3504 i32.load call_indirect $0 (type $i64_i64_i32_i32_=>_i64) @@ -51790,23 +51594,23 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 2 f32.const 3 call $~lib/typedarray/Float32Array#__set @@ -51815,10 +51619,10 @@ i32.store offset=4 f32.const 0 local.set $14 - local.get $0 + local.get $1 i32.load offset=4 - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.load offset=8 i32.const 2 i32.shr_u @@ -51830,7 +51634,7 @@ i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $5 i32.const 2 i32.shl @@ -51842,7 +51646,7 @@ local.get $14 local.get $11 local.get $5 - local.get $0 + local.get $1 i32.const 3536 i32.load call_indirect $0 (type $f32_f32_i32_i32_=>_f32) @@ -51871,23 +51675,23 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 0 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 2 f64.const 3 call $~lib/typedarray/Float64Array#__set @@ -51896,10 +51700,10 @@ i32.store offset=4 f64.const 0 local.set $15 - local.get $0 + local.get $1 i32.load offset=4 - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.load offset=8 i32.const 3 i32.shr_u @@ -51911,7 +51715,7 @@ i32.const 0 i32.ge_s if - local.get $1 + local.get $0 local.get $5 i32.const 3 i32.shl @@ -51923,7 +51727,7 @@ local.get $15 local.get $12 local.get $5 - local.get $0 + local.get $1 i32.const 3568 i32.load call_indirect $0 (type $f64_f64_i32_i32_=>_f64) @@ -51952,13 +51756,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $5 @@ -51988,16 +51792,16 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store local.get $5 i32.load offset=4 - local.set $0 + local.set $1 local.get $5 i32.load offset=8 local.set $4 - local.get $1 + local.get $0 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new @@ -52014,17 +51818,17 @@ local.get $7 i32.gt_s if - local.get $0 + local.get $1 local.get $7 i32.add i32.load8_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength local.get $3 local.get $7 i32.add - local.get $1 + local.get $0 local.get $7 local.get $5 i32.const 3600 @@ -52090,13 +51894,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $5 @@ -52126,16 +51930,16 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store local.get $5 i32.load offset=4 - local.set $0 + local.set $1 local.get $5 i32.load offset=8 local.set $4 - local.get $1 + local.get $0 i32.const 12 i32.const 4 call $~lib/rt/itcms/__new @@ -52152,17 +51956,17 @@ local.get $7 i32.gt_s if - local.get $0 + local.get $1 local.get $7 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength local.get $3 local.get $7 i32.add - local.get $1 + local.get $0 local.get $7 local.get $5 i32.const 3632 @@ -52228,13 +52032,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $5 @@ -52264,16 +52068,16 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store local.get $5 i32.load offset=4 - local.set $0 + local.set $1 local.get $5 i32.load offset=8 local.set $4 - local.get $1 + local.get $0 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new @@ -52290,17 +52094,17 @@ local.get $7 i32.gt_s if - local.get $0 + local.get $1 local.get $7 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength local.get $3 local.get $7 i32.add - local.get $1 + local.get $0 local.get $7 local.get $5 i32.const 3664 @@ -52366,13 +52170,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $8 @@ -52402,7 +52206,7 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store local.get $8 @@ -52413,7 +52217,7 @@ i32.const 1 i32.shr_u local.set $3 - local.get $1 + local.get $0 i32.const 12 i32.const 6 call $~lib/rt/itcms/__new @@ -52437,16 +52241,16 @@ local.get $9 i32.const 1 i32.shl - local.tee $0 + local.tee $1 i32.add i32.load16_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $6 i32.add - local.get $1 + local.get $0 local.get $9 local.get $8 i32.const 3696 @@ -52512,13 +52316,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $8 @@ -52548,7 +52352,7 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store local.get $8 @@ -52559,7 +52363,7 @@ i32.const 1 i32.shr_u local.set $3 - local.get $1 + local.get $0 i32.const 12 i32.const 7 call $~lib/rt/itcms/__new @@ -52583,16 +52387,16 @@ local.get $9 i32.const 1 i32.shl - local.tee $0 + local.tee $1 i32.add i32.load16_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $6 i32.add - local.get $1 + local.get $0 local.get $9 local.get $8 i32.const 3728 @@ -52658,13 +52462,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $8 @@ -52694,7 +52498,7 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store local.get $8 @@ -52705,7 +52509,7 @@ i32.const 2 i32.shr_u local.set $3 - local.get $1 + local.get $0 i32.const 12 i32.const 8 call $~lib/rt/itcms/__new @@ -52729,16 +52533,16 @@ local.get $9 i32.const 2 i32.shl - local.tee $0 + local.tee $1 i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $6 i32.add - local.get $1 + local.get $0 local.get $9 local.get $8 i32.const 3760 @@ -52804,13 +52608,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $8 @@ -52840,7 +52644,7 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store local.get $8 @@ -52851,7 +52655,7 @@ i32.const 2 i32.shr_u local.set $3 - local.get $1 + local.get $0 i32.const 12 i32.const 9 call $~lib/rt/itcms/__new @@ -52875,16 +52679,16 @@ local.get $9 i32.const 2 i32.shl - local.tee $0 + local.tee $1 i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $6 i32.add - local.get $1 + local.get $0 local.get $9 local.get $8 i32.const 3792 @@ -52950,13 +52754,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $6 @@ -52986,7 +52790,7 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store local.get $6 @@ -52997,7 +52801,7 @@ i32.const 3 i32.shr_u local.set $4 - local.get $1 + local.get $0 i32.const 12 i32.const 10 call $~lib/rt/itcms/__new @@ -53007,7 +52811,7 @@ local.get $4 i32.const 3 i32.shl - local.tee $0 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new local.tee $5 @@ -53021,13 +52825,13 @@ local.get $7 i32.const 3 i32.shl - local.tee $1 + local.tee $0 i32.add i64.load local.set $10 i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $5 i32.add local.get $10 @@ -53054,7 +52858,7 @@ local.get $5 i32.store offset=4 local.get $8 - local.get $0 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -53096,13 +52900,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $6 @@ -53132,7 +52936,7 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store local.get $6 @@ -53143,7 +52947,7 @@ i32.const 3 i32.shr_u local.set $4 - local.get $1 + local.get $0 i32.const 12 i32.const 11 call $~lib/rt/itcms/__new @@ -53153,7 +52957,7 @@ local.get $4 i32.const 3 i32.shl - local.tee $0 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new local.tee $5 @@ -53167,13 +52971,13 @@ local.get $7 i32.const 3 i32.shl - local.tee $1 + local.tee $0 i32.add i64.load local.set $10 i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $5 i32.add local.get $10 @@ -53200,7 +53004,7 @@ local.get $5 i32.store offset=4 local.get $8 - local.get $0 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -53242,13 +53046,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $6 @@ -53278,7 +53082,7 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store local.get $6 @@ -53289,7 +53093,7 @@ i32.const 2 i32.shr_u local.set $4 - local.get $1 + local.get $0 i32.const 12 i32.const 12 call $~lib/rt/itcms/__new @@ -53299,7 +53103,7 @@ local.get $4 i32.const 2 i32.shl - local.tee $0 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new local.tee $5 @@ -53313,13 +53117,13 @@ local.get $7 i32.const 2 i32.shl - local.tee $1 + local.tee $0 i32.add f32.load local.set $11 i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $5 i32.add local.get $11 @@ -53346,7 +53150,7 @@ local.get $5 i32.store offset=4 local.get $8 - local.get $0 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -53388,13 +53192,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $6 @@ -53424,7 +53228,7 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store local.get $6 @@ -53435,7 +53239,7 @@ i32.const 3 i32.shr_u local.set $4 - local.get $1 + local.get $0 i32.const 12 i32.const 13 call $~lib/rt/itcms/__new @@ -53445,7 +53249,7 @@ local.get $4 i32.const 3 i32.shl - local.tee $0 + local.tee $1 i32.const 0 call $~lib/rt/itcms/__new local.tee $5 @@ -53459,13 +53263,13 @@ local.get $7 i32.const 3 i32.shl - local.tee $1 + local.tee $0 i32.add f64.load local.set $12 i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $0 local.get $5 i32.add local.get $12 @@ -53492,7 +53296,7 @@ local.get $5 i32.store offset=4 local.get $8 - local.get $0 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -53543,10 +53347,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $5 @@ -53567,7 +53371,7 @@ i32.const 4304 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $5 i32.load offset=4 @@ -53576,30 +53380,30 @@ i32.load offset=8 local.set $2 loop $for-loop|053 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 4304 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|053 end end @@ -53611,7 +53415,7 @@ i32.const 4336 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.055 (result i32) local.get $5 i32.load offset=4 @@ -53620,30 +53424,30 @@ i32.load offset=8 local.set $2 loop $for-loop|056 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 4336 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.055 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|056 end end @@ -53663,10 +53467,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $5 @@ -53687,7 +53491,7 @@ i32.const 4368 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $5 i32.load offset=4 @@ -53696,30 +53500,30 @@ i32.load offset=8 local.set $2 loop $for-loop|058 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 4368 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|058 end end @@ -53731,7 +53535,7 @@ i32.const 4400 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.060 (result i32) local.get $5 i32.load offset=4 @@ -53740,30 +53544,30 @@ i32.load offset=8 local.set $2 loop $for-loop|061 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 4400 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.060 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|061 end end @@ -53783,10 +53587,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $5 @@ -53807,7 +53611,7 @@ i32.const 4432 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.064 (result i32) local.get $5 i32.load offset=4 @@ -53816,30 +53620,30 @@ i32.load offset=8 local.set $2 loop $for-loop|065 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 4432 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.064 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|065 end end @@ -53851,7 +53655,7 @@ i32.const 4464 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.067 (result i32) local.get $5 i32.load offset=4 @@ -53860,30 +53664,30 @@ i32.load offset=8 local.set $2 loop $for-loop|068 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 4464 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.067 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|068 end end @@ -53903,10 +53707,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $5 @@ -53927,7 +53731,7 @@ i32.const 4496 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $5 i32.load offset=4 @@ -53938,32 +53742,32 @@ i32.shr_u local.set $2 loop $for-loop|070 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 4496 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|070 end end @@ -53975,7 +53779,7 @@ i32.const 4528 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.072 (result i32) local.get $5 i32.load offset=4 @@ -53986,32 +53790,32 @@ i32.shr_u local.set $2 loop $for-loop|073 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 4528 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.072 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|073 end end @@ -54031,10 +53835,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $5 @@ -54055,7 +53859,7 @@ i32.const 4560 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $5 i32.load offset=4 @@ -54066,32 +53870,32 @@ i32.shr_u local.set $2 loop $for-loop|075 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 4560 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|075 end end @@ -54103,7 +53907,7 @@ i32.const 4592 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.077 (result i32) local.get $5 i32.load offset=4 @@ -54114,32 +53918,32 @@ i32.shr_u local.set $2 loop $for-loop|078 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 4592 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.077 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|078 end end @@ -54159,10 +53963,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $5 @@ -54183,7 +53987,7 @@ i32.const 4624 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $5 i32.load offset=4 @@ -54194,32 +53998,32 @@ i32.shr_u local.set $2 loop $for-loop|080 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 4624 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|080 end end @@ -54231,7 +54035,7 @@ i32.const 4656 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.082 (result i32) local.get $5 i32.load offset=4 @@ -54242,32 +54046,32 @@ i32.shr_u local.set $2 loop $for-loop|083 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 4656 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.082 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|083 end end @@ -54287,10 +54091,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $5 @@ -54311,7 +54115,7 @@ i32.const 4688 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $5 i32.load offset=4 @@ -54322,32 +54126,32 @@ i32.shr_u local.set $2 loop $for-loop|085 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 4688 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|085 end end @@ -54359,7 +54163,7 @@ i32.const 4720 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.087 (result i32) local.get $5 i32.load offset=4 @@ -54370,32 +54174,32 @@ i32.shr_u local.set $2 loop $for-loop|088 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 1 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 4720 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.087 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|088 end end @@ -54415,10 +54219,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $3 @@ -54439,7 +54243,7 @@ i32.const 4752 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $3 i32.load offset=4 @@ -54448,14 +54252,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|090 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -54465,17 +54269,17 @@ global.set $~argumentsLength i32.const 1 local.get $10 - local.get $0 + local.get $1 local.get $3 i32.const 4752 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|090 end end @@ -54487,7 +54291,7 @@ i32.const 4784 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.092 (result i32) local.get $3 i32.load offset=4 @@ -54496,14 +54300,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|093 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -54513,17 +54317,17 @@ global.set $~argumentsLength i32.const 1 local.get $10 - local.get $0 + local.get $1 local.get $3 i32.const 4784 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.092 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|093 end end @@ -54543,10 +54347,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $3 @@ -54567,7 +54371,7 @@ i32.const 4816 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $3 i32.load offset=4 @@ -54576,14 +54380,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|095 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -54593,17 +54397,17 @@ global.set $~argumentsLength i32.const 1 local.get $10 - local.get $0 + local.get $1 local.get $3 i32.const 4816 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|095 end end @@ -54615,7 +54419,7 @@ i32.const 4848 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.097 (result i32) local.get $3 i32.load offset=4 @@ -54624,14 +54428,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|098 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -54641,17 +54445,17 @@ global.set $~argumentsLength i32.const 1 local.get $10 - local.get $0 + local.get $1 local.get $3 i32.const 4848 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.097 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|098 end end @@ -54671,10 +54475,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $3 @@ -54695,7 +54499,7 @@ i32.const 4880 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $3 i32.load offset=4 @@ -54704,14 +54508,14 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|0100 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -54721,17 +54525,17 @@ global.set $~argumentsLength i32.const 1 local.get $11 - local.get $0 + local.get $1 local.get $3 i32.const 4880 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0100 end end @@ -54743,7 +54547,7 @@ i32.const 4912 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0102 (result i32) local.get $3 i32.load offset=4 @@ -54752,14 +54556,14 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|0103 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -54769,17 +54573,17 @@ global.set $~argumentsLength i32.const 1 local.get $11 - local.get $0 + local.get $1 local.get $3 i32.const 4912 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0102 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0103 end end @@ -54799,10 +54603,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $3 @@ -54823,7 +54627,7 @@ i32.const 4944 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $3 i32.load offset=4 @@ -54832,14 +54636,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|0105 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -54849,17 +54653,17 @@ global.set $~argumentsLength i32.const 1 local.get $12 - local.get $0 + local.get $1 local.get $3 i32.const 4944 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0105 end end @@ -54871,7 +54675,7 @@ i32.const 4976 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0107 (result i32) local.get $3 i32.load offset=4 @@ -54880,14 +54684,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|0108 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -54897,17 +54701,17 @@ global.set $~argumentsLength i32.const 1 local.get $12 - local.get $0 + local.get $1 local.get $3 i32.const 4976 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0107 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0108 end end @@ -54927,10 +54731,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $3 @@ -54951,7 +54755,7 @@ i32.const 5008 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -54960,33 +54764,33 @@ local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 loop $for-loop|0110 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 5008 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0110 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne br_if $folding-inner8 @@ -54994,7 +54798,7 @@ i32.const 5040 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -55003,33 +54807,33 @@ local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0112 loop $for-loop|0113 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 5040 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0112 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0113 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne br_if $folding-inner9 @@ -55046,10 +54850,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $3 @@ -55070,7 +54874,7 @@ i32.const 5072 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -55079,33 +54883,33 @@ local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 loop $for-loop|0115 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 5072 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0115 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne br_if $folding-inner8 @@ -55113,7 +54917,7 @@ i32.const 5104 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -55122,33 +54926,33 @@ local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0117 loop $for-loop|0118 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 5104 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0117 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0118 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne br_if $folding-inner9 @@ -55165,10 +54969,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $3 @@ -55189,7 +54993,7 @@ i32.const 5136 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -55198,33 +55002,33 @@ local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0121 loop $for-loop|0122 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 5136 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0121 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0122 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne br_if $folding-inner8 @@ -55232,7 +55036,7 @@ i32.const 5168 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -55241,33 +55045,33 @@ local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0124 loop $for-loop|0125 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 5168 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0124 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0125 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne br_if $folding-inner9 @@ -55284,10 +55088,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $3 @@ -55308,7 +55112,7 @@ i32.const 5200 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -55319,35 +55123,35 @@ local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 loop $for-loop|0127 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 5200 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0127 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne br_if $folding-inner8 @@ -55355,7 +55159,7 @@ i32.const 5232 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -55366,35 +55170,35 @@ local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0129 loop $for-loop|0130 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 5232 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0129 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0130 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne br_if $folding-inner9 @@ -55411,10 +55215,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $3 @@ -55435,7 +55239,7 @@ i32.const 5264 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -55446,35 +55250,35 @@ local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 loop $for-loop|0132 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 5264 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0132 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne br_if $folding-inner8 @@ -55482,7 +55286,7 @@ i32.const 5296 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -55493,35 +55297,35 @@ local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0134 loop $for-loop|0135 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 5296 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0134 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0135 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne br_if $folding-inner9 @@ -55538,10 +55342,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $3 @@ -55562,7 +55366,7 @@ i32.const 5328 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -55573,35 +55377,35 @@ local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 loop $for-loop|0137 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 5328 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0137 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne br_if $folding-inner8 @@ -55609,7 +55413,7 @@ i32.const 5360 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -55620,35 +55424,35 @@ local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0139 loop $for-loop|0140 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 5360 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0139 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0140 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne br_if $folding-inner9 @@ -55665,10 +55469,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $3 @@ -55689,7 +55493,7 @@ i32.const 5392 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -55700,35 +55504,35 @@ local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 loop $for-loop|0142 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 5392 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0142 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne br_if $folding-inner8 @@ -55736,7 +55540,7 @@ i32.const 5424 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -55747,35 +55551,35 @@ local.set $2 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0144 loop $for-loop|0145 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 5424 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0144 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0145 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne br_if $folding-inner9 @@ -55792,10 +55596,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $4 @@ -55816,7 +55620,7 @@ i32.const 5456 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -55824,38 +55628,38 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 loop $for-loop|0147 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $4 i32.const 5456 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0147 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne br_if $folding-inner8 @@ -55863,7 +55667,7 @@ i32.const 5488 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -55871,38 +55675,38 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0149 loop $for-loop|0150 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $4 i32.const 5488 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0149 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0150 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne br_if $folding-inner9 @@ -55919,10 +55723,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $4 @@ -55943,7 +55747,7 @@ i32.const 5520 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -55951,38 +55755,38 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 loop $for-loop|0152 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $4 i32.const 5520 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0152 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne br_if $folding-inner8 @@ -55990,7 +55794,7 @@ i32.const 5552 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -55998,38 +55802,38 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0154 loop $for-loop|0155 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $4 i32.const 5552 i32.load call_indirect $0 (type $i64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0154 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0155 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne br_if $folding-inner9 @@ -56046,10 +55850,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $4 @@ -56070,7 +55874,7 @@ i32.const 5584 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -56078,38 +55882,38 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 loop $for-loop|0157 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add f32.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $4 i32.const 5584 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0157 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne br_if $folding-inner8 @@ -56117,7 +55921,7 @@ i32.const 5616 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -56125,38 +55929,38 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0159 loop $for-loop|0160 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add f32.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $4 i32.const 5616 i32.load call_indirect $0 (type $f32_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0159 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0160 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne br_if $folding-inner9 @@ -56173,10 +55977,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $4 @@ -56197,7 +56001,7 @@ i32.const 5648 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -56205,38 +56009,38 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 loop $for-loop|0162 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add f64.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $4 i32.const 5648 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0162 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne br_if $folding-inner8 @@ -56244,7 +56048,7 @@ i32.const 5680 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -56252,38 +56056,38 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0164 loop $for-loop|0165 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add f64.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $4 i32.const 5680 i32.load call_indirect $0 (type $f64_i32_i32_=>_i32) br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0164 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0165 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne br_if $folding-inner9 @@ -56300,10 +56104,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $5 @@ -56324,7 +56128,7 @@ i32.const 5712 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $5 i32.load offset=4 @@ -56333,20 +56137,20 @@ i32.load offset=8 local.set $2 loop $for-loop|0167 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 5712 i32.load @@ -56354,10 +56158,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0167 end end @@ -56369,7 +56173,7 @@ i32.const 5744 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0169 (result i32) local.get $5 i32.load offset=4 @@ -56378,20 +56182,20 @@ i32.load offset=8 local.set $2 loop $for-loop|0170 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 5744 i32.load @@ -56399,10 +56203,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0169 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0170 end end @@ -56422,10 +56226,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $5 @@ -56446,7 +56250,7 @@ i32.const 5776 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $5 i32.load offset=4 @@ -56455,20 +56259,20 @@ i32.load offset=8 local.set $2 loop $for-loop|0172 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 5776 i32.load @@ -56476,10 +56280,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0172 end end @@ -56491,7 +56295,7 @@ i32.const 5808 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0174 (result i32) local.get $5 i32.load offset=4 @@ -56500,20 +56304,20 @@ i32.load offset=8 local.set $2 loop $for-loop|0175 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 5808 i32.load @@ -56521,10 +56325,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0174 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0175 end end @@ -56544,10 +56348,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $5 @@ -56568,7 +56372,7 @@ i32.const 5840 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0178 (result i32) local.get $5 i32.load offset=4 @@ -56577,20 +56381,20 @@ i32.load offset=8 local.set $2 loop $for-loop|0179 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 5840 i32.load @@ -56598,10 +56402,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0178 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0179 end end @@ -56613,7 +56417,7 @@ i32.const 5872 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0181 (result i32) local.get $5 i32.load offset=4 @@ -56622,20 +56426,20 @@ i32.load offset=8 local.set $2 loop $for-loop|0182 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 5872 i32.load @@ -56643,10 +56447,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0181 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0182 end end @@ -56666,10 +56470,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $5 @@ -56690,7 +56494,7 @@ i32.const 5904 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $5 i32.load offset=4 @@ -56701,22 +56505,22 @@ i32.shr_u local.set $2 loop $for-loop|0184 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 5904 i32.load @@ -56724,10 +56528,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0184 end end @@ -56739,7 +56543,7 @@ i32.const 5936 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0186 (result i32) local.get $5 i32.load offset=4 @@ -56750,22 +56554,22 @@ i32.shr_u local.set $2 loop $for-loop|0187 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_s - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 5936 i32.load @@ -56773,10 +56577,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0186 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0187 end end @@ -56796,10 +56600,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $5 @@ -56820,7 +56624,7 @@ i32.const 5968 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $5 i32.load offset=4 @@ -56831,22 +56635,22 @@ i32.shr_u local.set $2 loop $for-loop|0189 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 5968 i32.load @@ -56854,10 +56658,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0189 end end @@ -56869,7 +56673,7 @@ i32.const 6000 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0191 (result i32) local.get $5 i32.load offset=4 @@ -56880,22 +56684,22 @@ i32.shr_u local.set $2 loop $for-loop|0192 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_u - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 6000 i32.load @@ -56903,10 +56707,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0191 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0192 end end @@ -56926,10 +56730,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $5 @@ -56950,7 +56754,7 @@ i32.const 6032 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $5 i32.load offset=4 @@ -56961,22 +56765,22 @@ i32.shr_u local.set $2 loop $for-loop|0194 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 6032 i32.load @@ -56984,10 +56788,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0194 end end @@ -56999,7 +56803,7 @@ i32.const 6064 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0196 (result i32) local.get $5 i32.load offset=4 @@ -57010,22 +56814,22 @@ i32.shr_u local.set $2 loop $for-loop|0197 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 6064 i32.load @@ -57033,10 +56837,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0196 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0197 end end @@ -57056,10 +56860,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $5 @@ -57080,7 +56884,7 @@ i32.const 6096 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $5 i32.load offset=4 @@ -57091,22 +56895,22 @@ i32.shr_u local.set $2 loop $for-loop|0199 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 6096 i32.load @@ -57114,10 +56918,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0199 end end @@ -57129,7 +56933,7 @@ i32.const 6128 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0201 (result i32) local.get $5 i32.load offset=4 @@ -57140,22 +56944,22 @@ i32.shr_u local.set $2 loop $for-loop|0202 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load - local.set $1 + local.set $0 i32.const 3 global.set $~argumentsLength i32.const 0 - local.get $1 local.get $0 + local.get $1 local.get $5 i32.const 6128 i32.load @@ -57163,10 +56967,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0201 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0202 end end @@ -57186,10 +56990,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $3 @@ -57210,7 +57014,7 @@ i32.const 6160 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $3 i32.load offset=4 @@ -57219,14 +57023,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|0204 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -57236,7 +57040,7 @@ global.set $~argumentsLength i32.const 0 local.get $10 - local.get $0 + local.get $1 local.get $3 i32.const 6160 i32.load @@ -57244,10 +57048,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0204 end end @@ -57259,7 +57063,7 @@ i32.const 6192 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0206 (result i32) local.get $3 i32.load offset=4 @@ -57268,14 +57072,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|0207 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -57285,7 +57089,7 @@ global.set $~argumentsLength i32.const 0 local.get $10 - local.get $0 + local.get $1 local.get $3 i32.const 6192 i32.load @@ -57293,10 +57097,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0206 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0207 end end @@ -57316,10 +57120,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $3 @@ -57340,7 +57144,7 @@ i32.const 6224 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $3 i32.load offset=4 @@ -57349,14 +57153,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|0209 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -57366,7 +57170,7 @@ global.set $~argumentsLength i32.const 0 local.get $10 - local.get $0 + local.get $1 local.get $3 i32.const 6224 i32.load @@ -57374,10 +57178,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0209 end end @@ -57389,7 +57193,7 @@ i32.const 6256 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0211 (result i32) local.get $3 i32.load offset=4 @@ -57398,14 +57202,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|0212 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -57415,7 +57219,7 @@ global.set $~argumentsLength i32.const 0 local.get $10 - local.get $0 + local.get $1 local.get $3 i32.const 6256 i32.load @@ -57423,10 +57227,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0211 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0212 end end @@ -57446,10 +57250,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $3 @@ -57470,7 +57274,7 @@ i32.const 6288 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $3 i32.load offset=4 @@ -57479,14 +57283,14 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|0214 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -57496,7 +57300,7 @@ global.set $~argumentsLength i32.const 0 local.get $11 - local.get $0 + local.get $1 local.get $3 i32.const 6288 i32.load @@ -57504,10 +57308,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0214 end end @@ -57519,7 +57323,7 @@ i32.const 6320 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0216 (result i32) local.get $3 i32.load offset=4 @@ -57528,14 +57332,14 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|0217 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -57545,7 +57349,7 @@ global.set $~argumentsLength i32.const 0 local.get $11 - local.get $0 + local.get $1 local.get $3 i32.const 6320 i32.load @@ -57553,10 +57357,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0216 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0217 end end @@ -57576,10 +57380,10 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $3 @@ -57600,7 +57404,7 @@ i32.const 6352 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $3 i32.load offset=4 @@ -57609,14 +57413,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|0219 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -57626,7 +57430,7 @@ global.set $~argumentsLength i32.const 0 local.get $12 - local.get $0 + local.get $1 local.get $3 i32.const 6352 i32.load @@ -57634,10 +57438,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0219 end end @@ -57649,7 +57453,7 @@ i32.const 6384 i32.store offset=4 i32.const 0 - local.set $0 + local.set $1 block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0221 (result i32) local.get $3 i32.load offset=4 @@ -57658,14 +57462,14 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|0222 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -57675,7 +57479,7 @@ global.set $~argumentsLength i32.const 0 local.get $12 - local.get $0 + local.get $1 local.get $3 i32.const 6384 i32.load @@ -57683,10 +57487,10 @@ i32.eqz br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0221 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0222 end end @@ -57706,15 +57510,15 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 i32.const 0 global.set $std/typedarray/forEachCallCount - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $3 @@ -57755,7 +57559,7 @@ i32.const 6496 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -57763,25 +57567,25 @@ i32.load offset=8 local.set $2 loop $for-loop|043 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_s i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 6496 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|043 end end @@ -57802,15 +57606,15 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 i32.const 0 global.set $std/typedarray/forEachCallCount - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $3 @@ -57854,7 +57658,7 @@ i32.const 6528 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -57862,25 +57666,25 @@ i32.load offset=8 local.set $2 loop $for-loop|0225 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 6528 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0225 end end @@ -57901,15 +57705,15 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 i32.const 0 global.set $std/typedarray/forEachCallCount - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $3 @@ -57953,7 +57757,7 @@ i32.const 6560 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -57961,25 +57765,25 @@ i32.load offset=8 local.set $2 loop $for-loop|0228 - local.get $0 + local.get $1 local.get $2 i32.lt_s if - local.get $0 + local.get $1 local.get $4 i32.add i32.load8_u i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 6560 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0228 end end @@ -58000,15 +57804,15 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 i32.const 0 global.set $std/typedarray/forEachCallCount - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $3 @@ -58049,7 +57853,7 @@ i32.const 6592 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -58059,27 +57863,27 @@ i32.shr_u local.set $2 loop $for-loop|045 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_s i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 6592 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|045 end end @@ -58100,15 +57904,15 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 i32.const 0 global.set $std/typedarray/forEachCallCount - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $3 @@ -58152,7 +57956,7 @@ i32.const 6624 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -58162,27 +57966,27 @@ i32.shr_u local.set $2 loop $for-loop|047 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 1 i32.shl i32.add i32.load16_u i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 6624 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|047 end end @@ -58203,15 +58007,15 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 i32.const 0 global.set $std/typedarray/forEachCallCount - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $3 @@ -58249,7 +58053,7 @@ i32.const 6656 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -58259,27 +58063,27 @@ i32.shr_u local.set $2 loop $for-loop|049 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 6656 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|049 end end @@ -58300,15 +58104,15 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 i32.const 0 global.set $std/typedarray/forEachCallCount - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $3 @@ -58346,7 +58150,7 @@ i32.const 6688 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 local.get $3 i32.load offset=4 local.set $4 @@ -58356,27 +58160,27 @@ i32.shr_u local.set $2 loop $for-loop|051 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $3 i32.const 6688 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|051 end end @@ -58397,15 +58201,15 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 i32.const 0 global.set $std/typedarray/forEachCallCount - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $4 @@ -58446,7 +58250,7 @@ i32.const 6720 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -58454,29 +58258,29 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|053234 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $4 i32.const 6720 i32.load call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|053234 end end @@ -58497,15 +58301,15 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 i32.const 0 global.set $std/typedarray/forEachCallCount - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $4 @@ -58546,7 +58350,7 @@ i32.const 6752 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -58554,29 +58358,29 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|055 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add i64.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $4 i32.const 6752 i32.load call_indirect $0 (type $i64_i32_i32_=>_none) - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|055 end end @@ -58597,15 +58401,15 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 i32.const 0 global.set $std/typedarray/forEachCallCount - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $4 @@ -58646,7 +58450,7 @@ i32.const 6784 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -58654,29 +58458,29 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|057 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add f32.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $4 i32.const 6784 i32.load call_indirect $0 (type $f32_i32_i32_=>_none) - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|057 end end @@ -58697,15 +58501,15 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 i32.const 0 global.set $std/typedarray/forEachCallCount - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor local.tee $4 @@ -58746,7 +58550,7 @@ i32.const 6816 i32.store offset=8 i32.const 0 - local.set $0 + local.set $1 local.get $4 i32.load offset=4 local.set $2 @@ -58754,29 +58558,29 @@ i32.load offset=8 i32.const 3 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|059 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if local.get $2 - local.get $0 + local.get $1 i32.const 3 i32.shl i32.add f64.load i32.const 3 global.set $~argumentsLength - local.get $0 + local.get $1 local.get $4 i32.const 6816 i32.load call_indirect $0 (type $f64_i32_i32_=>_none) - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|059 end end @@ -58820,9 +58624,9 @@ f64.const nan:0x8000000000000 call $~lib/typedarray/Float64Array#__set i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $3 i32.load offset=8 @@ -58838,13 +58642,13 @@ i32.load offset=4 local.set $2 loop $while-continue|0 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 3 i32.shl i32.add @@ -58852,17 +58656,17 @@ f64.const nan:0x8000000000000 f64.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -58875,7 +58679,7 @@ end block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) i32.const 0 - local.set $0 + local.set $1 i32.const 0 local.get $3 i32.load offset=8 @@ -58890,16 +58694,16 @@ drop local.get $3 i32.load offset=4 - local.set $1 + local.set $0 loop $while-continue|0238 - local.get $0 + local.get $1 local.get $2 i32.lt_s if i32.const 1 i32.const 1 - local.get $1 local.get $0 + local.get $1 i32.const 3 i32.shl i32.add @@ -58913,10 +58717,10 @@ select br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|0238 end end @@ -58941,9 +58745,9 @@ f32.const nan:0x400000 call $~lib/typedarray/Float32Array#__set i32.const 0 - local.set $1 - i32.const -1 local.set $0 + i32.const -1 + local.set $1 block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $3 i32.load offset=8 @@ -58959,13 +58763,13 @@ i32.load offset=4 local.set $2 loop $while-continue|0239 - local.get $1 + local.get $0 local.get $4 i32.lt_s if local.get $2 - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl i32.add @@ -58973,17 +58777,17 @@ f32.const nan:0x400000 f32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|0239 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -58996,7 +58800,7 @@ end block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) i32.const 0 - local.set $0 + local.set $1 i32.const 0 local.get $3 i32.load offset=8 @@ -59011,16 +58815,16 @@ drop local.get $3 i32.load offset=4 - local.set $1 + local.set $0 loop $while-continue|062 - local.get $0 + local.get $1 local.get $2 i32.lt_s if i32.const 1 i32.const 1 - local.get $1 local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -59034,10 +58838,10 @@ select br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|062 end end @@ -59061,13 +58865,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 5 call $~lib/typedarray/Int8Array#constructor local.tee $2 @@ -59097,15 +58901,15 @@ i32.store offset=12 local.get $2 call $~lib/typedarray/Int8Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59119,27 +58923,27 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8880 i32.store local.get $2 call $~lib/typedarray/Int8Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59157,13 +58961,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 5 call $~lib/typedarray/Uint8Array#constructor local.tee $2 @@ -59193,30 +58997,30 @@ i32.store offset=12 local.get $2 call $~lib/typedarray/Uint8Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz br_if $folding-inner20 local.get $2 call $~lib/typedarray/Uint8Array#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59234,13 +59038,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $2 @@ -59270,30 +59074,30 @@ i32.store offset=12 local.get $2 call $~lib/typedarray/Uint8Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz br_if $folding-inner20 local.get $2 call $~lib/typedarray/Uint8Array#toString - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59311,13 +59115,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 5 call $~lib/typedarray/Int16Array#constructor local.tee $2 @@ -59347,15 +59151,15 @@ i32.store offset=12 local.get $2 call $~lib/typedarray/Int16Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59369,27 +59173,27 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8880 i32.store local.get $2 call $~lib/typedarray/Int16Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59407,13 +59211,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 5 call $~lib/typedarray/Uint16Array#constructor local.tee $2 @@ -59443,15 +59247,15 @@ i32.store offset=12 local.get $2 call $~lib/typedarray/Uint16Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59465,27 +59269,27 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8880 i32.store local.get $2 call $~lib/typedarray/Uint16Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59503,13 +59307,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 5 call $~lib/typedarray/Int32Array#constructor local.tee $2 @@ -59539,15 +59343,15 @@ i32.store offset=12 local.get $2 call $~lib/typedarray/Int32Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59561,27 +59365,27 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8880 i32.store local.get $2 call $~lib/typedarray/Int32Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59599,13 +59403,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 5 call $~lib/typedarray/Uint32Array#constructor local.tee $2 @@ -59635,15 +59439,15 @@ i32.store offset=12 local.get $2 call $~lib/typedarray/Uint32Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59657,27 +59461,27 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8880 i32.store local.get $2 call $~lib/typedarray/Uint32Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59695,13 +59499,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 5 call $~lib/typedarray/Int64Array#constructor local.tee $2 @@ -59731,15 +59535,15 @@ i32.store offset=12 local.get $2 call $~lib/typedarray/Int64Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59753,27 +59557,27 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8880 i32.store local.get $2 call $~lib/typedarray/Int64Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59791,13 +59595,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 5 call $~lib/typedarray/Uint64Array#constructor local.tee $2 @@ -59827,15 +59631,15 @@ i32.store offset=12 local.get $2 call $~lib/typedarray/Uint64Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59849,27 +59653,27 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8880 i32.store local.get $2 call $~lib/typedarray/Uint64Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 8912 i32.store offset=8 - local.get $0 + local.get $1 i32.const 8912 call $~lib/string/String.__eq i32.eqz @@ -59887,13 +59691,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 5 call $~lib/typedarray/Float32Array#constructor local.tee $2 @@ -59923,15 +59727,15 @@ i32.store offset=12 local.get $2 call $~lib/typedarray/Float32Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 10096 i32.store offset=8 - local.get $0 + local.get $1 i32.const 10096 call $~lib/string/String.__eq i32.eqz @@ -59945,27 +59749,27 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8880 i32.store local.get $2 call $~lib/typedarray/Float32Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 10096 i32.store offset=8 - local.get $0 + local.get $1 i32.const 10096 call $~lib/string/String.__eq i32.eqz @@ -59983,13 +59787,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 5 call $~lib/typedarray/Float64Array#constructor local.tee $2 @@ -60019,15 +59823,15 @@ i32.store offset=12 local.get $2 call $~lib/typedarray/Float64Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 10096 i32.store offset=8 - local.get $0 + local.get $1 i32.const 10096 call $~lib/string/String.__eq i32.eqz @@ -60041,27 +59845,27 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store - local.get $1 + local.get $0 i32.const 8880 i32.store local.get $2 call $~lib/typedarray/Float64Array#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store offset=4 + local.tee $0 local.get $1 + i32.store offset=4 + local.get $0 i32.const 10096 i32.store offset=8 - local.get $0 + local.get $1 i32.const 10096 call $~lib/string/String.__eq i32.eqz @@ -60073,17 +59877,17 @@ global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $0 i32.store offset=12 i32.const 2 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Uint8Array.wrap@varargs - local.tee $1 + local.tee $0 i32.store offset=24 - local.get $1 + local.get $0 i32.load offset=8 if i32.const 0 @@ -60096,17 +59900,17 @@ global.get $~lib/memory/__stack_pointer i32.const 2 call $~lib/arraybuffer/ArrayBuffer#constructor - local.tee $1 + local.tee $0 i32.store offset=12 i32.const 2 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 2 call $~lib/typedarray/Uint8Array.wrap@varargs - local.tee $1 + local.tee $0 i32.store offset=24 - local.get $1 + local.get $0 i32.load offset=8 if i32.const 0 @@ -60127,19 +59931,19 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 10224 i32.store - local.get $1 + local.get $0 i32.const 10236 i32.load local.tee $4 @@ -60166,13 +59970,13 @@ end end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 local.get $5 i32.load - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $0 local.get $1 + local.get $0 local.get $5 i32.load offset=4 local.get $5 @@ -60201,30 +60005,30 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store local.get $3 i32.const 20 i32.sub i32.load offset=16 - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 local.get $3 i32.store - local.get $0 + local.get $1 local.get $3 call $~lib/rt/itcms/__link - local.get $0 local.get $1 - i32.store offset=8 local.get $0 + i32.store offset=8 + local.get $1 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -60232,7 +60036,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $2 - local.get $0 + local.get $1 i32.store offset=16 i32.const 0 local.set $2 @@ -60244,7 +60048,7 @@ local.get $5 local.get $2 call $~lib/typedarray/Int8Array#__get - local.get $0 + local.get $1 local.get $2 call $~lib/typedarray/Int8Array#__get i32.ne @@ -60261,7 +60065,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60271,19 +60075,19 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 10224 i32.store - local.get $1 + local.get $0 i32.const 10236 i32.load local.tee $2 @@ -60291,33 +60095,33 @@ local.tee $4 i32.store offset=4 loop $for-loop|040 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 + local.get $1 i32.const 10224 - local.get $0 + local.get $1 call $~lib/array/Array#__get i32.const 255 i32.and call $~lib/typedarray/Uint8Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|040 end end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 local.get $4 i32.load - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $0 local.get $1 + local.get $0 local.get $4 i32.load offset=4 local.get $4 @@ -60332,35 +60136,35 @@ i32.sub i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.tee $1 + local.tee $0 i32.store offset=12 i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Uint8Array.wrap@varargs - local.tee $1 + local.tee $0 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|11 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $4 - local.get $0 - call $~lib/typedarray/Uint8Array#__get local.get $1 + call $~lib/typedarray/Uint8Array#__get local.get $0 + local.get $1 call $~lib/typedarray/Uint8Array#__get i32.ne br_if $folding-inner13 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|11 end end @@ -60379,19 +60183,19 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 10224 i32.store - local.get $1 + local.get $0 i32.const 10236 i32.load local.tee $4 @@ -60419,13 +60223,13 @@ end end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 local.get $5 i32.load - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $0 local.get $1 + local.get $0 local.get $5 i32.load offset=4 local.get $5 @@ -60454,30 +60258,30 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store local.get $3 i32.const 20 i32.sub i32.load offset=16 - local.set $1 - local.get $0 + local.set $0 + local.get $1 i32.const 12 i32.const 5 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 local.get $3 i32.store - local.get $0 + local.get $1 local.get $3 call $~lib/rt/itcms/__link - local.get $0 local.get $1 - i32.store offset=8 local.get $0 + i32.store offset=8 + local.get $1 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -60485,7 +60289,7 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $2 - local.get $0 + local.get $1 i32.store offset=16 i32.const 0 local.set $2 @@ -60497,7 +60301,7 @@ local.get $5 local.get $2 call $~lib/typedarray/Uint8ClampedArray#__get - local.get $0 + local.get $1 local.get $2 call $~lib/typedarray/Uint8ClampedArray#__get i32.ne @@ -60514,7 +60318,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60524,19 +60328,19 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 10224 i32.store - local.get $1 + local.get $0 i32.const 10236 i32.load local.tee $2 @@ -60544,32 +60348,32 @@ local.tee $5 i32.store offset=4 loop $for-loop|032 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 i32.const 10224 - local.get $0 + local.get $1 call $~lib/array/Array#__get i32.extend16_s call $~lib/typedarray/Int16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|032 end end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 local.get $5 i32.load - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $0 local.get $1 + local.get $0 local.get $5 i32.load offset=4 local.get $5 @@ -60589,7 +60393,7 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -60604,7 +60408,7 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $1 + local.tee $0 i32.const 1 i32.and br_if $folding-inner30 @@ -60621,7 +60425,7 @@ local.get $4 call $~lib/rt/itcms/__link local.get $3 - local.get $1 + local.get $0 i32.store offset=8 local.get $3 local.get $4 @@ -60630,28 +60434,28 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 local.get $3 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|133 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 call $~lib/typedarray/Int16Array#__get local.get $3 - local.get $0 + local.get $1 call $~lib/typedarray/Int16Array#__get i32.ne br_if $folding-inner13 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|133 end end @@ -60660,7 +60464,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60670,19 +60474,19 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 10224 i32.store - local.get $1 + local.get $0 i32.const 10236 i32.load local.tee $2 @@ -60690,33 +60494,33 @@ local.tee $5 i32.store offset=4 loop $for-loop|036 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 i32.const 10224 - local.get $0 + local.get $1 call $~lib/array/Array#__get i32.const 65535 i32.and call $~lib/typedarray/Uint16Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|036 end end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 local.get $5 i32.load - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $0 local.get $1 + local.get $0 local.get $5 i32.load offset=4 local.get $5 @@ -60736,7 +60540,7 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -60751,7 +60555,7 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $1 + local.tee $0 i32.const 1 i32.and br_if $folding-inner30 @@ -60768,7 +60572,7 @@ local.get $4 call $~lib/rt/itcms/__link local.get $3 - local.get $1 + local.get $0 i32.store offset=8 local.get $3 local.get $4 @@ -60777,28 +60581,28 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 local.get $3 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|137 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 call $~lib/typedarray/Uint16Array#__get local.get $3 - local.get $0 + local.get $1 call $~lib/typedarray/Uint16Array#__get i32.ne br_if $folding-inner13 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|137 end end @@ -60807,7 +60611,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60817,19 +60621,19 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 10224 i32.store - local.get $1 + local.get $0 i32.const 10236 i32.load local.tee $2 @@ -60837,31 +60641,31 @@ local.tee $5 i32.store offset=4 loop $for-loop|044 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 i32.const 10224 - local.get $0 + local.get $1 call $~lib/array/Array#__get call $~lib/typedarray/Int32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|044 end end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 local.get $5 i32.load - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $0 local.get $1 + local.get $0 local.get $5 i32.load offset=4 local.get $5 @@ -60881,7 +60685,7 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -60896,7 +60700,7 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $1 + local.tee $0 i32.const 3 i32.and br_if $folding-inner30 @@ -60913,7 +60717,7 @@ local.get $4 call $~lib/rt/itcms/__link local.get $3 - local.get $1 + local.get $0 i32.store offset=8 local.get $3 local.get $4 @@ -60922,28 +60726,28 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 local.get $3 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|145 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 call $~lib/typedarray/Int32Array#__get local.get $3 - local.get $0 + local.get $1 call $~lib/typedarray/Int32Array#__get i32.ne br_if $folding-inner13 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|145 end end @@ -60952,7 +60756,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -60962,19 +60766,19 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 10224 i32.store - local.get $1 + local.get $0 i32.const 10236 i32.load local.tee $2 @@ -60982,31 +60786,31 @@ local.tee $5 i32.store offset=4 loop $for-loop|048 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 i32.const 10224 - local.get $0 + local.get $1 call $~lib/array/Array#__get call $~lib/typedarray/Uint32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|048 end end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 local.get $5 i32.load - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $0 local.get $1 + local.get $0 local.get $5 i32.load offset=4 local.get $5 @@ -61026,7 +60830,7 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -61041,7 +60845,7 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $1 + local.tee $0 i32.const 3 i32.and br_if $folding-inner30 @@ -61058,7 +60862,7 @@ local.get $4 call $~lib/rt/itcms/__link local.get $3 - local.get $1 + local.get $0 i32.store offset=8 local.get $3 local.get $4 @@ -61067,28 +60871,28 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 local.get $3 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|149 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 call $~lib/typedarray/Uint32Array#__get local.get $3 - local.get $0 + local.get $1 call $~lib/typedarray/Uint32Array#__get i32.ne br_if $folding-inner13 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|149 end end @@ -61097,7 +60901,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -61107,19 +60911,19 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 10224 i32.store - local.get $1 + local.get $0 i32.const 10236 i32.load local.tee $2 @@ -61127,32 +60931,32 @@ local.tee $5 i32.store offset=4 loop $for-loop|052 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 i32.const 10224 - local.get $0 + local.get $1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|052 end end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 local.get $5 i32.load - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $0 local.get $1 + local.get $0 local.get $5 i32.load offset=4 local.get $5 @@ -61172,7 +60976,7 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -61187,7 +60991,7 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $1 + local.tee $0 i32.const 7 i32.and br_if $folding-inner30 @@ -61204,7 +61008,7 @@ local.get $4 call $~lib/rt/itcms/__link local.get $3 - local.get $1 + local.get $0 i32.store offset=8 local.get $3 local.get $4 @@ -61213,28 +61017,28 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 local.get $3 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|153 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 call $~lib/typedarray/Int64Array#__get local.get $3 - local.get $0 + local.get $1 call $~lib/typedarray/Int64Array#__get i64.ne br_if $folding-inner13 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|153 end end @@ -61243,7 +61047,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -61253,19 +61057,19 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 10224 i32.store - local.get $1 + local.get $0 i32.const 10236 i32.load local.tee $2 @@ -61273,32 +61077,32 @@ local.tee $5 i32.store offset=4 loop $for-loop|060 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 i32.const 10224 - local.get $0 + local.get $1 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Uint64Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|060 end end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 local.get $5 i32.load - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $0 local.get $1 + local.get $0 local.get $5 i32.load offset=4 local.get $5 @@ -61318,7 +61122,7 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -61333,7 +61137,7 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $1 + local.tee $0 i32.const 7 i32.and br_if $folding-inner30 @@ -61350,7 +61154,7 @@ local.get $4 call $~lib/rt/itcms/__link local.get $3 - local.get $1 + local.get $0 i32.store offset=8 local.get $3 local.get $4 @@ -61359,28 +61163,28 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 local.get $3 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|161 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 call $~lib/typedarray/Uint64Array#__get local.get $3 - local.get $0 + local.get $1 call $~lib/typedarray/Uint64Array#__get i64.ne br_if $folding-inner13 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|161 end end @@ -61389,7 +61193,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -61399,19 +61203,19 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 10224 i32.store - local.get $1 + local.get $0 i32.const 10236 i32.load local.tee $2 @@ -61419,32 +61223,32 @@ local.tee $5 i32.store offset=4 loop $for-loop|063 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 i32.const 10224 - local.get $0 + local.get $1 call $~lib/array/Array#__get f32.convert_i32_s call $~lib/typedarray/Float32Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|063 end end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 local.get $5 i32.load - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $0 local.get $1 + local.get $0 local.get $5 i32.load offset=4 local.get $5 @@ -61464,7 +61268,7 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -61479,7 +61283,7 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $1 + local.tee $0 i32.const 3 i32.and br_if $folding-inner30 @@ -61496,7 +61300,7 @@ local.get $4 call $~lib/rt/itcms/__link local.get $3 - local.get $1 + local.get $0 i32.store offset=8 local.get $3 local.get $4 @@ -61505,28 +61309,28 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 local.get $3 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|164 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 call $~lib/typedarray/Float32Array#__get local.get $3 - local.get $0 + local.get $1 call $~lib/typedarray/Float32Array#__get f32.ne br_if $folding-inner13 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|164 end end @@ -61535,7 +61339,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 20 i32.sub @@ -61545,19 +61349,19 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i64.const 0 i64.store offset=8 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 10224 i32.store - local.get $1 + local.get $0 i32.const 10236 i32.load local.tee $2 @@ -61565,32 +61369,32 @@ local.tee $5 i32.store offset=4 loop $for-loop|066 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 i32.const 10224 - local.get $0 + local.get $1 call $~lib/array/Array#__get f64.convert_i32_s call $~lib/typedarray/Float64Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|066 end end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 local.get $5 i32.load - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $0 local.get $1 + local.get $0 local.get $5 i32.load offset=4 local.get $5 @@ -61610,7 +61414,7 @@ i32.const 1 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -61625,7 +61429,7 @@ i32.const 20 i32.sub i32.load offset=16 - local.tee $1 + local.tee $0 i32.const 7 i32.and br_if $folding-inner30 @@ -61642,7 +61446,7 @@ local.get $4 call $~lib/rt/itcms/__link local.get $3 - local.get $1 + local.get $0 i32.store offset=8 local.get $3 local.get $4 @@ -61651,28 +61455,28 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $1 local.get $3 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 loop $for-loop|167 - local.get $0 + local.get $1 local.get $2 i32.lt_s if local.get $5 - local.get $0 + local.get $1 call $~lib/typedarray/Float64Array#__get local.get $3 - local.get $0 + local.get $1 call $~lib/typedarray/Float64Array#__get f64.ne br_if $folding-inner13 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|167 end end @@ -61699,17 +61503,17 @@ global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/typedarray/Float32Array#constructor - local.tee $1 + local.tee $0 i32.store offset=12 - local.get $1 + local.get $0 i32.const 0 f32.const 400 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 1 f32.const nan:0x400000 call $~lib/typedarray/Float32Array#__set - local.get $1 + local.get $0 i32.const 2 f32.const inf call $~lib/typedarray/Float32Array#__set @@ -61751,7 +61555,7 @@ local.set $9 local.get $8 i32.load offset=8 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -61764,16 +61568,16 @@ i32.const 1 i32.add local.set $4 - local.get $1 + local.get $0 i32.load offset=4 local.set $2 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.set $0 + local.set $1 loop $for-loop|0242 - local.get $0 + local.get $1 local.get $9 i32.gt_s if @@ -61814,7 +61618,7 @@ i32.const 4 call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> i32.const 0 - local.set $0 + local.set $1 local.get $8 i32.load offset=8 local.get $5 @@ -61837,17 +61641,17 @@ i32.load offset=8 i32.const 2 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|0243 local.get $0 local.get $1 - i32.lt_s + i32.gt_s if - local.get $0 + local.get $1 local.get $4 i32.add local.get $2 - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add @@ -61866,10 +61670,10 @@ i32.or i32.and i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0243 end end @@ -61878,31 +61682,31 @@ i32.const 63 i32.const 14576 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $8 - local.get $1 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> global.get $~lib/memory/__stack_pointer i32.const 4 call $~lib/typedarray/Uint32Array#constructor - local.tee $1 + local.tee $0 i32.store offset=28 - local.get $1 + local.get $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 1 i32.const 300 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 2 i32.const 100 call $~lib/typedarray/Uint32Array#__set - local.get $1 + local.get $0 i32.const 3 i32.const -1 call $~lib/typedarray/Uint32Array#__set @@ -61931,7 +61735,7 @@ local.set $3 local.get $8 i32.load offset=8 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u @@ -61940,16 +61744,16 @@ local.get $8 i32.load offset=4 local.set $4 - local.get $1 + local.get $0 i32.load offset=4 local.set $2 - local.get $1 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - local.set $0 + local.set $1 loop $for-loop|0244 - local.get $0 + local.get $1 local.get $3 i32.gt_s if @@ -61963,8 +61767,8 @@ i32.shl i32.add i32.load - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 255 i32.gt_u select @@ -61985,15 +61789,15 @@ i32.const 63 i32.const 14608 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 local.get $8 - local.get $1 + local.get $0 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -62003,13 +61807,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#constructor local.tee $2 @@ -62029,7 +61833,7 @@ i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -62049,35 +61853,37 @@ unreachable end i32.const 14640 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 14640 i32.store end local.get $2 - local.get $0 - call $~lib/typedarray/Int8Array#sort - local.set $0 + i32.load offset=4 + local.get $2 + i32.load offset=8 + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 1 i32.ne br_if $folding-inner24 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 2 i32.ne br_if $folding-inner25 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 3 @@ -62086,23 +61892,25 @@ global.get $~lib/memory/__stack_pointer i32.const 14672 i32.store offset=8 - local.get $0 + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=8 i32.const 14672 - call $~lib/typedarray/Int8Array#sort - drop - local.get $0 + call $~lib/util/sort/SORT + local.get $2 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 3 i32.ne br_if $folding-inner27 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 2 i32.ne br_if $folding-inner28 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 1 @@ -62113,7 +61921,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -62123,13 +61931,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8Array#constructor local.tee $2 @@ -62149,7 +61957,7 @@ i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -62169,35 +61977,37 @@ unreachable end i32.const 14704 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 14704 i32.store end local.get $2 - local.get $0 - call $~lib/typedarray/Uint8Array#sort - local.set $0 + i32.load offset=4 + local.get $2 + i32.load offset=8 + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 1 i32.ne br_if $folding-inner24 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 2 i32.ne br_if $folding-inner25 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 3 @@ -62206,23 +62016,25 @@ global.get $~lib/memory/__stack_pointer i32.const 14736 i32.store offset=8 - local.get $0 + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=8 i32.const 14736 - call $~lib/typedarray/Uint8Array#sort - drop - local.get $0 + call $~lib/util/sort/SORT + local.get $2 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 3 i32.ne br_if $folding-inner27 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 2 i32.ne br_if $folding-inner28 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 1 @@ -62233,7 +62045,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -62243,13 +62055,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $2 @@ -62269,7 +62081,7 @@ i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -62289,35 +62101,37 @@ unreachable end i32.const 14768 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 14768 i32.store end local.get $2 - local.get $0 - call $~lib/typedarray/Uint8Array#sort - local.set $0 + i32.load offset=4 + local.get $2 + i32.load offset=8 + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 i32.ne br_if $folding-inner24 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 i32.ne br_if $folding-inner25 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 @@ -62326,23 +62140,25 @@ global.get $~lib/memory/__stack_pointer i32.const 14800 i32.store offset=8 - local.get $0 + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=8 i32.const 14800 - call $~lib/typedarray/Uint8Array#sort - drop - local.get $0 + call $~lib/util/sort/SORT + local.get $2 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 3 i32.ne br_if $folding-inner27 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 2 i32.ne br_if $folding-inner28 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 1 @@ -62353,7 +62169,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -62363,13 +62179,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#constructor local.tee $2 @@ -62389,7 +62205,7 @@ i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -62409,35 +62225,39 @@ unreachable end i32.const 14832 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 14832 i32.store end local.get $2 - local.get $0 - call $~lib/typedarray/Int16Array#sort - local.set $0 + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 1 i32.ne br_if $folding-inner24 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 2 i32.ne br_if $folding-inner25 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 3 @@ -62446,23 +62266,27 @@ global.get $~lib/memory/__stack_pointer i32.const 14864 i32.store offset=8 - local.get $0 + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u i32.const 14864 - call $~lib/typedarray/Int16Array#sort - drop - local.get $0 + call $~lib/util/sort/SORT + local.get $2 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 3 i32.ne br_if $folding-inner27 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 2 i32.ne br_if $folding-inner28 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 1 @@ -62473,7 +62297,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -62483,13 +62307,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint16Array#constructor local.tee $2 @@ -62509,7 +62333,7 @@ i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -62529,35 +62353,39 @@ unreachable end i32.const 14896 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 14896 i32.store end local.get $2 - local.get $0 - call $~lib/typedarray/Uint16Array#sort - local.set $0 + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 1 i32.ne br_if $folding-inner24 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 2 i32.ne br_if $folding-inner25 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 3 @@ -62566,23 +62394,27 @@ global.get $~lib/memory/__stack_pointer i32.const 14928 i32.store offset=8 - local.get $0 + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.shr_u i32.const 14928 - call $~lib/typedarray/Uint16Array#sort - drop - local.get $0 + call $~lib/util/sort/SORT + local.get $2 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 3 i32.ne br_if $folding-inner27 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 2 i32.ne br_if $folding-inner28 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 1 @@ -62593,7 +62425,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -62603,13 +62435,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#constructor local.tee $2 @@ -62629,7 +62461,7 @@ i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -62649,35 +62481,39 @@ unreachable end i32.const 14960 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 14960 i32.store end local.get $2 - local.get $0 - call $~lib/typedarray/Int32Array#sort - local.set $0 + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 1 i32.ne br_if $folding-inner24 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 2 i32.ne br_if $folding-inner25 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 3 @@ -62686,23 +62522,27 @@ global.get $~lib/memory/__stack_pointer i32.const 14992 i32.store offset=8 - local.get $0 + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u i32.const 14992 - call $~lib/typedarray/Int32Array#sort - drop - local.get $0 + call $~lib/util/sort/SORT + local.get $2 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 3 i32.ne br_if $folding-inner27 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 2 i32.ne br_if $folding-inner28 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 1 @@ -62713,7 +62553,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -62723,13 +62563,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint32Array#constructor local.tee $2 @@ -62749,7 +62589,7 @@ i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -62769,35 +62609,39 @@ unreachable end i32.const 15024 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 15024 i32.store end local.get $2 - local.get $0 - call $~lib/typedarray/Uint32Array#sort - local.set $0 + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 1 i32.ne br_if $folding-inner24 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 2 i32.ne br_if $folding-inner25 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 3 @@ -62806,23 +62650,27 @@ global.get $~lib/memory/__stack_pointer i32.const 15056 i32.store offset=8 - local.get $0 + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u i32.const 15056 - call $~lib/typedarray/Uint32Array#sort - drop - local.get $0 + call $~lib/util/sort/SORT + local.get $2 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 3 i32.ne br_if $folding-inner27 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 2 i32.ne br_if $folding-inner28 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 1 @@ -62833,7 +62681,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -62843,13 +62691,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Int64Array#constructor local.tee $2 @@ -62869,7 +62717,7 @@ i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -62889,35 +62737,39 @@ unreachable end i32.const 15088 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 15088 i32.store end local.get $2 - local.get $0 - call $~lib/typedarray/Int64Array#sort - local.set $0 + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 1 i64.ne br_if $folding-inner24 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 2 i64.ne br_if $folding-inner25 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 3 @@ -62926,23 +62778,27 @@ global.get $~lib/memory/__stack_pointer i32.const 15120 i32.store offset=8 - local.get $0 + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u i32.const 15120 - call $~lib/typedarray/Int64Array#sort - drop - local.get $0 + call $~lib/util/sort/SORT + local.get $2 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 3 i64.ne br_if $folding-inner27 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 2 i64.ne br_if $folding-inner28 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 1 @@ -62953,7 +62809,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -62963,13 +62819,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Uint64Array#constructor local.tee $2 @@ -62989,7 +62845,7 @@ i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -63009,35 +62865,39 @@ unreachable end i32.const 15152 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 15152 i32.store end local.get $2 - local.get $0 - call $~lib/typedarray/Uint64Array#sort - local.set $0 + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 1 i64.ne br_if $folding-inner24 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 2 i64.ne br_if $folding-inner25 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 3 @@ -63046,23 +62906,27 @@ global.get $~lib/memory/__stack_pointer i32.const 15184 i32.store offset=8 - local.get $0 + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 3 + i32.shr_u i32.const 15184 - call $~lib/typedarray/Uint64Array#sort - drop - local.get $0 + call $~lib/util/sort/SORT + local.get $2 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 3 i64.ne br_if $folding-inner27 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 2 i64.ne br_if $folding-inner28 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 1 @@ -63073,7 +62937,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub @@ -63083,13 +62947,13 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float32Array#constructor local.tee $2 @@ -63109,7 +62973,7 @@ i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -63129,35 +62993,39 @@ unreachable end i32.const 15216 - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 15216 i32.store end local.get $2 - local.get $0 - call $~lib/typedarray/Float32Array#sort - local.set $0 + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 local.get $0 + local.get $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 1 f32.ne br_if $folding-inner24 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 2 f32.ne br_if $folding-inner25 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 3 @@ -63166,23 +63034,27 @@ global.get $~lib/memory/__stack_pointer i32.const 15248 i32.store offset=8 - local.get $0 + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u i32.const 15248 - call $~lib/typedarray/Float32Array#sort - drop - local.get $0 + call $~lib/util/sort/SORT + local.get $2 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 3 f32.ne br_if $folding-inner27 - local.get $0 + local.get $2 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 2 f32.ne br_if $folding-inner28 - local.get $0 + local.get $2 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 1 @@ -63201,49 +63073,49 @@ i32.lt_s br_if $folding-inner14 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i64.const 0 i64.store - local.get $1 + local.get $0 i32.const 0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 3 call $~lib/typedarray/Float64Array#constructor - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.const 2 f64.const 1 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 1 f64.const 2 call $~lib/typedarray/Float64Array#__set - local.get $1 + local.get $0 i32.const 0 f64.const 3 call $~lib/typedarray/Float64Array#__set i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 call $~lib/typedarray/Float64Array#sort@varargs - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 1 f64.ne br_if $folding-inner24 - local.get $1 + local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 2 f64.ne br_if $folding-inner25 - local.get $1 + local.get $0 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 3 @@ -63252,23 +63124,27 @@ global.get $~lib/memory/__stack_pointer i32.const 15280 i32.store offset=8 - local.get $1 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u i32.const 15280 - call $~lib/typedarray/Float64Array#sort - drop - local.get $1 + call $~lib/util/sort/SORT + local.get $0 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 3 f64.ne br_if $folding-inner27 - local.get $1 + local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 2 f64.ne br_if $folding-inner28 - local.get $1 + local.get $0 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 1 @@ -63405,7 +63281,7 @@ end i32.const 1360 i32.const 1632 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -63517,7 +63393,7 @@ end i32.const 1056 i32.const 1632 - i32.const 1842 + i32.const 1820 i32.const 9 call $~lib/builtins/abort unreachable @@ -64304,12 +64180,18 @@ i32.store end local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u local.get $1 - call $~lib/typedarray/Float64Array#sort + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $0 ) (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 03da9ddc17..930f8634f7 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -3412,7 +3412,7 @@ if i32.const 336 i32.const 608 - i32.const 725 + i32.const 715 i32.const 64 call $~lib/builtins/abort unreachable @@ -3436,7 +3436,7 @@ if i32.const 336 i32.const 608 - i32.const 714 + i32.const 704 i32.const 64 call $~lib/builtins/abort unreachable @@ -3459,7 +3459,7 @@ if i32.const 336 i32.const 608 - i32.const 1415 + i32.const 1395 i32.const 64 call $~lib/builtins/abort unreachable @@ -4440,20 +4440,10 @@ call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/typedarray/Float64Array#get:length - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.get $2 + local.get $0 + call $~lib/typedarray/Float64Array#get:length local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -4501,7 +4491,7 @@ if i32.const 336 i32.const 608 - i32.const 1404 + i32.const 1384 i32.const 64 call $~lib/builtins/abort unreachable @@ -4522,7 +4512,7 @@ if i32.const 336 i32.const 608 - i32.const 311 + i32.const 307 i32.const 45 call $~lib/builtins/abort unreachable @@ -4554,7 +4544,7 @@ if i32.const 336 i32.const 608 - i32.const 300 + i32.const 296 i32.const 45 call $~lib/builtins/abort unreachable @@ -6419,7 +6409,7 @@ if i32.const 336 i32.const 608 - i32.const 173 + i32.const 171 i32.const 45 call $~lib/builtins/abort unreachable @@ -6557,7 +6547,7 @@ if i32.const 336 i32.const 608 - i32.const 449 + i32.const 443 i32.const 64 call $~lib/builtins/abort unreachable @@ -6639,7 +6629,7 @@ if i32.const 336 i32.const 608 - i32.const 587 + i32.const 579 i32.const 64 call $~lib/builtins/abort unreachable @@ -6779,7 +6769,7 @@ if i32.const 336 i32.const 608 - i32.const 863 + i32.const 851 i32.const 64 call $~lib/builtins/abort unreachable @@ -6861,7 +6851,7 @@ if i32.const 336 i32.const 608 - i32.const 1001 + i32.const 987 i32.const 64 call $~lib/builtins/abort unreachable @@ -6943,7 +6933,7 @@ if i32.const 336 i32.const 608 - i32.const 1139 + i32.const 1123 i32.const 64 call $~lib/builtins/abort unreachable @@ -7025,7 +7015,7 @@ if i32.const 336 i32.const 608 - i32.const 1277 + i32.const 1259 i32.const 64 call $~lib/builtins/abort unreachable @@ -7281,7 +7271,7 @@ if i32.const 336 i32.const 608 - i32.const 185 + i32.const 183 i32.const 33 call $~lib/builtins/abort unreachable @@ -7387,7 +7377,7 @@ if i32.const 336 i32.const 608 - i32.const 323 + i32.const 319 i32.const 33 call $~lib/builtins/abort unreachable @@ -7495,7 +7485,7 @@ if i32.const 336 i32.const 608 - i32.const 461 + i32.const 455 i32.const 33 call $~lib/builtins/abort unreachable @@ -7605,7 +7595,7 @@ if i32.const 336 i32.const 608 - i32.const 599 + i32.const 591 i32.const 33 call $~lib/builtins/abort unreachable @@ -7715,7 +7705,7 @@ if i32.const 336 i32.const 608 - i32.const 737 + i32.const 727 i32.const 33 call $~lib/builtins/abort unreachable @@ -7825,7 +7815,7 @@ if i32.const 336 i32.const 608 - i32.const 875 + i32.const 863 i32.const 33 call $~lib/builtins/abort unreachable @@ -7935,7 +7925,7 @@ if i32.const 336 i32.const 608 - i32.const 1013 + i32.const 999 i32.const 33 call $~lib/builtins/abort unreachable @@ -8045,7 +8035,7 @@ if i32.const 336 i32.const 608 - i32.const 1151 + i32.const 1135 i32.const 33 call $~lib/builtins/abort unreachable @@ -8155,7 +8145,7 @@ if i32.const 336 i32.const 608 - i32.const 1289 + i32.const 1271 i32.const 33 call $~lib/builtins/abort unreachable @@ -8265,7 +8255,7 @@ if i32.const 336 i32.const 608 - i32.const 1427 + i32.const 1407 i32.const 33 call $~lib/builtins/abort unreachable @@ -8998,7 +8988,7 @@ if i32.const 336 i32.const 608 - i32.const 162 + i32.const 160 i32.const 45 call $~lib/builtins/abort unreachable @@ -9029,7 +9019,7 @@ if i32.const 336 i32.const 608 - i32.const 438 + i32.const 432 i32.const 64 call $~lib/builtins/abort unreachable @@ -9057,7 +9047,7 @@ if i32.const 336 i32.const 608 - i32.const 576 + i32.const 568 i32.const 64 call $~lib/builtins/abort unreachable @@ -9090,7 +9080,7 @@ if i32.const 336 i32.const 608 - i32.const 852 + i32.const 840 i32.const 64 call $~lib/builtins/abort unreachable @@ -9118,7 +9108,7 @@ if i32.const 336 i32.const 608 - i32.const 990 + i32.const 976 i32.const 64 call $~lib/builtins/abort unreachable @@ -9146,7 +9136,7 @@ if i32.const 336 i32.const 608 - i32.const 1128 + i32.const 1112 i32.const 64 call $~lib/builtins/abort unreachable @@ -9174,7 +9164,7 @@ if i32.const 336 i32.const 608 - i32.const 1266 + i32.const 1248 i32.const 64 call $~lib/builtins/abort unreachable @@ -23836,7 +23826,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -23851,7 +23841,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -23982,7 +23972,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -23997,7 +23987,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -24111,7 +24101,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -24126,7 +24116,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -24241,7 +24231,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -24256,7 +24246,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -24365,7 +24355,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -24380,7 +24370,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -24442,7 +24432,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -24457,7 +24447,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -24562,7 +24552,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -24577,7 +24567,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -24639,7 +24629,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -24654,7 +24644,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -24785,7 +24775,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -24800,7 +24790,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -24914,7 +24904,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -24929,7 +24919,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -25040,7 +25030,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -25055,7 +25045,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -25164,7 +25154,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -25179,7 +25169,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -25241,7 +25231,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -25256,7 +25246,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -25361,7 +25351,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -25376,7 +25366,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -25439,7 +25429,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -25454,7 +25444,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -25579,7 +25569,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -25594,7 +25584,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -25707,7 +25697,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -25722,7 +25712,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -25844,7 +25834,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -25859,7 +25849,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -25966,7 +25956,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -25981,7 +25971,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -26044,7 +26034,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -26059,7 +26049,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -26177,7 +26167,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -26192,7 +26182,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -26309,7 +26299,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -26324,7 +26314,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -26457,7 +26447,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -26472,7 +26462,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -26586,7 +26576,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -26601,7 +26591,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -26712,7 +26702,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -26727,7 +26717,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -26841,7 +26831,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -26856,7 +26846,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -26961,7 +26951,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -26976,7 +26966,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -27038,7 +27028,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -27053,7 +27043,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -27163,7 +27153,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -27178,7 +27168,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -27311,7 +27301,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -27326,7 +27316,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -27440,7 +27430,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -27455,7 +27445,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -27566,7 +27556,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -27581,7 +27571,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -27695,7 +27685,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -27710,7 +27700,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -27815,7 +27805,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -27830,7 +27820,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -27892,7 +27882,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -27907,7 +27897,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28012,7 +28002,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -28027,7 +28017,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28108,7 +28098,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -28123,7 +28113,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28237,7 +28227,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -28252,7 +28242,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28363,7 +28353,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -28378,7 +28368,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28492,7 +28482,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -28507,7 +28497,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28617,7 +28607,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -28632,7 +28622,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28742,7 +28732,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -28757,7 +28747,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28862,7 +28852,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -28877,7 +28867,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -28962,7 +28952,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -28977,7 +28967,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -29091,7 +29081,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -29106,7 +29096,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -29217,7 +29207,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -29232,7 +29222,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -29346,7 +29336,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -29361,7 +29351,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -29471,7 +29461,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -29486,7 +29476,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -29596,7 +29586,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -29611,7 +29601,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -29721,7 +29711,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -29736,7 +29726,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -29869,7 +29859,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -29884,7 +29874,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -29993,7 +29983,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -30008,7 +29998,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -30071,7 +30061,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -30086,7 +30076,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -30200,7 +30190,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -30215,7 +30205,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -30325,7 +30315,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -30340,7 +30330,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -30450,7 +30440,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -30465,7 +30455,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -30575,7 +30565,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -30590,7 +30580,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -30723,7 +30713,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -30738,7 +30728,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -30847,7 +30837,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -30862,7 +30852,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -30925,7 +30915,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -30940,7 +30930,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -31054,7 +31044,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -31069,7 +31059,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -31179,7 +31169,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -31194,7 +31184,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -31304,7 +31294,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -31319,7 +31309,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -31429,7 +31419,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -31444,7 +31434,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -31568,7 +31558,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -31583,7 +31573,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -31645,7 +31635,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -31660,7 +31650,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -31771,7 +31761,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -31786,7 +31776,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -31897,7 +31887,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -31912,7 +31902,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -32023,7 +32013,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -32038,7 +32028,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -32149,7 +32139,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -32164,7 +32154,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -32293,7 +32283,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -32308,7 +32298,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -32419,7 +32409,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -32434,7 +32424,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -32545,7 +32535,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -32560,7 +32550,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -32671,7 +32661,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -32686,7 +32676,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -32797,7 +32787,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -32812,7 +32802,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -32924,7 +32914,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -32939,7 +32929,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -33052,7 +33042,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -33067,7 +33057,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -33187,7 +33177,7 @@ if i32.const 336 i32.const 608 - i32.const 1875 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable @@ -33202,7 +33192,7 @@ if i32.const 336 i32.const 608 - i32.const 1876 + i32.const 1854 i32.const 47 call $~lib/builtins/abort unreachable @@ -34202,20 +34192,10 @@ call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Int8Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.get $2 + local.get $0 + call $~lib/typedarray/Int8Array#get:length local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -35155,20 +35135,10 @@ call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Uint8Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/typedarray/Uint8Array#get:length - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.get $2 + local.get $0 + call $~lib/typedarray/Uint8Array#get:length local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -35208,20 +35178,10 @@ i32.sub ) (func $~lib/typedarray/Uint8ClampedArray#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.get $2 + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#get:length local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -36175,20 +36135,10 @@ call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Int16Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.get $2 + local.get $0 + call $~lib/typedarray/Int16Array#get:length local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -37128,20 +37078,10 @@ call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Uint16Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/typedarray/Uint16Array#get:length - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.get $2 + local.get $0 + call $~lib/typedarray/Uint16Array#get:length local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -38095,20 +38035,10 @@ call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Int32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.get $2 + local.get $0 + call $~lib/typedarray/Int32Array#get:length local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -39042,20 +38972,10 @@ call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Uint32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/typedarray/Uint32Array#get:length - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.get $2 + local.get $0 + call $~lib/typedarray/Uint32Array#get:length local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -39995,20 +39915,10 @@ call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Int64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.get $2 + local.get $0 + call $~lib/typedarray/Int64Array#get:length local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -40948,20 +40858,10 @@ call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Uint64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/typedarray/Uint64Array#get:length - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.get $2 + local.get $0 + call $~lib/typedarray/Uint64Array#get:length local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -41901,20 +41801,10 @@ call $~lib/rt/tlsf/__free ) (func $~lib/typedarray/Float32Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/typedarray/Float32Array#get:length - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - return - end local.get $0 i32.load offset=4 - local.get $2 + local.get $0 + call $~lib/typedarray/Float32Array#get:length local.get $1 call $~lib/util/sort/SORT local.get $0 @@ -70372,7 +70262,7 @@ if i32.const 336 i32.const 608 - i32.const 1837 + i32.const 1815 i32.const 5 call $~lib/builtins/abort unreachable @@ -70391,7 +70281,7 @@ if i32.const 32 i32.const 608 - i32.const 1842 + i32.const 1820 i32.const 9 call $~lib/builtins/abort unreachable @@ -70403,7 +70293,7 @@ else i32.const 32 i32.const 608 - i32.const 1846 + i32.const 1824 i32.const 7 call $~lib/builtins/abort unreachable @@ -70421,7 +70311,7 @@ if i32.const 32 i32.const 608 - i32.const 1851 + i32.const 1829 i32.const 7 call $~lib/builtins/abort unreachable @@ -70590,7 +70480,7 @@ if i32.const 336 i32.const 608 - i32.const 1837 + i32.const 1815 i32.const 5 call $~lib/builtins/abort unreachable @@ -70609,7 +70499,7 @@ if i32.const 32 i32.const 608 - i32.const 1842 + i32.const 1820 i32.const 9 call $~lib/builtins/abort unreachable @@ -70621,7 +70511,7 @@ else i32.const 32 i32.const 608 - i32.const 1846 + i32.const 1824 i32.const 7 call $~lib/builtins/abort unreachable @@ -70639,7 +70529,7 @@ if i32.const 32 i32.const 608 - i32.const 1851 + i32.const 1829 i32.const 7 call $~lib/builtins/abort unreachable @@ -70709,7 +70599,7 @@ if i32.const 336 i32.const 608 - i32.const 1837 + i32.const 1815 i32.const 5 call $~lib/builtins/abort unreachable @@ -70728,7 +70618,7 @@ if i32.const 32 i32.const 608 - i32.const 1842 + i32.const 1820 i32.const 9 call $~lib/builtins/abort unreachable @@ -70740,7 +70630,7 @@ else i32.const 32 i32.const 608 - i32.const 1846 + i32.const 1824 i32.const 7 call $~lib/builtins/abort unreachable @@ -70758,7 +70648,7 @@ if i32.const 32 i32.const 608 - i32.const 1851 + i32.const 1829 i32.const 7 call $~lib/builtins/abort unreachable @@ -70828,7 +70718,7 @@ if i32.const 336 i32.const 608 - i32.const 1837 + i32.const 1815 i32.const 5 call $~lib/builtins/abort unreachable @@ -70847,7 +70737,7 @@ if i32.const 32 i32.const 608 - i32.const 1842 + i32.const 1820 i32.const 9 call $~lib/builtins/abort unreachable @@ -70859,7 +70749,7 @@ else i32.const 32 i32.const 608 - i32.const 1846 + i32.const 1824 i32.const 7 call $~lib/builtins/abort unreachable @@ -70877,7 +70767,7 @@ if i32.const 32 i32.const 608 - i32.const 1851 + i32.const 1829 i32.const 7 call $~lib/builtins/abort unreachable @@ -70947,7 +70837,7 @@ if i32.const 336 i32.const 608 - i32.const 1837 + i32.const 1815 i32.const 5 call $~lib/builtins/abort unreachable @@ -70966,7 +70856,7 @@ if i32.const 32 i32.const 608 - i32.const 1842 + i32.const 1820 i32.const 9 call $~lib/builtins/abort unreachable @@ -70978,7 +70868,7 @@ else i32.const 32 i32.const 608 - i32.const 1846 + i32.const 1824 i32.const 7 call $~lib/builtins/abort unreachable @@ -70996,7 +70886,7 @@ if i32.const 32 i32.const 608 - i32.const 1851 + i32.const 1829 i32.const 7 call $~lib/builtins/abort unreachable @@ -71066,7 +70956,7 @@ if i32.const 336 i32.const 608 - i32.const 1837 + i32.const 1815 i32.const 5 call $~lib/builtins/abort unreachable @@ -71085,7 +70975,7 @@ if i32.const 32 i32.const 608 - i32.const 1842 + i32.const 1820 i32.const 9 call $~lib/builtins/abort unreachable @@ -71097,7 +70987,7 @@ else i32.const 32 i32.const 608 - i32.const 1846 + i32.const 1824 i32.const 7 call $~lib/builtins/abort unreachable @@ -71115,7 +71005,7 @@ if i32.const 32 i32.const 608 - i32.const 1851 + i32.const 1829 i32.const 7 call $~lib/builtins/abort unreachable @@ -71185,7 +71075,7 @@ if i32.const 336 i32.const 608 - i32.const 1837 + i32.const 1815 i32.const 5 call $~lib/builtins/abort unreachable @@ -71204,7 +71094,7 @@ if i32.const 32 i32.const 608 - i32.const 1842 + i32.const 1820 i32.const 9 call $~lib/builtins/abort unreachable @@ -71216,7 +71106,7 @@ else i32.const 32 i32.const 608 - i32.const 1846 + i32.const 1824 i32.const 7 call $~lib/builtins/abort unreachable @@ -71234,7 +71124,7 @@ if i32.const 32 i32.const 608 - i32.const 1851 + i32.const 1829 i32.const 7 call $~lib/builtins/abort unreachable @@ -71304,7 +71194,7 @@ if i32.const 336 i32.const 608 - i32.const 1837 + i32.const 1815 i32.const 5 call $~lib/builtins/abort unreachable @@ -71323,7 +71213,7 @@ if i32.const 32 i32.const 608 - i32.const 1842 + i32.const 1820 i32.const 9 call $~lib/builtins/abort unreachable @@ -71335,7 +71225,7 @@ else i32.const 32 i32.const 608 - i32.const 1846 + i32.const 1824 i32.const 7 call $~lib/builtins/abort unreachable @@ -71353,7 +71243,7 @@ if i32.const 32 i32.const 608 - i32.const 1851 + i32.const 1829 i32.const 7 call $~lib/builtins/abort unreachable @@ -71423,7 +71313,7 @@ if i32.const 336 i32.const 608 - i32.const 1837 + i32.const 1815 i32.const 5 call $~lib/builtins/abort unreachable @@ -71442,7 +71332,7 @@ if i32.const 32 i32.const 608 - i32.const 1842 + i32.const 1820 i32.const 9 call $~lib/builtins/abort unreachable @@ -71454,7 +71344,7 @@ else i32.const 32 i32.const 608 - i32.const 1846 + i32.const 1824 i32.const 7 call $~lib/builtins/abort unreachable @@ -71472,7 +71362,7 @@ if i32.const 32 i32.const 608 - i32.const 1851 + i32.const 1829 i32.const 7 call $~lib/builtins/abort unreachable @@ -71542,7 +71432,7 @@ if i32.const 336 i32.const 608 - i32.const 1837 + i32.const 1815 i32.const 5 call $~lib/builtins/abort unreachable @@ -71561,7 +71451,7 @@ if i32.const 32 i32.const 608 - i32.const 1842 + i32.const 1820 i32.const 9 call $~lib/builtins/abort unreachable @@ -71573,7 +71463,7 @@ else i32.const 32 i32.const 608 - i32.const 1846 + i32.const 1824 i32.const 7 call $~lib/builtins/abort unreachable @@ -71591,7 +71481,7 @@ if i32.const 32 i32.const 608 - i32.const 1851 + i32.const 1829 i32.const 7 call $~lib/builtins/abort unreachable @@ -71661,7 +71551,7 @@ if i32.const 336 i32.const 608 - i32.const 1837 + i32.const 1815 i32.const 5 call $~lib/builtins/abort unreachable @@ -71680,7 +71570,7 @@ if i32.const 32 i32.const 608 - i32.const 1842 + i32.const 1820 i32.const 9 call $~lib/builtins/abort unreachable @@ -71692,7 +71582,7 @@ else i32.const 32 i32.const 608 - i32.const 1846 + i32.const 1824 i32.const 7 call $~lib/builtins/abort unreachable @@ -71710,7 +71600,7 @@ if i32.const 32 i32.const 608 - i32.const 1851 + i32.const 1829 i32.const 7 call $~lib/builtins/abort unreachable From db577b985c1dd4ca7895861dda3b11ce50285a78 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 7 Jul 2021 11:45:11 +0300 Subject: [PATCH 17/29] upd fixtures --- tests/compiler/resolve-elementaccess.optimized.wat | 8 ++++---- tests/compiler/resolve-elementaccess.untouched.wat | 8 ++++---- tests/compiler/std/dataview.optimized.wat | 2 +- tests/compiler/std/dataview.untouched.wat | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index f028db980e..2e6ef64fbf 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -1858,7 +1858,7 @@ if i32.const 1360 i32.const 1568 - i32.const 1250 + i32.const 1259 i32.const 64 call $~lib/builtins/abort unreachable @@ -1882,7 +1882,7 @@ if i32.const 1360 i32.const 1568 - i32.const 1239 + i32.const 1248 i32.const 64 call $~lib/builtins/abort unreachable @@ -4217,7 +4217,7 @@ if i32.const 1360 i32.const 1568 - i32.const 170 + i32.const 171 i32.const 45 call $~lib/builtins/abort unreachable @@ -4237,7 +4237,7 @@ if i32.const 1360 i32.const 1568 - i32.const 159 + i32.const 160 i32.const 45 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 3760f257b0..99e702c0fd 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -2483,7 +2483,7 @@ if i32.const 336 i32.const 544 - i32.const 1250 + i32.const 1259 i32.const 64 call $~lib/builtins/abort unreachable @@ -2507,7 +2507,7 @@ if i32.const 336 i32.const 544 - i32.const 1239 + i32.const 1248 i32.const 64 call $~lib/builtins/abort unreachable @@ -5389,7 +5389,7 @@ if i32.const 336 i32.const 544 - i32.const 170 + i32.const 171 i32.const 45 call $~lib/builtins/abort unreachable @@ -5409,7 +5409,7 @@ if i32.const 336 i32.const 544 - i32.const 159 + i32.const 160 i32.const 45 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index ba303662a9..4d6e332251 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -1800,7 +1800,7 @@ if i32.const 1360 i32.const 1568 - i32.const 170 + i32.const 171 i32.const 45 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index c2cb3f4fbb..7907701b8e 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -2453,7 +2453,7 @@ if i32.const 336 i32.const 544 - i32.const 170 + i32.const 171 i32.const 45 call $~lib/builtins/abort unreachable From 27331c76bd2d84983c18e747a0d7f86e55b98456 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 7 Jul 2021 11:55:21 +0300 Subject: [PATCH 18/29] refactor --- std/assembly/util/sort.ts | 4 +- tests/compiler/std/array.optimized.wat | 654 +++--- tests/compiler/std/array.untouched.wat | 1996 +++++++++---------- tests/compiler/std/typedarray.optimized.wat | 1298 ++++++------ tests/compiler/std/typedarray.untouched.wat | 1980 +++++++++--------- 5 files changed, 2997 insertions(+), 2935 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index 9ceda28535..f1cb9a7fc0 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -68,6 +68,7 @@ export function SORT( comparator: Comparator ): void { if (len <= INSERTION_SORT_THRESHOLD) { + if (len <= 1) return; if (ASC_SHRINK_LEVEL < 1) { switch (len) { case 3: { @@ -87,9 +88,8 @@ export function SORT( let c = comparator(a, b) >>> 31; store(ptr, select(a, b, c), 0); store(ptr, select(b, a, c), 1 << alignof()); + return; } - case 1: - case 0: return; } } insertionSort(ptr, 0, len - 1, 0, comparator); diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index f0f782ed8e..4581d09b14 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -5007,69 +5007,29 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - f32.load offset=4 - local.set $16 - local.get $0 - f32.load offset=8 - local.set $14 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $16 - local.get $14 - local.get $16 - local.get $14 - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $1 - select - f32.store offset=4 - local.get $0 - f32.load - local.set $12 - i32.const 2 - global.set $~argumentsLength - local.get $12 - local.get $14 - local.get $16 - local.get $1 - select - local.tee $16 - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u - local.set $1 - local.get $0 - local.get $12 - local.get $16 - local.get $1 - select - f32.store - local.get $0 - local.get $16 - local.get $12 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - select - f32.store offset=8 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - f32.load + f32.load offset=4 local.set $16 local.get $0 - f32.load offset=4 + f32.load offset=8 local.set $14 i32.const 2 global.set $~argumentsLength @@ -5085,14 +5045,64 @@ i32.shr_u local.tee $1 select - f32.store + f32.store offset=4 local.get $0 + f32.load + local.set $12 + i32.const 2 + global.set $~argumentsLength + local.get $12 local.get $14 local.get $16 local.get $1 select - f32.store offset=4 + local.tee $16 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $12 + local.get $16 + local.get $1 + select + f32.store + local.get $0 + local.get $16 + local.get $12 + local.get $1 + select + f32.store offset=8 end + local.get $0 + f32.load + local.set $16 + local.get $0 + f32.load offset=4 + local.set $14 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $14 + local.get $16 + local.get $14 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + f32.store + local.get $0 + local.get $14 + local.get $16 + local.get $1 + select + f32.store offset=4 return end local.get $0 @@ -5907,69 +5917,29 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - f64.load offset=8 - local.set $16 - local.get $0 - f64.load offset=16 - local.set $14 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $16 - local.get $14 - local.get $16 - local.get $14 - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u - local.tee $1 - select - f64.store offset=8 - local.get $0 - f64.load - local.set $12 - i32.const 2 - global.set $~argumentsLength - local.get $12 - local.get $14 - local.get $16 - local.get $1 - select - local.tee $16 - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u - local.set $1 - local.get $0 - local.get $12 - local.get $16 - local.get $1 - select - f64.store - local.get $0 - local.get $16 - local.get $12 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - select - f64.store offset=16 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - f64.load + f64.load offset=8 local.set $16 local.get $0 - f64.load offset=8 + f64.load offset=16 local.set $14 i32.const 2 global.set $~argumentsLength @@ -5985,14 +5955,64 @@ i32.shr_u local.tee $1 select - f64.store + f64.store offset=8 local.get $0 + f64.load + local.set $12 + i32.const 2 + global.set $~argumentsLength + local.get $12 local.get $14 local.get $16 local.get $1 select - f64.store offset=8 + local.tee $16 + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $12 + local.get $16 + local.get $1 + select + f64.store + local.get $0 + local.get $16 + local.get $12 + local.get $1 + select + f64.store offset=16 end + local.get $0 + f64.load + local.set $16 + local.get $0 + f64.load offset=8 + local.set $14 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $14 + local.get $16 + local.get $14 + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + f64.store + local.get $0 + local.get $14 + local.get $16 + local.get $1 + select + f64.store offset=8 return end local.get $0 @@ -6759,69 +6779,29 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - i32.load offset=8 - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $4 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - local.get $4 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $5 - select - i32.store offset=4 - local.get $0 - i32.load - local.set $3 i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 - local.get $5 - select - local.tee $1 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 - select - i32.store - local.get $0 - local.get $1 - local.get $3 - local.get $4 - select - i32.store offset=8 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - i32.load + i32.load offset=4 local.set $1 local.get $0 - i32.load offset=4 + i32.load offset=8 local.set $4 i32.const 2 global.set $~argumentsLength @@ -6835,16 +6815,66 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $2 + local.tee $5 select - i32.store + i32.store offset=4 local.get $0 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 local.get $4 local.get $1 + local.get $5 + select + local.tee $1 local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $4 + local.get $0 + local.get $3 + local.get $1 + local.get $4 select - i32.store offset=4 + i32.store + local.get $0 + local.get $1 + local.get $3 + local.get $4 + select + i32.store offset=8 end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + local.get $4 + local.get $1 + local.get $4 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $2 + select + i32.store + local.get $0 + local.get $4 + local.get $1 + local.get $2 + select + i32.store offset=4 return end local.get $0 @@ -7566,69 +7596,29 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - i32.load offset=8 - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $4 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - local.get $4 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $5 - select - i32.store offset=4 - local.get $0 - i32.load - local.set $3 i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 - local.get $5 - select - local.tee $1 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 - select - i32.store - local.get $0 - local.get $1 - local.get $3 - local.get $4 - select - i32.store offset=8 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - i32.load + i32.load offset=4 local.set $1 local.get $0 - i32.load offset=4 + i32.load offset=8 local.set $4 i32.const 2 global.set $~argumentsLength @@ -7642,16 +7632,66 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $2 + local.tee $5 select - i32.store + i32.store offset=4 local.get $0 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 local.get $4 local.get $1 + local.get $5 + select + local.tee $1 local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $4 + local.get $0 + local.get $3 + local.get $1 + local.get $4 select - i32.store offset=4 + i32.store + local.get $0 + local.get $1 + local.get $3 + local.get $4 + select + i32.store offset=8 end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + local.get $4 + local.get $1 + local.get $4 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $2 + select + i32.store + local.get $0 + local.get $4 + local.get $1 + local.get $2 + select + i32.store offset=4 return end local.get $0 @@ -8408,11 +8448,21 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + br_if $folding-inner0 block $break|0 block $case1|0 - block $case0|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - br_table $folding-inner0 $folding-inner0 $case1|0 $case0|0 $break|0 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end global.get $~lib/memory/__stack_pointer local.tee $4 @@ -12412,69 +12462,29 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - i32.load8_u offset=1 - local.set $1 - local.get $0 - i32.load8_u offset=2 - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $4 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - local.get $4 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $5 - select - i32.store8 offset=1 - local.get $0 - i32.load8_u - local.set $3 i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 - local.get $5 - select - local.tee $1 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 - select - i32.store8 - local.get $0 - local.get $1 - local.get $3 - local.get $4 - select - i32.store8 offset=2 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - i32.load8_u + i32.load8_u offset=1 local.set $1 local.get $0 - i32.load8_u offset=1 + i32.load8_u offset=2 local.set $4 i32.const 2 global.set $~argumentsLength @@ -12488,16 +12498,66 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $2 + local.tee $5 select - i32.store8 + i32.store8 offset=1 local.get $0 + i32.load8_u + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 local.get $4 local.get $1 + local.get $5 + select + local.tee $1 local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $4 + local.get $0 + local.get $3 + local.get $1 + local.get $4 select - i32.store8 offset=1 + i32.store8 + local.get $0 + local.get $1 + local.get $3 + local.get $4 + select + i32.store8 offset=2 end + local.get $0 + i32.load8_u + local.set $1 + local.get $0 + i32.load8_u offset=1 + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + local.get $4 + local.get $1 + local.get $4 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $2 + select + i32.store8 + local.get $0 + local.get $4 + local.get $1 + local.get $2 + select + i32.store8 offset=1 return end local.get $0 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 20433dcafc..86cdaff8e2 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -7237,118 +7237,112 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - f32.load offset=4 - local.set $4 - local.get $0 - f32.load offset=8 - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - f32.store offset=4 - local.get $5 - local.get $4 - local.get $3 - select - local.set $5 - local.get $0 - f32.load - local.set $4 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - f32.store - local.get $0 - local.get $5 - local.get $4 - local.get $3 - select - f32.store offset=8 - end - local.get $0 - f32.load - local.set $5 - local.get $0 - f32.load offset=4 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - f32.store - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - f32.store offset=4 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + local.get $0 + f32.load offset=4 + local.set $4 + local.get $0 + f32.load offset=8 + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + f32.store offset=4 + local.get $5 + local.get $4 + local.get $3 + select + local.set $5 + local.get $0 + f32.load + local.set $4 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + f32.store + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + f32.store offset=8 end + local.get $0 + f32.load + local.set $5 + local.get $0 + f32.load offset=4 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + f32.store + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + f32.store offset=4 return end local.get $0 @@ -8273,122 +8267,116 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - f64.load offset=8 - local.set $4 - local.get $0 - f64.load offset=16 - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - f64.store offset=8 - local.get $5 - local.get $4 - local.get $3 - select - local.set $5 - local.get $0 - f64.load - local.set $4 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - f64.store - local.get $0 - local.get $5 - local.get $4 - local.get $3 - select - f64.store offset=16 - end - local.get $0 - f64.load - local.set $5 - local.get $0 - f64.load offset=8 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - f64.store - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - f64.store offset=8 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end - end - return - end - local.get $0 - i32.const 0 + local.get $0 + f64.load offset=8 + local.set $4 + local.get $0 + f64.load offset=16 + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + f64.store offset=8 + local.get $5 + local.get $4 + local.get $3 + select + local.set $5 + local.get $0 + f64.load + local.set $4 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + f64.store + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + f64.store offset=16 + end + local.get $0 + f64.load + local.set $5 + local.get $0 + f64.load offset=8 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + f64.store + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + f64.store offset=8 + return + end + local.get $0 + i32.const 0 local.get $1 i32.const 1 i32.sub @@ -9337,118 +9325,112 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store offset=4 - local.get $4 - local.get $3 - local.get $5 - select - local.set $4 - local.get $0 - i32.load - local.set $3 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store offset=8 - end - local.get $0 - i32.load - local.set $5 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i32.store - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i32.store offset=4 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 + local.set $4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store offset=4 + local.get $4 + local.get $3 + local.get $5 + select + local.set $4 + local.get $0 + i32.load + local.set $3 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store offset=8 end + local.get $0 + i32.load + local.set $5 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store offset=4 return end local.get $0 @@ -10265,118 +10247,112 @@ i32.const 128 i32.le_s if - i32.const 0 + local.get $1 i32.const 1 - i32.lt_s - drop + i32.le_s + if + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store offset=4 - local.get $4 - local.get $3 - local.get $5 - select - local.set $4 - local.get $0 - i32.load - local.set $3 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store offset=8 - end - local.get $0 - i32.load - local.set $5 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i32.store - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i32.store offset=4 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 + local.set $4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store offset=4 + local.get $4 + local.get $3 + local.get $5 + select + local.set $4 + local.get $0 + i32.load + local.set $3 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store offset=8 end + local.get $0 + i32.load + local.set $5 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store offset=4 return end local.get $0 @@ -11288,131 +11264,129 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $4 - i32.store offset=4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $3 - local.get $5 - select - local.tee $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store offset=8 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $4 - i32.store offset=4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i32.store - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i32.store offset=4 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $4 + i32.store offset=4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $3 + local.get $5 + select + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store offset=8 end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $4 + i32.store offset=4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer @@ -12212,131 +12186,129 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $4 - i32.store offset=4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $3 - local.get $5 - select - local.tee $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store offset=8 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $4 - i32.store offset=4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i32.store - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i32.store offset=4 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $4 + i32.store offset=4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $3 + local.get $5 + select + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store offset=8 end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $4 + i32.store offset=4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer @@ -13011,169 +12983,167 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/util/sort/SORT<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 128 - i32.le_s - if - i32.const 0 - i32.const 1 - i32.lt_s - drop - block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $4 - i32.store offset=4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $3 - local.get $5 - select - local.tee $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store offset=8 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $4 - i32.store offset=4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 128 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i32.store - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i32.store offset=4 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $4 + i32.store offset=4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $3 + local.get $5 + select + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store offset=8 end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $4 + i32.store offset=4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer @@ -14245,131 +14215,129 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $3 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=8 - local.tee $4 - i32.store offset=4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $3 - local.get $5 - select - local.tee $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $3 - i32.store - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store offset=8 - end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load - local.tee $5 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load offset=4 - local.tee $4 - i32.store offset=4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i32.store - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i32.store offset=4 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $4 + i32.store offset=4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $3 + local.get $5 + select + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store offset=8 end global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $4 + i32.store offset=4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer @@ -19939,118 +19907,112 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - i32.load8_u offset=1 - local.set $3 - local.get $0 - i32.load8_u offset=2 - local.set $4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store8 offset=1 - local.get $4 - local.get $3 - local.get $5 - select - local.set $4 - local.get $0 - i32.load8_u - local.set $3 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store8 - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store8 offset=2 - end - local.get $0 - i32.load8_u - local.set $5 - local.get $0 - i32.load8_u offset=1 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i32.store8 - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i32.store8 offset=1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + local.get $0 + i32.load8_u offset=1 + local.set $3 + local.get $0 + i32.load8_u offset=2 + local.set $4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store8 offset=1 + local.get $4 + local.get $3 + local.get $5 + select + local.set $4 + local.get $0 + i32.load8_u + local.set $3 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store8 + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store8 offset=2 end + local.get $0 + i32.load8_u + local.set $5 + local.get $0 + i32.load8_u offset=1 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store8 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store8 offset=1 return end local.get $0 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 1309b72e91..7269e877ff 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3473,69 +3473,29 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - f64.load offset=8 - local.set $16 - local.get $0 - f64.load offset=16 - local.set $14 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $16 - local.get $14 - local.get $16 - local.get $14 - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u - local.tee $1 - select - f64.store offset=8 - local.get $0 - f64.load - local.set $12 - i32.const 2 - global.set $~argumentsLength - local.get $12 - local.get $14 - local.get $16 - local.get $1 - select - local.tee $16 - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u - local.set $1 - local.get $0 - local.get $12 - local.get $16 - local.get $1 - select - f64.store - local.get $0 - local.get $16 - local.get $12 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - select - f64.store offset=16 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - f64.load + f64.load offset=8 local.set $16 local.get $0 - f64.load offset=8 + f64.load offset=16 local.set $14 i32.const 2 global.set $~argumentsLength @@ -3551,14 +3511,64 @@ i32.shr_u local.tee $1 select - f64.store + f64.store offset=8 local.get $0 + f64.load + local.set $12 + i32.const 2 + global.set $~argumentsLength + local.get $12 local.get $14 local.get $16 local.get $1 select - f64.store offset=8 + local.tee $16 + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $12 + local.get $16 + local.get $1 + select + f64.store + local.get $0 + local.get $16 + local.get $12 + local.get $1 + select + f64.store offset=16 end + local.get $0 + f64.load + local.set $16 + local.get $0 + f64.load offset=8 + local.set $14 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $14 + local.get $16 + local.get $14 + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + f64.store + local.get $0 + local.get $14 + local.get $16 + local.get $1 + select + f64.store offset=8 return end local.get $0 @@ -29627,69 +29637,29 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - i32.load8_s offset=1 - local.set $1 - local.get $0 - i32.load8_s offset=2 - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $4 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - local.get $4 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $5 - select - i32.store8 offset=1 - local.get $0 - i32.load8_s - local.set $3 i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 - local.get $5 - select - local.tee $1 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 - select - i32.store8 - local.get $0 - local.get $1 - local.get $3 - local.get $4 - select - i32.store8 offset=2 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - i32.load8_s + i32.load8_s offset=1 local.set $1 local.get $0 - i32.load8_s offset=1 + i32.load8_s offset=2 local.set $4 i32.const 2 global.set $~argumentsLength @@ -29703,16 +29673,66 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $2 + local.tee $5 select - i32.store8 + i32.store8 offset=1 local.get $0 + i32.load8_s + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 local.get $4 local.get $1 + local.get $5 + select + local.tee $1 local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $4 + local.get $0 + local.get $3 + local.get $1 + local.get $4 select - i32.store8 offset=1 + i32.store8 + local.get $0 + local.get $1 + local.get $3 + local.get $4 + select + i32.store8 offset=2 end + local.get $0 + i32.load8_s + local.set $1 + local.get $0 + i32.load8_s offset=1 + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + local.get $4 + local.get $1 + local.get $4 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $2 + select + i32.store8 + local.get $0 + local.get $4 + local.get $1 + local.get $2 + select + i32.store8 offset=1 return end local.get $0 @@ -30407,69 +30427,29 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - i32.load8_u offset=1 - local.set $1 - local.get $0 - i32.load8_u offset=2 - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $4 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - local.get $4 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $5 - select - i32.store8 offset=1 - local.get $0 - i32.load8_u - local.set $3 i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 - local.get $5 - select - local.tee $1 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 - select - i32.store8 - local.get $0 - local.get $1 - local.get $3 - local.get $4 - select - i32.store8 offset=2 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - i32.load8_u + i32.load8_u offset=1 local.set $1 local.get $0 - i32.load8_u offset=1 + i32.load8_u offset=2 local.set $4 i32.const 2 global.set $~argumentsLength @@ -30483,16 +30463,66 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $2 + local.tee $5 select - i32.store8 + i32.store8 offset=1 local.get $0 + i32.load8_u + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 local.get $4 local.get $1 + local.get $5 + select + local.tee $1 local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $4 + local.get $0 + local.get $3 + local.get $1 + local.get $4 select - i32.store8 offset=1 + i32.store8 + local.get $0 + local.get $1 + local.get $3 + local.get $4 + select + i32.store8 offset=2 end + local.get $0 + i32.load8_u + local.set $1 + local.get $0 + i32.load8_u offset=1 + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + local.get $4 + local.get $1 + local.get $4 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $2 + select + i32.store8 + local.get $0 + local.get $4 + local.get $1 + local.get $2 + select + i32.store8 offset=1 return end local.get $0 @@ -31235,69 +31265,29 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - i32.load16_s offset=2 - local.set $1 - local.get $0 - i32.load16_s offset=4 - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $4 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - local.get $4 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $5 - select - i32.store16 offset=2 - local.get $0 - i32.load16_s - local.set $3 i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 - local.get $5 - select - local.tee $1 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 - select - i32.store16 - local.get $0 - local.get $1 - local.get $3 - local.get $4 - select - i32.store16 offset=4 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - i32.load16_s + i32.load16_s offset=2 local.set $1 local.get $0 - i32.load16_s offset=2 + i32.load16_s offset=4 local.set $4 i32.const 2 global.set $~argumentsLength @@ -31311,16 +31301,66 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $2 + local.tee $5 select - i32.store16 + i32.store16 offset=2 local.get $0 + i32.load16_s + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 local.get $4 local.get $1 + local.get $5 + select + local.tee $1 local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $4 + local.get $0 + local.get $3 + local.get $1 + local.get $4 select - i32.store16 offset=2 + i32.store16 + local.get $0 + local.get $1 + local.get $3 + local.get $4 + select + i32.store16 offset=4 end + local.get $0 + i32.load16_s + local.set $1 + local.get $0 + i32.load16_s offset=2 + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + local.get $4 + local.get $1 + local.get $4 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $2 + select + i32.store16 + local.get $0 + local.get $4 + local.get $1 + local.get $2 + select + i32.store16 offset=2 return end local.get $0 @@ -32057,69 +32097,29 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - i32.load16_u offset=2 - local.set $1 - local.get $0 - i32.load16_u offset=4 - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $4 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - local.get $4 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $5 - select - i32.store16 offset=2 - local.get $0 - i32.load16_u - local.set $3 i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 - local.get $5 - select - local.tee $1 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 - select - i32.store16 - local.get $0 - local.get $1 - local.get $3 - local.get $4 - select - i32.store16 offset=4 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - i32.load16_u + i32.load16_u offset=2 local.set $1 local.get $0 - i32.load16_u offset=2 + i32.load16_u offset=4 local.set $4 i32.const 2 global.set $~argumentsLength @@ -32133,20 +32133,70 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $2 + local.tee $5 select - i32.store16 + i32.store16 offset=2 local.get $0 + i32.load16_u + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 local.get $4 local.get $1 + local.get $5 + select + local.tee $1 local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $4 + local.get $0 + local.get $3 + local.get $1 + local.get $4 select - i32.store16 offset=2 + i32.store16 + local.get $0 + local.get $1 + local.get $3 + local.get $4 + select + i32.store16 offset=4 end - return - end - local.get $0 - i32.const 0 + local.get $0 + i32.load16_u + local.set $1 + local.get $0 + i32.load16_u offset=2 + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + local.get $4 + local.get $1 + local.get $4 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $2 + select + i32.store16 + local.get $0 + local.get $4 + local.get $1 + local.get $2 + select + i32.store16 offset=2 + return + end + local.get $0 + i32.const 0 local.get $1 i32.const 1 i32.sub @@ -32889,69 +32939,29 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - i32.load offset=8 - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $4 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - local.get $4 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $5 - select - i32.store offset=4 - local.get $0 - i32.load - local.set $3 i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 - local.get $5 - select - local.tee $1 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 - select - i32.store - local.get $0 - local.get $1 - local.get $3 - local.get $4 - select - i32.store offset=8 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - i32.load + i32.load offset=4 local.set $1 local.get $0 - i32.load offset=4 + i32.load offset=8 local.set $4 i32.const 2 global.set $~argumentsLength @@ -32965,16 +32975,66 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $2 + local.tee $5 select - i32.store + i32.store offset=4 local.get $0 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 local.get $4 local.get $1 + local.get $5 + select + local.tee $1 local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $4 + local.get $0 + local.get $3 + local.get $1 + local.get $4 select - i32.store offset=4 + i32.store + local.get $0 + local.get $1 + local.get $3 + local.get $4 + select + i32.store offset=8 end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + local.get $4 + local.get $1 + local.get $4 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $2 + select + i32.store + local.get $0 + local.get $4 + local.get $1 + local.get $2 + select + i32.store offset=4 return end local.get $0 @@ -33705,69 +33765,29 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - i32.load offset=8 - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $1 - local.get $4 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - local.get $4 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $5 - select - i32.store offset=4 - local.get $0 - i32.load - local.set $3 i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 - local.get $5 - select - local.tee $1 - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $4 - local.get $0 - local.get $3 - local.get $1 - local.get $4 - select - i32.store - local.get $0 - local.get $1 - local.get $3 - local.get $4 - select - i32.store offset=8 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - i32.load + i32.load offset=4 local.set $1 local.get $0 - i32.load offset=4 + i32.load offset=8 local.set $4 i32.const 2 global.set $~argumentsLength @@ -33781,16 +33801,66 @@ call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $2 + local.tee $5 select - i32.store + i32.store offset=4 local.get $0 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $3 local.get $4 local.get $1 + local.get $5 + select + local.tee $1 local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $4 + local.get $0 + local.get $3 + local.get $1 + local.get $4 select - i32.store offset=4 + i32.store + local.get $0 + local.get $1 + local.get $3 + local.get $4 + select + i32.store offset=8 end + local.get $0 + i32.load + local.set $1 + local.get $0 + i32.load offset=4 + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + local.get $4 + local.get $1 + local.get $4 + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $2 + select + i32.store + local.get $0 + local.get $4 + local.get $1 + local.get $2 + select + i32.store offset=4 return end local.get $0 @@ -34524,73 +34594,33 @@ (local $13 i64) (local $14 i32) (local $15 i32) - local.get $1 - i32.const 128 - i32.le_s - if - block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - i64.load offset=8 - local.set $9 - local.get $0 - i64.load offset=16 - local.set $11 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $9 - local.get $11 - local.get $9 - local.get $11 - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u - local.tee $1 - select - i64.store offset=8 - local.get $0 - i64.load - local.set $13 - i32.const 2 - global.set $~argumentsLength - local.get $13 - local.get $11 - local.get $9 - local.get $1 - select - local.tee $9 - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u - local.set $1 - local.get $0 - local.get $13 - local.get $9 - local.get $1 - select - i64.store - local.get $0 - local.get $9 - local.get $13 + local.get $1 + i32.const 128 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + if + return + end + block $break|0 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - select - i64.store offset=16 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - i64.load + i64.load offset=8 local.set $9 local.get $0 - i64.load offset=8 + i64.load offset=16 local.set $11 i32.const 2 global.set $~argumentsLength @@ -34606,14 +34636,64 @@ i32.shr_u local.tee $1 select - i64.store + i64.store offset=8 local.get $0 + i64.load + local.set $13 + i32.const 2 + global.set $~argumentsLength + local.get $13 local.get $11 local.get $9 local.get $1 select - i64.store offset=8 + local.tee $9 + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $13 + local.get $9 + local.get $1 + select + i64.store + local.get $0 + local.get $9 + local.get $13 + local.get $1 + select + i64.store offset=16 end + local.get $0 + i64.load + local.set $9 + local.get $0 + i64.load offset=8 + local.set $11 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $9 + local.get $11 + local.get $9 + local.get $11 + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i64.store + local.get $0 + local.get $11 + local.get $9 + local.get $1 + select + i64.store offset=8 return end local.get $0 @@ -35351,69 +35431,29 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - i64.load offset=8 - local.set $9 - local.get $0 - i64.load offset=16 - local.set $11 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $9 - local.get $11 - local.get $9 - local.get $11 - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u - local.tee $1 - select - i64.store offset=8 - local.get $0 - i64.load - local.set $13 - i32.const 2 - global.set $~argumentsLength - local.get $13 - local.get $11 - local.get $9 - local.get $1 - select - local.tee $9 - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u - local.set $1 - local.get $0 - local.get $13 - local.get $9 - local.get $1 - select - i64.store - local.get $0 - local.get $9 - local.get $13 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - select - i64.store offset=16 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - i64.load + i64.load offset=8 local.set $9 local.get $0 - i64.load offset=8 + i64.load offset=16 local.set $11 i32.const 2 global.set $~argumentsLength @@ -35429,14 +35469,64 @@ i32.shr_u local.tee $1 select - i64.store + i64.store offset=8 local.get $0 + i64.load + local.set $13 + i32.const 2 + global.set $~argumentsLength + local.get $13 local.get $11 local.get $9 local.get $1 select - i64.store offset=8 + local.tee $9 + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $13 + local.get $9 + local.get $1 + select + i64.store + local.get $0 + local.get $9 + local.get $13 + local.get $1 + select + i64.store offset=16 end + local.get $0 + i64.load + local.set $9 + local.get $0 + i64.load offset=8 + local.set $11 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $9 + local.get $11 + local.get $9 + local.get $11 + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + i64.store + local.get $0 + local.get $11 + local.get $9 + local.get $1 + select + i64.store offset=8 return end local.get $0 @@ -36175,69 +36265,29 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end block $break|0 - block $case3|0 - block $case1|0 - block $case0|0 - local.get $1 - br_table $case3|0 $case3|0 $case1|0 $case0|0 $break|0 - end - local.get $0 - f32.load offset=4 - local.set $16 - local.get $0 - f32.load offset=8 - local.set $14 - i32.const 2 - global.set $~argumentsLength - local.get $0 - local.get $16 - local.get $14 - local.get $16 - local.get $14 - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $1 - select - f32.store offset=4 - local.get $0 - f32.load - local.set $12 - i32.const 2 - global.set $~argumentsLength - local.get $12 - local.get $14 - local.get $16 - local.get $1 - select - local.tee $16 - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u - local.set $1 - local.get $0 - local.get $12 - local.get $16 - local.get $1 - select - f32.store - local.get $0 - local.get $16 - local.get $12 + block $case1|0 + local.get $1 + i32.const 3 + i32.ne + if local.get $1 - select - f32.store offset=8 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end local.get $0 - f32.load + f32.load offset=4 local.set $16 local.get $0 - f32.load offset=4 + f32.load offset=8 local.set $14 i32.const 2 global.set $~argumentsLength @@ -36253,14 +36303,64 @@ i32.shr_u local.tee $1 select - f32.store + f32.store offset=4 local.get $0 + f32.load + local.set $12 + i32.const 2 + global.set $~argumentsLength + local.get $12 local.get $14 local.get $16 local.get $1 select - f32.store offset=4 + local.tee $16 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.set $1 + local.get $0 + local.get $12 + local.get $16 + local.get $1 + select + f32.store + local.get $0 + local.get $16 + local.get $12 + local.get $1 + select + f32.store offset=8 end + local.get $0 + f32.load + local.set $16 + local.get $0 + f32.load offset=4 + local.set $14 + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $16 + local.get $14 + local.get $16 + local.get $14 + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.tee $1 + select + f32.store + local.get $0 + local.get $14 + local.get $16 + local.get $1 + select + f32.store offset=4 return end local.get $0 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 930f8634f7..b4611cda2d 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -4050,118 +4050,112 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - f64.load offset=8 - local.set $4 - local.get $0 - f64.load offset=16 - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - f64.store offset=8 - local.get $5 - local.get $4 - local.get $3 - select - local.set $5 - local.get $0 - f64.load - local.set $4 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - f64.store - local.get $0 - local.get $5 - local.get $4 - local.get $3 - select - f64.store offset=16 - end - local.get $0 - f64.load - local.set $5 - local.get $0 - f64.load offset=8 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - f64.store - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - f64.store offset=8 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + local.get $0 + f64.load offset=8 + local.set $4 + local.get $0 + f64.load offset=16 + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + f64.store offset=8 + local.get $5 + local.get $4 + local.get $3 + select + local.set $5 + local.get $0 + f64.load + local.set $4 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + f64.store + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + f64.store offset=16 end + local.get $0 + f64.load + local.set $5 + local.get $0 + f64.load offset=8 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f64_f64_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + f64.store + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + f64.store offset=8 return end local.get $0 @@ -33802,118 +33796,112 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - i32.load8_s offset=1 - local.set $3 - local.get $0 - i32.load8_s offset=2 - local.set $4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store8 offset=1 - local.get $4 - local.get $3 - local.get $5 - select - local.set $4 - local.get $0 - i32.load8_s - local.set $3 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store8 - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store8 offset=2 - end - local.get $0 - i32.load8_s - local.set $5 - local.get $0 - i32.load8_s offset=1 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i32.store8 - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i32.store8 offset=1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + local.get $0 + i32.load8_s offset=1 + local.set $3 + local.get $0 + i32.load8_s offset=2 + local.set $4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store8 offset=1 + local.get $4 + local.get $3 + local.get $5 + select + local.set $4 + local.get $0 + i32.load8_s + local.set $3 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store8 + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store8 offset=2 end + local.get $0 + i32.load8_s + local.set $5 + local.get $0 + i32.load8_s offset=1 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store8 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store8 offset=1 return end local.get $0 @@ -34745,118 +34733,112 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - i32.load8_u offset=1 - local.set $3 - local.get $0 - i32.load8_u offset=2 - local.set $4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store8 offset=1 - local.get $4 - local.get $3 - local.get $5 - select - local.set $4 - local.get $0 - i32.load8_u - local.set $3 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store8 - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store8 offset=2 - end - local.get $0 - i32.load8_u - local.set $5 - local.get $0 - i32.load8_u offset=1 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i32.store8 - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i32.store8 offset=1 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + local.get $0 + i32.load8_u offset=1 + local.set $3 + local.get $0 + i32.load8_u offset=2 + local.set $4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store8 offset=1 + local.get $4 + local.get $3 + local.get $5 + select + local.set $4 + local.get $0 + i32.load8_u + local.set $3 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store8 + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store8 offset=2 end + local.get $0 + i32.load8_u + local.set $5 + local.get $0 + i32.load8_u offset=1 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store8 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store8 offset=1 return end local.get $0 @@ -35745,118 +35727,112 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - i32.load16_s offset=2 - local.set $3 - local.get $0 - i32.load16_s offset=4 - local.set $4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store16 offset=2 - local.get $4 - local.get $3 - local.get $5 - select - local.set $4 - local.get $0 - i32.load16_s - local.set $3 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store16 - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store16 offset=4 - end - local.get $0 - i32.load16_s - local.set $5 - local.get $0 - i32.load16_s offset=2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i32.store16 - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i32.store16 offset=2 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + local.get $0 + i32.load16_s offset=2 + local.set $3 + local.get $0 + i32.load16_s offset=4 + local.set $4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store16 offset=2 + local.get $4 + local.get $3 + local.get $5 + select + local.set $4 + local.get $0 + i32.load16_s + local.set $3 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store16 + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store16 offset=4 end + local.get $0 + i32.load16_s + local.set $5 + local.get $0 + i32.load16_s offset=2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store16 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store16 offset=2 return end local.get $0 @@ -36688,118 +36664,112 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - i32.load16_u offset=2 - local.set $3 - local.get $0 - i32.load16_u offset=4 - local.set $4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store16 offset=2 - local.get $4 - local.get $3 - local.get $5 - select - local.set $4 - local.get $0 - i32.load16_u - local.set $3 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store16 - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store16 offset=4 - end - local.get $0 - i32.load16_u - local.set $5 - local.get $0 - i32.load16_u offset=2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i32.store16 - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i32.store16 offset=2 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + local.get $0 + i32.load16_u offset=2 + local.set $3 + local.get $0 + i32.load16_u offset=4 + local.set $4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store16 offset=2 + local.get $4 + local.get $3 + local.get $5 + select + local.set $4 + local.get $0 + i32.load16_u + local.set $3 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store16 + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store16 offset=4 end + local.get $0 + i32.load16_u + local.set $5 + local.get $0 + i32.load16_u offset=2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store16 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store16 offset=2 return end local.get $0 @@ -37645,118 +37615,112 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store offset=4 - local.get $4 - local.get $3 - local.get $5 - select - local.set $4 - local.get $0 - i32.load - local.set $3 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store offset=8 - end - local.get $0 - i32.load - local.set $5 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i32.store - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i32.store offset=4 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 + local.set $4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store offset=4 + local.get $4 + local.get $3 + local.get $5 + select + local.set $4 + local.get $0 + i32.load + local.set $3 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store offset=8 end + local.get $0 + i32.load + local.set $5 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store offset=4 return end local.get $0 @@ -38582,118 +38546,112 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - i32.load offset=4 - local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store offset=4 - local.get $4 - local.get $3 - local.get $5 - select - local.set $4 - local.get $0 - i32.load - local.set $3 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $5 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store offset=8 - end - local.get $0 - i32.load - local.set $5 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i32.store - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i32.store offset=4 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $0 + i32.load offset=8 + local.set $4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store offset=4 + local.get $4 + local.get $3 + local.get $5 + select + local.set $4 + local.get $0 + i32.load + local.set $3 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $5 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store offset=8 end + local.get $0 + i32.load + local.set $5 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store offset=4 return end local.get $0 @@ -39525,118 +39483,112 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - i64.load offset=8 - local.set $4 - local.get $0 - i64.load offset=16 - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - i64.store offset=8 - local.get $5 - local.get $4 - local.get $3 - select - local.set $5 - local.get $0 - i64.load - local.set $4 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - i64.store - local.get $0 - local.get $5 - local.get $4 - local.get $3 - select - i64.store offset=16 - end - local.get $0 - i64.load - local.set $5 - local.get $0 - i64.load offset=8 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i64.store - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i64.store offset=8 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + local.get $0 + i64.load offset=8 + local.set $4 + local.get $0 + i64.load offset=16 + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i64.store offset=8 + local.get $5 + local.get $4 + local.get $3 + select + local.set $5 + local.get $0 + i64.load + local.set $4 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i64.store + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i64.store offset=16 end + local.get $0 + i64.load + local.set $5 + local.get $0 + i64.load offset=8 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i64.store + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i64.store offset=8 return end local.get $0 @@ -40468,118 +40420,112 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - i64.load offset=8 - local.set $4 - local.get $0 - i64.load offset=16 - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - i64.store offset=8 - local.get $5 - local.get $4 - local.get $3 - select - local.set $5 - local.get $0 - i64.load - local.set $4 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - i64.store - local.get $0 - local.get $5 - local.get $4 - local.get $3 - select - i64.store offset=16 - end - local.get $0 - i64.load - local.set $5 - local.get $0 - i64.load offset=8 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - i64.store - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - i64.store offset=8 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + local.get $0 + i64.load offset=8 + local.set $4 + local.get $0 + i64.load offset=16 + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i64.store offset=8 + local.get $5 + local.get $4 + local.get $3 + select + local.set $5 + local.get $0 + i64.load + local.set $4 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i64.store + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i64.store offset=16 end + local.get $0 + i64.load + local.set $5 + local.get $0 + i64.load offset=8 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i64_i64_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i64.store + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i64.store offset=8 return end local.get $0 @@ -41411,118 +41357,112 @@ i32.const 128 i32.le_s if + local.get $1 + i32.const 1 + i32.le_s + if + return + end i32.const 0 i32.const 1 i32.lt_s drop block $break|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - local.get $3 - i32.const 1 - i32.eq - br_if $case2|0 - local.get $3 - i32.const 0 - i32.eq - br_if $case3|0 - br $break|0 - end - local.get $0 - f32.load offset=4 - local.set $4 - local.get $0 - f32.load offset=8 - local.set $5 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - f32.store offset=4 - local.get $5 - local.get $4 - local.get $3 - select - local.set $5 - local.get $0 - f32.load - local.set $4 - local.get $4 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - f32.store - local.get $0 - local.get $5 - local.get $4 - local.get $3 - select - f32.store offset=8 - end - local.get $0 - f32.load - local.set $5 - local.get $0 - f32.load offset=4 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u + block $case1|0 + block $case0|0 + local.get $1 local.set $3 - local.get $0 - local.get $5 - local.get $4 local.get $3 - select - f32.store - local.get $0 - local.get $4 - local.get $5 + i32.const 3 + i32.eq + br_if $case0|0 local.get $3 - select - f32.store offset=4 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 end + local.get $0 + f32.load offset=4 + local.set $4 + local.get $0 + f32.load offset=8 + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + f32.store offset=4 + local.get $5 + local.get $4 + local.get $3 + select + local.set $5 + local.get $0 + f32.load + local.set $4 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + f32.store + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + f32.store offset=8 end + local.get $0 + f32.load + local.set $5 + local.get $0 + f32.load offset=4 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $f32_f32_=>_i32) + i32.const 31 + i32.shr_u + local.set $3 + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + f32.store + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + f32.store offset=4 return end local.get $0 From 0a9beedf8bee34675345835fa6f53f34b5eb0140 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 7 Jul 2021 11:58:20 +0300 Subject: [PATCH 19/29] upd fixture again --- tests/compiler/std-wasi/crypto.optimized.wat | 8 ++++---- tests/compiler/std-wasi/crypto.untouched.wat | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/compiler/std-wasi/crypto.optimized.wat b/tests/compiler/std-wasi/crypto.optimized.wat index 6cdd9c5ad6..563938aaaf 100644 --- a/tests/compiler/std-wasi/crypto.optimized.wat +++ b/tests/compiler/std-wasi/crypto.optimized.wat @@ -4221,7 +4221,7 @@ if i32.const 1472 i32.const 1680 - i32.const 159 + i32.const 160 i32.const 45 call $~lib/wasi/index/abort unreachable @@ -4952,7 +4952,7 @@ if i32.const 1472 i32.const 1680 - i32.const 1826 + i32.const 1815 i32.const 5 call $~lib/wasi/index/abort unreachable @@ -4971,7 +4971,7 @@ else i32.const 1168 i32.const 1680 - i32.const 1835 + i32.const 1824 i32.const 7 call $~lib/wasi/index/abort unreachable @@ -4986,7 +4986,7 @@ if i32.const 1168 i32.const 1680 - i32.const 1840 + i32.const 1829 i32.const 7 call $~lib/wasi/index/abort unreachable diff --git a/tests/compiler/std-wasi/crypto.untouched.wat b/tests/compiler/std-wasi/crypto.untouched.wat index e63521db77..88aba0c0bd 100644 --- a/tests/compiler/std-wasi/crypto.untouched.wat +++ b/tests/compiler/std-wasi/crypto.untouched.wat @@ -5749,7 +5749,7 @@ if i32.const 448 i32.const 656 - i32.const 159 + i32.const 160 i32.const 45 call $~lib/wasi/index/abort unreachable @@ -6247,7 +6247,7 @@ if i32.const 448 i32.const 656 - i32.const 1826 + i32.const 1815 i32.const 5 call $~lib/wasi/index/abort unreachable @@ -6266,7 +6266,7 @@ if i32.const 144 i32.const 656 - i32.const 1831 + i32.const 1820 i32.const 9 call $~lib/wasi/index/abort unreachable @@ -6278,7 +6278,7 @@ else i32.const 144 i32.const 656 - i32.const 1835 + i32.const 1824 i32.const 7 call $~lib/wasi/index/abort unreachable @@ -6296,7 +6296,7 @@ if i32.const 144 i32.const 656 - i32.const 1840 + i32.const 1829 i32.const 7 call $~lib/wasi/index/abort unreachable From 270926e5f545c24ef308400cad6a58c7d1cda22a Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 7 Jul 2021 15:04:23 +0300 Subject: [PATCH 20/29] fix stability for len <= 3 --- std/assembly/util/sort.ts | 24 +- tests/compiler/std/array.optimized.wat | 196 +++++----- tests/compiler/std/array.untouched.wat | 358 +++++++++--------- tests/compiler/std/typedarray.optimized.wat | 320 ++++++++--------- tests/compiler/std/typedarray.untouched.wat | 380 ++++++++++---------- 5 files changed, 639 insertions(+), 639 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index f1cb9a7fc0..61c2284eca 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -72,22 +72,22 @@ export function SORT( if (ASC_SHRINK_LEVEL < 1) { switch (len) { case 3: { - let a = load(ptr, 1 << alignof()); - let b = load(ptr, 2 << alignof()); - let c = comparator(a, b) >>> 31; - store(ptr, select(a, b, c), 1 << alignof()); - b = select(b, a, c); - a = load(ptr, 0); - c = comparator(a, b) >>> 31; - store(ptr, select(a, b, c), 0); - store(ptr, select(b, a, c), 2 << alignof()); + let a = load(ptr, 0 << alignof()); + let b = load(ptr, 1 << alignof()); + let c = comparator(a, b) > 0; + store(ptr, select(b, a, c), 0); + a = select(a, b, c); + b = load(ptr, 2 << alignof()); + c = comparator(a, b) > 0; + store(ptr, select(b, a, c), 1 << alignof()); + store(ptr, select(a, b, c), 2 << alignof()); } case 2: { let a = load(ptr, 0); let b = load(ptr, 1 << alignof()); - let c = comparator(a, b) >>> 31; - store(ptr, select(a, b, c), 0); - store(ptr, select(b, a, c), 1 << alignof()); + let c = comparator(a, b) > 0; + store(ptr, select(b, a, c), 0); + store(ptr, select(a, b, c), 1 << alignof()); return; } } diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 4581d09b14..82f73f9d26 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -5026,49 +5026,49 @@ br $break|0 end local.get $0 - f32.load offset=4 + f32.load local.set $16 local.get $0 - f32.load offset=8 + f32.load offset=4 local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $16 local.get $14 local.get $16 + local.get $16 local.get $14 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $1 select - f32.store offset=4 + f32.store local.get $0 - f32.load + f32.load offset=8 local.set $12 i32.const 2 global.set $~argumentsLength - local.get $12 - local.get $14 local.get $16 + local.get $14 local.get $1 select local.tee $16 + local.get $12 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $1 local.get $0 local.get $12 local.get $16 local.get $1 select - f32.store + f32.store offset=4 local.get $0 local.get $16 local.get $12 @@ -5085,21 +5085,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $16 local.get $14 local.get $16 + local.get $16 local.get $14 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $1 select f32.store local.get $0 - local.get $14 local.get $16 + local.get $14 local.get $1 select f32.store offset=4 @@ -5936,49 +5936,49 @@ br $break|0 end local.get $0 - f64.load offset=8 + f64.load local.set $16 local.get $0 - f64.load offset=16 + f64.load offset=8 local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $16 local.get $14 local.get $16 + local.get $16 local.get $14 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $1 select - f64.store offset=8 + f64.store local.get $0 - f64.load + f64.load offset=16 local.set $12 i32.const 2 global.set $~argumentsLength - local.get $12 - local.get $14 local.get $16 + local.get $14 local.get $1 select local.tee $16 + local.get $12 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $1 local.get $0 local.get $12 local.get $16 local.get $1 select - f64.store + f64.store offset=8 local.get $0 local.get $16 local.get $12 @@ -5995,21 +5995,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $16 local.get $14 local.get $16 + local.get $16 local.get $14 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $1 select f64.store local.get $0 - local.get $14 local.get $16 + local.get $14 local.get $1 select f64.store offset=8 @@ -6798,49 +6798,49 @@ br $break|0 end local.get $0 - i32.load offset=4 + i32.load local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=4 local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $5 select - i32.store offset=4 + i32.store local.get $0 - i32.load + i32.load offset=8 local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 - local.get $4 local.get $1 + local.get $4 local.get $5 select local.tee $1 + local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $4 local.get $0 local.get $3 local.get $1 local.get $4 select - i32.store + i32.store offset=4 local.get $0 local.get $1 local.get $3 @@ -6857,21 +6857,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $2 select i32.store local.get $0 - local.get $4 local.get $1 + local.get $4 local.get $2 select i32.store offset=4 @@ -7615,49 +7615,49 @@ br $break|0 end local.get $0 - i32.load offset=4 + i32.load local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=4 local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $5 select - i32.store offset=4 + i32.store local.get $0 - i32.load + i32.load offset=8 local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 - local.get $4 local.get $1 + local.get $4 local.get $5 select local.tee $1 + local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $4 local.get $0 local.get $3 local.get $1 local.get $4 select - i32.store + i32.store offset=4 local.get $0 local.get $1 local.get $3 @@ -7674,21 +7674,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $2 select i32.store local.get $0 - local.get $4 local.get $1 + local.get $4 local.get $2 select i32.store offset=4 @@ -8467,57 +8467,57 @@ global.get $~lib/memory/__stack_pointer local.tee $4 local.get $0 - i32.load offset=4 + i32.load local.tee $1 i32.store local.get $4 local.get $0 - i32.load offset=8 + i32.load offset=4 local.tee $4 i32.store offset=4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $3 select - i32.store offset=4 + i32.store global.get $~lib/memory/__stack_pointer local.tee $5 - local.get $4 local.get $1 + local.get $4 local.get $3 select local.tee $1 - i32.store offset=4 + i32.store local.get $5 local.get $0 - i32.load + i32.load offset=8 local.tee $4 - i32.store + i32.store offset=4 i32.const 2 global.set $~argumentsLength local.get $0 local.get $4 local.get $1 - local.get $4 local.get $1 + local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $3 select - i32.store + i32.store offset=4 local.get $0 local.get $1 local.get $4 @@ -8539,21 +8539,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $2 select i32.store local.get $0 - local.get $4 local.get $1 + local.get $4 local.get $2 select i32.store offset=4 @@ -12481,49 +12481,49 @@ br $break|0 end local.get $0 - i32.load8_u offset=1 + i32.load8_u local.set $1 local.get $0 - i32.load8_u offset=2 + i32.load8_u offset=1 local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $5 select - i32.store8 offset=1 + i32.store8 local.get $0 - i32.load8_u + i32.load8_u offset=2 local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 - local.get $4 local.get $1 + local.get $4 local.get $5 select local.tee $1 + local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $4 local.get $0 local.get $3 local.get $1 local.get $4 select - i32.store8 + i32.store8 offset=1 local.get $0 local.get $1 local.get $3 @@ -12540,21 +12540,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $2 select i32.store8 local.get $0 - local.get $4 local.get $1 + local.get $4 local.get $2 select i32.store8 offset=1 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 86cdaff8e2..9364be2b25 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -7263,10 +7263,10 @@ br $break|0 end local.get $0 - f32.load offset=4 + f32.load local.set $4 local.get $0 - f32.load offset=8 + f32.load offset=4 local.set $5 local.get $4 local.get $5 @@ -7275,23 +7275,23 @@ local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select - f32.store offset=4 - local.get $5 + f32.store local.get $4 + local.get $5 local.get $3 select - local.set $5 - local.get $0 - f32.load local.set $4 + local.get $0 + f32.load offset=8 + local.set $5 local.get $4 local.get $5 i32.const 2 @@ -7299,18 +7299,18 @@ local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select - f32.store + f32.store offset=4 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select f32.store offset=8 @@ -7328,18 +7328,18 @@ local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select f32.store local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select f32.store offset=4 @@ -8293,10 +8293,10 @@ br $break|0 end local.get $0 - f64.load offset=8 + f64.load local.set $4 local.get $0 - f64.load offset=16 + f64.load offset=8 local.set $5 local.get $4 local.get $5 @@ -8305,23 +8305,23 @@ local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select - f64.store offset=8 - local.get $5 + f64.store local.get $4 + local.get $5 local.get $3 select - local.set $5 - local.get $0 - f64.load local.set $4 + local.get $0 + f64.load offset=16 + local.set $5 local.get $4 local.get $5 i32.const 2 @@ -8329,18 +8329,18 @@ local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select - f64.store + f64.store offset=8 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select f64.store offset=16 @@ -8358,18 +8358,18 @@ local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select f64.store local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select f64.store offset=8 @@ -9351,10 +9351,10 @@ br $break|0 end local.get $0 - i32.load offset=4 + i32.load local.set $3 local.get $0 - i32.load offset=8 + i32.load offset=4 local.set $4 local.get $3 local.get $4 @@ -9363,23 +9363,23 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store offset=4 - local.get $4 + i32.store local.get $3 + local.get $4 local.get $5 select - local.set $4 - local.get $0 - i32.load local.set $3 + local.get $0 + i32.load offset=8 + local.set $4 local.get $3 local.get $4 i32.const 2 @@ -9387,18 +9387,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store + i32.store offset=4 local.get $0 - local.get $4 local.get $3 + local.get $4 local.get $5 select i32.store offset=8 @@ -9416,18 +9416,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i32.store local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i32.store offset=4 @@ -10273,10 +10273,10 @@ br $break|0 end local.get $0 - i32.load offset=4 + i32.load local.set $3 local.get $0 - i32.load offset=8 + i32.load offset=4 local.set $4 local.get $3 local.get $4 @@ -10285,23 +10285,23 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store offset=4 - local.get $4 + i32.store local.get $3 + local.get $4 local.get $5 select - local.set $4 - local.get $0 - i32.load local.set $3 + local.get $0 + i32.load offset=8 + local.set $4 local.get $3 local.get $4 i32.const 2 @@ -10309,18 +10309,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store + i32.store offset=4 local.get $0 - local.get $4 local.get $3 + local.get $4 local.get $5 select i32.store offset=8 @@ -10338,18 +10338,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i32.store local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i32.store offset=4 @@ -11295,12 +11295,12 @@ end global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.load local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 + i32.load offset=4 local.tee $4 i32.store offset=4 local.get $3 @@ -11310,27 +11310,27 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store offset=4 + i32.store global.get $~lib/memory/__stack_pointer - local.get $4 local.get $3 + local.get $4 local.get $5 select - local.tee $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load local.tee $3 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $4 + i32.store offset=4 local.get $3 local.get $4 i32.const 2 @@ -11338,18 +11338,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store + i32.store offset=4 local.get $0 - local.get $4 local.get $3 + local.get $4 local.get $5 select i32.store offset=8 @@ -11371,18 +11371,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i32.store local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i32.store offset=4 @@ -12217,12 +12217,12 @@ end global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.load local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 + i32.load offset=4 local.tee $4 i32.store offset=4 local.get $3 @@ -12232,27 +12232,27 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store offset=4 + i32.store global.get $~lib/memory/__stack_pointer - local.get $4 local.get $3 + local.get $4 local.get $5 select - local.tee $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load local.tee $3 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $4 + i32.store offset=4 local.get $3 local.get $4 i32.const 2 @@ -12260,18 +12260,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store + i32.store offset=4 local.get $0 - local.get $4 local.get $3 + local.get $4 local.get $5 select i32.store offset=8 @@ -12293,18 +12293,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i32.store local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i32.store offset=4 @@ -13052,12 +13052,12 @@ end global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.load local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 + i32.load offset=4 local.tee $4 i32.store offset=4 local.get $3 @@ -13067,27 +13067,27 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store offset=4 + i32.store global.get $~lib/memory/__stack_pointer - local.get $4 local.get $3 + local.get $4 local.get $5 select - local.tee $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load local.tee $3 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $4 + i32.store offset=4 local.get $3 local.get $4 i32.const 2 @@ -13095,18 +13095,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store + i32.store offset=4 local.get $0 - local.get $4 local.get $3 + local.get $4 local.get $5 select i32.store offset=8 @@ -13128,18 +13128,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i32.store local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i32.store offset=4 @@ -14246,12 +14246,12 @@ end global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.load local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 + i32.load offset=4 local.tee $4 i32.store offset=4 local.get $3 @@ -14261,27 +14261,27 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store offset=4 + i32.store global.get $~lib/memory/__stack_pointer - local.get $4 local.get $3 + local.get $4 local.get $5 select - local.tee $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.load local.tee $3 i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $4 + i32.store offset=4 local.get $3 local.get $4 i32.const 2 @@ -14289,18 +14289,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store + i32.store offset=4 local.get $0 - local.get $4 local.get $3 + local.get $4 local.get $5 select i32.store offset=8 @@ -14322,18 +14322,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i32.store local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i32.store offset=4 @@ -19933,10 +19933,10 @@ br $break|0 end local.get $0 - i32.load8_u offset=1 + i32.load8_u local.set $3 local.get $0 - i32.load8_u offset=2 + i32.load8_u offset=1 local.set $4 local.get $3 local.get $4 @@ -19945,23 +19945,23 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store8 offset=1 - local.get $4 + i32.store8 local.get $3 + local.get $4 local.get $5 select - local.set $4 - local.get $0 - i32.load8_u local.set $3 + local.get $0 + i32.load8_u offset=2 + local.set $4 local.get $3 local.get $4 i32.const 2 @@ -19969,18 +19969,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store8 + i32.store8 offset=1 local.get $0 - local.get $4 local.get $3 + local.get $4 local.get $5 select i32.store8 offset=2 @@ -19998,18 +19998,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i32.store8 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i32.store8 offset=1 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 7269e877ff..0aba6b7768 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3492,49 +3492,49 @@ br $break|0 end local.get $0 - f64.load offset=8 + f64.load local.set $16 local.get $0 - f64.load offset=16 + f64.load offset=8 local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $16 local.get $14 local.get $16 + local.get $16 local.get $14 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $1 select - f64.store offset=8 + f64.store local.get $0 - f64.load + f64.load offset=16 local.set $12 i32.const 2 global.set $~argumentsLength - local.get $12 - local.get $14 local.get $16 + local.get $14 local.get $1 select local.tee $16 + local.get $12 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $1 local.get $0 local.get $12 local.get $16 local.get $1 select - f64.store + f64.store offset=8 local.get $0 local.get $16 local.get $12 @@ -3551,21 +3551,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $16 local.get $14 local.get $16 + local.get $16 local.get $14 local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $1 select f64.store local.get $0 - local.get $14 local.get $16 + local.get $14 local.get $1 select f64.store offset=8 @@ -29656,49 +29656,49 @@ br $break|0 end local.get $0 - i32.load8_s offset=1 + i32.load8_s local.set $1 local.get $0 - i32.load8_s offset=2 + i32.load8_s offset=1 local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $5 select - i32.store8 offset=1 + i32.store8 local.get $0 - i32.load8_s + i32.load8_s offset=2 local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 - local.get $4 local.get $1 + local.get $4 local.get $5 select local.tee $1 + local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $4 local.get $0 local.get $3 local.get $1 local.get $4 select - i32.store8 + i32.store8 offset=1 local.get $0 local.get $1 local.get $3 @@ -29715,21 +29715,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $2 select i32.store8 local.get $0 - local.get $4 local.get $1 + local.get $4 local.get $2 select i32.store8 offset=1 @@ -30446,49 +30446,49 @@ br $break|0 end local.get $0 - i32.load8_u offset=1 + i32.load8_u local.set $1 local.get $0 - i32.load8_u offset=2 + i32.load8_u offset=1 local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $5 select - i32.store8 offset=1 + i32.store8 local.get $0 - i32.load8_u + i32.load8_u offset=2 local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 - local.get $4 local.get $1 + local.get $4 local.get $5 select local.tee $1 + local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $4 local.get $0 local.get $3 local.get $1 local.get $4 select - i32.store8 + i32.store8 offset=1 local.get $0 local.get $1 local.get $3 @@ -30505,21 +30505,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $2 select i32.store8 local.get $0 - local.get $4 local.get $1 + local.get $4 local.get $2 select i32.store8 offset=1 @@ -31284,49 +31284,49 @@ br $break|0 end local.get $0 - i32.load16_s offset=2 + i32.load16_s local.set $1 local.get $0 - i32.load16_s offset=4 + i32.load16_s offset=2 local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $5 select - i32.store16 offset=2 + i32.store16 local.get $0 - i32.load16_s + i32.load16_s offset=4 local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 - local.get $4 local.get $1 + local.get $4 local.get $5 select local.tee $1 + local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $4 local.get $0 local.get $3 local.get $1 local.get $4 select - i32.store16 + i32.store16 offset=2 local.get $0 local.get $1 local.get $3 @@ -31343,21 +31343,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $2 select i32.store16 local.get $0 - local.get $4 local.get $1 + local.get $4 local.get $2 select i32.store16 offset=2 @@ -32116,49 +32116,49 @@ br $break|0 end local.get $0 - i32.load16_u offset=2 + i32.load16_u local.set $1 local.get $0 - i32.load16_u offset=4 + i32.load16_u offset=2 local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $5 select - i32.store16 offset=2 + i32.store16 local.get $0 - i32.load16_u + i32.load16_u offset=4 local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 - local.get $4 local.get $1 + local.get $4 local.get $5 select local.tee $1 + local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $4 local.get $0 local.get $3 local.get $1 local.get $4 select - i32.store16 + i32.store16 offset=2 local.get $0 local.get $1 local.get $3 @@ -32175,21 +32175,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $2 select i32.store16 local.get $0 - local.get $4 local.get $1 + local.get $4 local.get $2 select i32.store16 offset=2 @@ -32958,49 +32958,49 @@ br $break|0 end local.get $0 - i32.load offset=4 + i32.load local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=4 local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $5 select - i32.store offset=4 + i32.store local.get $0 - i32.load + i32.load offset=8 local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 - local.get $4 local.get $1 + local.get $4 local.get $5 select local.tee $1 + local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $4 local.get $0 local.get $3 local.get $1 local.get $4 select - i32.store + i32.store offset=4 local.get $0 local.get $1 local.get $3 @@ -33017,21 +33017,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $2 select i32.store local.get $0 - local.get $4 local.get $1 + local.get $4 local.get $2 select i32.store offset=4 @@ -33784,49 +33784,49 @@ br $break|0 end local.get $0 - i32.load offset=4 + i32.load local.set $1 local.get $0 - i32.load offset=8 + i32.load offset=4 local.set $4 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $5 select - i32.store offset=4 + i32.store local.get $0 - i32.load + i32.load offset=8 local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 - local.get $4 local.get $1 + local.get $4 local.get $5 select local.tee $1 + local.get $3 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $4 local.get $0 local.get $3 local.get $1 local.get $4 select - i32.store + i32.store offset=4 local.get $0 local.get $1 local.get $3 @@ -33843,21 +33843,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $1 local.get $4 local.get $1 + local.get $1 local.get $4 local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $2 select i32.store local.get $0 - local.get $4 local.get $1 + local.get $4 local.get $2 select i32.store offset=4 @@ -34617,49 +34617,49 @@ br $break|0 end local.get $0 - i64.load offset=8 + i64.load local.set $9 local.get $0 - i64.load offset=16 + i64.load offset=8 local.set $11 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $9 local.get $11 local.get $9 + local.get $9 local.get $11 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $1 select - i64.store offset=8 + i64.store local.get $0 - i64.load + i64.load offset=16 local.set $13 i32.const 2 global.set $~argumentsLength - local.get $13 - local.get $11 local.get $9 + local.get $11 local.get $1 select local.tee $9 + local.get $13 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $1 local.get $0 local.get $13 local.get $9 local.get $1 select - i64.store + i64.store offset=8 local.get $0 local.get $9 local.get $13 @@ -34676,21 +34676,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $9 local.get $11 local.get $9 + local.get $9 local.get $11 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $1 select i64.store local.get $0 - local.get $11 local.get $9 + local.get $11 local.get $1 select i64.store offset=8 @@ -35450,49 +35450,49 @@ br $break|0 end local.get $0 - i64.load offset=8 + i64.load local.set $9 local.get $0 - i64.load offset=16 + i64.load offset=8 local.set $11 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $9 local.get $11 local.get $9 + local.get $9 local.get $11 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $1 select - i64.store offset=8 + i64.store local.get $0 - i64.load + i64.load offset=16 local.set $13 i32.const 2 global.set $~argumentsLength - local.get $13 - local.get $11 local.get $9 + local.get $11 local.get $1 select local.tee $9 + local.get $13 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $1 local.get $0 local.get $13 local.get $9 local.get $1 select - i64.store + i64.store offset=8 local.get $0 local.get $9 local.get $13 @@ -35509,21 +35509,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $9 local.get $11 local.get $9 + local.get $9 local.get $11 local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $1 select i64.store local.get $0 - local.get $11 local.get $9 + local.get $11 local.get $1 select i64.store offset=8 @@ -36284,49 +36284,49 @@ br $break|0 end local.get $0 - f32.load offset=4 + f32.load local.set $16 local.get $0 - f32.load offset=8 + f32.load offset=4 local.set $14 i32.const 2 global.set $~argumentsLength local.get $0 - local.get $16 local.get $14 local.get $16 + local.get $16 local.get $14 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $1 select - f32.store offset=4 + f32.store local.get $0 - f32.load + f32.load offset=8 local.set $12 i32.const 2 global.set $~argumentsLength - local.get $12 - local.get $14 local.get $16 + local.get $14 local.get $1 select local.tee $16 + local.get $12 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $1 local.get $0 local.get $12 local.get $16 local.get $1 select - f32.store + f32.store offset=4 local.get $0 local.get $16 local.get $12 @@ -36343,21 +36343,21 @@ i32.const 2 global.set $~argumentsLength local.get $0 - local.get $16 local.get $14 local.get $16 + local.get $16 local.get $14 local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.tee $1 select f32.store local.get $0 - local.get $14 local.get $16 + local.get $14 local.get $1 select f32.store offset=4 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index b4611cda2d..e836567e40 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -4076,10 +4076,10 @@ br $break|0 end local.get $0 - f64.load offset=8 + f64.load local.set $4 local.get $0 - f64.load offset=16 + f64.load offset=8 local.set $5 local.get $4 local.get $5 @@ -4088,23 +4088,23 @@ local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select - f64.store offset=8 - local.get $5 + f64.store local.get $4 + local.get $5 local.get $3 select - local.set $5 - local.get $0 - f64.load local.set $4 + local.get $0 + f64.load offset=16 + local.set $5 local.get $4 local.get $5 i32.const 2 @@ -4112,18 +4112,18 @@ local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select - f64.store + f64.store offset=8 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select f64.store offset=16 @@ -4141,18 +4141,18 @@ local.get $2 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select f64.store local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select f64.store offset=8 @@ -33822,10 +33822,10 @@ br $break|0 end local.get $0 - i32.load8_s offset=1 + i32.load8_s local.set $3 local.get $0 - i32.load8_s offset=2 + i32.load8_s offset=1 local.set $4 local.get $3 local.get $4 @@ -33834,23 +33834,23 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store8 offset=1 - local.get $4 + i32.store8 local.get $3 + local.get $4 local.get $5 select - local.set $4 - local.get $0 - i32.load8_s local.set $3 + local.get $0 + i32.load8_s offset=2 + local.set $4 local.get $3 local.get $4 i32.const 2 @@ -33858,18 +33858,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store8 + i32.store8 offset=1 local.get $0 - local.get $4 local.get $3 + local.get $4 local.get $5 select i32.store8 offset=2 @@ -33887,18 +33887,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i32.store8 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i32.store8 offset=1 @@ -34759,10 +34759,10 @@ br $break|0 end local.get $0 - i32.load8_u offset=1 + i32.load8_u local.set $3 local.get $0 - i32.load8_u offset=2 + i32.load8_u offset=1 local.set $4 local.get $3 local.get $4 @@ -34771,23 +34771,23 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store8 offset=1 - local.get $4 + i32.store8 local.get $3 + local.get $4 local.get $5 select - local.set $4 - local.get $0 - i32.load8_u local.set $3 + local.get $0 + i32.load8_u offset=2 + local.set $4 local.get $3 local.get $4 i32.const 2 @@ -34795,18 +34795,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store8 + i32.store8 offset=1 local.get $0 - local.get $4 local.get $3 + local.get $4 local.get $5 select i32.store8 offset=2 @@ -34824,18 +34824,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i32.store8 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i32.store8 offset=1 @@ -35753,10 +35753,10 @@ br $break|0 end local.get $0 - i32.load16_s offset=2 + i32.load16_s local.set $3 local.get $0 - i32.load16_s offset=4 + i32.load16_s offset=2 local.set $4 local.get $3 local.get $4 @@ -35765,23 +35765,23 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store16 offset=2 - local.get $4 + i32.store16 local.get $3 + local.get $4 local.get $5 select - local.set $4 - local.get $0 - i32.load16_s local.set $3 + local.get $0 + i32.load16_s offset=4 + local.set $4 local.get $3 local.get $4 i32.const 2 @@ -35789,18 +35789,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store16 + i32.store16 offset=2 local.get $0 - local.get $4 local.get $3 + local.get $4 local.get $5 select i32.store16 offset=4 @@ -35818,18 +35818,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i32.store16 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i32.store16 offset=2 @@ -36690,10 +36690,10 @@ br $break|0 end local.get $0 - i32.load16_u offset=2 + i32.load16_u local.set $3 local.get $0 - i32.load16_u offset=4 + i32.load16_u offset=2 local.set $4 local.get $3 local.get $4 @@ -36702,23 +36702,23 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store16 offset=2 - local.get $4 + i32.store16 local.get $3 + local.get $4 local.get $5 select - local.set $4 - local.get $0 - i32.load16_u local.set $3 + local.get $0 + i32.load16_u offset=4 + local.set $4 local.get $3 local.get $4 i32.const 2 @@ -36726,18 +36726,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store16 + i32.store16 offset=2 local.get $0 - local.get $4 local.get $3 + local.get $4 local.get $5 select i32.store16 offset=4 @@ -36755,18 +36755,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i32.store16 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i32.store16 offset=2 @@ -37641,10 +37641,10 @@ br $break|0 end local.get $0 - i32.load offset=4 + i32.load local.set $3 local.get $0 - i32.load offset=8 + i32.load offset=4 local.set $4 local.get $3 local.get $4 @@ -37653,23 +37653,23 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store offset=4 - local.get $4 + i32.store local.get $3 + local.get $4 local.get $5 select - local.set $4 - local.get $0 - i32.load local.set $3 + local.get $0 + i32.load offset=8 + local.set $4 local.get $3 local.get $4 i32.const 2 @@ -37677,18 +37677,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store + i32.store offset=4 local.get $0 - local.get $4 local.get $3 + local.get $4 local.get $5 select i32.store offset=8 @@ -37706,18 +37706,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i32.store local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i32.store offset=4 @@ -38572,10 +38572,10 @@ br $break|0 end local.get $0 - i32.load offset=4 + i32.load local.set $3 local.get $0 - i32.load offset=8 + i32.load offset=4 local.set $4 local.get $3 local.get $4 @@ -38584,23 +38584,23 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store offset=4 - local.get $4 + i32.store local.get $3 + local.get $4 local.get $5 select - local.set $4 - local.get $0 - i32.load local.set $3 + local.get $0 + i32.load offset=8 + local.set $4 local.get $3 local.get $4 i32.const 2 @@ -38608,18 +38608,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $5 local.get $0 - local.get $3 local.get $4 + local.get $3 local.get $5 select - i32.store + i32.store offset=4 local.get $0 - local.get $4 local.get $3 + local.get $4 local.get $5 select i32.store offset=8 @@ -38637,18 +38637,18 @@ local.get $2 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i32.store local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i32.store offset=4 @@ -39509,10 +39509,10 @@ br $break|0 end local.get $0 - i64.load offset=8 + i64.load local.set $4 local.get $0 - i64.load offset=16 + i64.load offset=8 local.set $5 local.get $4 local.get $5 @@ -39521,23 +39521,23 @@ local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select - i64.store offset=8 - local.get $5 + i64.store local.get $4 + local.get $5 local.get $3 select - local.set $5 - local.get $0 - i64.load local.set $4 + local.get $0 + i64.load offset=16 + local.set $5 local.get $4 local.get $5 i32.const 2 @@ -39545,18 +39545,18 @@ local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select - i64.store + i64.store offset=8 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i64.store offset=16 @@ -39574,18 +39574,18 @@ local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i64.store local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i64.store offset=8 @@ -40446,10 +40446,10 @@ br $break|0 end local.get $0 - i64.load offset=8 + i64.load local.set $4 local.get $0 - i64.load offset=16 + i64.load offset=8 local.set $5 local.get $4 local.get $5 @@ -40458,23 +40458,23 @@ local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select - i64.store offset=8 - local.get $5 + i64.store local.get $4 + local.get $5 local.get $3 select - local.set $5 - local.get $0 - i64.load local.set $4 + local.get $0 + i64.load offset=16 + local.set $5 local.get $4 local.get $5 i32.const 2 @@ -40482,18 +40482,18 @@ local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select - i64.store + i64.store offset=8 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i64.store offset=16 @@ -40511,18 +40511,18 @@ local.get $2 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select i64.store local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select i64.store offset=8 @@ -41383,10 +41383,10 @@ br $break|0 end local.get $0 - f32.load offset=4 + f32.load local.set $4 local.get $0 - f32.load offset=8 + f32.load offset=4 local.set $5 local.get $4 local.get $5 @@ -41395,23 +41395,23 @@ local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select - f32.store offset=4 - local.get $5 + f32.store local.get $4 + local.get $5 local.get $3 select - local.set $5 - local.get $0 - f32.load local.set $4 + local.get $0 + f32.load offset=8 + local.set $5 local.get $4 local.get $5 i32.const 2 @@ -41419,18 +41419,18 @@ local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select - f32.store + f32.store offset=4 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select f32.store offset=8 @@ -41448,18 +41448,18 @@ local.get $2 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u + i32.const 0 + i32.gt_s local.set $3 local.get $0 - local.get $5 local.get $4 + local.get $5 local.get $3 select f32.store local.get $0 - local.get $4 local.get $5 + local.get $4 local.get $3 select f32.store offset=4 From 9ca8fe5ebcab5fce3adf93298cd681ff4eef0683 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Wed, 7 Jul 2021 15:06:51 +0300 Subject: [PATCH 21/29] clean --- std/assembly/util/sort.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index 61c2284eca..1ab0f1dd80 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -72,7 +72,7 @@ export function SORT( if (ASC_SHRINK_LEVEL < 1) { switch (len) { case 3: { - let a = load(ptr, 0 << alignof()); + let a = load(ptr, 0); let b = load(ptr, 1 << alignof()); let c = comparator(a, b) > 0; store(ptr, select(b, a, c), 0); From 6c6b6dce617d6f15d4408101042d357eab6a7886 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Fri, 9 Jul 2021 17:45:51 +0300 Subject: [PATCH 22/29] remove redundant store --- std/assembly/util/sort.ts | 1 - tests/compiler/std/array.optimized.wat | 177 +++++------- tests/compiler/std/array.ts | 2 +- tests/compiler/std/array.untouched.wat | 90 ------- tests/compiler/std/typedarray.optimized.wat | 282 +++++++------------- tests/compiler/std/typedarray.untouched.wat | 100 ------- 6 files changed, 165 insertions(+), 487 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index 1ab0f1dd80..44aba04858 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -290,7 +290,6 @@ function mergeRuns( let b = load(buffer + (i << alignof())); let c = comparator(a, b) >>> 31; // c < 0 store(ptr + (k << alignof()), select(a, b, c)); - store(ptr + (k << alignof()), select(b, a, c)); j -= c; // i32(c < 0) i += c ^ 1; // i32(c >= 0) } diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 82f73f9d26..9ea1558c33 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -4863,16 +4863,16 @@ (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 f32) (local $9 f32) - (local $10 f32) + (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $10 local.get $6 i32.const 1 i32.add @@ -4889,10 +4889,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add f32.load f32.store @@ -4905,7 +4905,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $10 local.get $6 i32.sub i32.const 2 @@ -4936,14 +4936,14 @@ i32.shl i32.add f32.load - local.set $9 + local.set $8 local.get $4 local.get $2 i32.const 2 i32.shl i32.add f32.load - local.set $10 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 @@ -4951,11 +4951,10 @@ i32.const 2 i32.shl i32.add - local.tee $8 + local.get $8 local.get $9 - local.get $10 + local.get $8 local.get $9 - local.get $10 local.get $5 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -4964,12 +4963,6 @@ local.tee $7 select f32.store - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - f32.store local.get $6 local.get $7 i32.sub @@ -5773,16 +5766,16 @@ (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 f64) (local $9 f64) - (local $10 f64) + (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $10 local.get $6 i32.const 1 i32.add @@ -5799,10 +5792,10 @@ local.tee $2 i32.const 3 i32.shl - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add f64.load f64.store @@ -5815,7 +5808,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $10 local.get $6 i32.sub i32.const 3 @@ -5846,14 +5839,14 @@ i32.shl i32.add f64.load - local.set $9 + local.set $8 local.get $4 local.get $2 i32.const 3 i32.shl i32.add f64.load - local.set $10 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 @@ -5861,11 +5854,10 @@ i32.const 3 i32.shl i32.add - local.tee $8 + local.get $8 local.get $9 - local.get $10 + local.get $8 local.get $9 - local.get $10 local.get $5 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -5874,12 +5866,6 @@ local.tee $7 select f64.store - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - f64.store local.get $6 local.get $7 i32.sub @@ -6639,15 +6625,13 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $8 local.get $6 i32.const 1 i32.add @@ -6664,10 +6648,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add i32.load i32.store @@ -6680,7 +6664,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $8 local.get $6 i32.sub i32.const 2 @@ -6711,14 +6695,14 @@ i32.shl i32.add i32.load - local.set $9 + local.set $8 local.get $4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 @@ -6726,11 +6710,10 @@ i32.const 2 i32.shl i32.add - local.tee $8 - local.get $9 - local.get $10 - local.get $9 - local.get $10 + local.get $8 + local.get $7 + local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -6739,12 +6722,6 @@ local.tee $7 select i32.store - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - i32.store local.get $6 local.get $7 i32.sub @@ -7456,15 +7433,13 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $8 local.get $6 i32.const 1 i32.add @@ -7481,10 +7456,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add i32.load i32.store @@ -7497,7 +7472,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $8 local.get $6 i32.sub i32.const 2 @@ -7528,14 +7503,14 @@ i32.shl i32.add i32.load - local.set $9 + local.set $8 local.get $4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 @@ -7543,11 +7518,10 @@ i32.const 2 i32.shl i32.add - local.tee $8 - local.get $9 - local.get $10 - local.get $9 - local.get $10 + local.get $8 + local.get $7 + local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -7556,12 +7530,6 @@ local.tee $7 select i32.store - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - i32.store local.get $6 local.get $7 i32.sub @@ -8259,8 +8227,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -8285,7 +8251,7 @@ i32.sub local.tee $6 i32.add - local.set $8 + local.set $7 local.get $6 i32.const 1 i32.add @@ -8302,10 +8268,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $7 + local.tee $8 i32.add local.get $0 - local.get $7 + local.get $8 i32.add i32.load i32.store @@ -8318,7 +8284,7 @@ i32.gt_s if local.get $4 - local.get $8 + local.get $7 local.get $6 i32.sub i32.const 2 @@ -8344,23 +8310,23 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $8 local.get $4 local.get $6 i32.const 2 i32.shl i32.add i32.load - local.tee $8 + local.tee $7 i32.store - local.get $7 + local.get $8 local.get $4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.tee $7 + local.tee $8 i32.store offset=4 i32.const 2 global.set $~argumentsLength @@ -8369,32 +8335,26 @@ i32.const 2 i32.shl i32.add - local.tee $10 - local.get $8 local.get $7 local.get $8 local.get $7 + local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 31 i32.shr_u - local.tee $9 - select - i32.store - local.get $10 - local.get $7 - local.get $8 - local.get $9 + local.tee $7 select i32.store local.get $6 - local.get $9 + local.get $7 i32.sub local.set $6 local.get $2 - local.get $9 - i32.eqz + local.get $7 + i32.const 1 + i32.xor i32.add local.set $2 local.get $1 @@ -12334,15 +12294,13 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $8 local.get $6 i32.const 1 i32.add @@ -12357,10 +12315,10 @@ i32.const 1 i32.sub local.tee $2 - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add i32.load8_u i32.store8 @@ -12373,7 +12331,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $8 local.get $6 i32.sub i32.add @@ -12398,22 +12356,21 @@ local.get $6 i32.add i32.load8_u - local.set $9 + local.set $8 local.get $2 local.get $4 i32.add i32.load8_u - local.set $10 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 i32.add - local.tee $8 - local.get $9 - local.get $10 - local.get $9 - local.get $10 + local.get $8 + local.get $7 + local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -12422,12 +12379,6 @@ local.tee $7 select i32.store8 - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - i32.store8 local.get $6 local.get $7 i32.sub diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index dadaec189e..120224e33c 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -873,7 +873,7 @@ var i: i32; // Checks if an array is properly sorted function isSorted(data: Array, comparator: (a: T, b: T) => i32 = COMPARATOR()): bool { - for (let i: i32 = 1, len: i32 = data.length; i < len; i++) { + for (let i = 1, len = data.length; i < len; i++) { if (comparator(data[i - 1], data[i]) > 0) return false; } return true; diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 9364be2b25..f32cf899f8 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -7184,16 +7184,6 @@ local.get $13 select f32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - f32.store local.get $7 local.get $13 i32.sub @@ -8214,16 +8204,6 @@ local.get $13 select f64.store - local.get $0 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - f64.store local.get $7 local.get $13 i32.sub @@ -9274,16 +9254,6 @@ local.get $13 select i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i32.store local.get $7 local.get $13 i32.sub @@ -10196,16 +10166,6 @@ local.get $13 select i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i32.store local.get $7 local.get $13 i32.sub @@ -11198,16 +11158,6 @@ local.get $13 select i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i32.store local.get $7 local.get $13 i32.sub @@ -12120,16 +12070,6 @@ local.get $13 select i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i32.store local.get $7 local.get $13 i32.sub @@ -12955,16 +12895,6 @@ local.get $13 select i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i32.store local.get $7 local.get $13 i32.sub @@ -14149,16 +14079,6 @@ local.get $13 select i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i32.store local.get $7 local.get $13 i32.sub @@ -19856,16 +19776,6 @@ local.get $13 select i32.store8 - local.get $0 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i32.store8 local.get $7 local.get $13 i32.sub diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 0aba6b7768..d535e67248 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3329,16 +3329,16 @@ (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 f64) (local $9 f64) - (local $10 f64) + (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $10 local.get $6 i32.const 1 i32.add @@ -3355,10 +3355,10 @@ local.tee $2 i32.const 3 i32.shl - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add f64.load f64.store @@ -3371,7 +3371,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $10 local.get $6 i32.sub i32.const 3 @@ -3402,14 +3402,14 @@ i32.shl i32.add f64.load - local.set $9 + local.set $8 local.get $4 local.get $2 i32.const 3 i32.shl i32.add f64.load - local.set $10 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 @@ -3417,11 +3417,10 @@ i32.const 3 i32.shl i32.add - local.tee $8 + local.get $8 local.get $9 - local.get $10 + local.get $8 local.get $9 - local.get $10 local.get $5 i32.load call_indirect $0 (type $f64_f64_=>_i32) @@ -3430,12 +3429,6 @@ local.tee $7 select f64.store - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - f64.store local.get $6 local.get $7 i32.sub @@ -29509,15 +29502,13 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $8 local.get $6 i32.const 1 i32.add @@ -29532,10 +29523,10 @@ i32.const 1 i32.sub local.tee $2 - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add i32.load8_s i32.store8 @@ -29548,7 +29539,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $8 local.get $6 i32.sub i32.add @@ -29573,22 +29564,21 @@ local.get $6 i32.add i32.load8_s - local.set $9 + local.set $8 local.get $2 local.get $4 i32.add i32.load8_s - local.set $10 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 i32.add - local.tee $8 - local.get $9 - local.get $10 - local.get $9 - local.get $10 + local.get $8 + local.get $7 + local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -29597,12 +29587,6 @@ local.tee $7 select i32.store8 - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - i32.store8 local.get $6 local.get $7 i32.sub @@ -30299,15 +30283,13 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $8 local.get $6 i32.const 1 i32.add @@ -30322,10 +30304,10 @@ i32.const 1 i32.sub local.tee $2 - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add i32.load8_u i32.store8 @@ -30338,7 +30320,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $8 local.get $6 i32.sub i32.add @@ -30363,22 +30345,21 @@ local.get $6 i32.add i32.load8_u - local.set $9 + local.set $8 local.get $2 local.get $4 i32.add i32.load8_u - local.set $10 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 local.get $1 i32.add - local.tee $8 - local.get $9 - local.get $10 - local.get $9 - local.get $10 + local.get $8 + local.get $7 + local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -30387,12 +30368,6 @@ local.tee $7 select i32.store8 - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - i32.store8 local.get $6 local.get $7 i32.sub @@ -31125,15 +31100,13 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $8 local.get $6 i32.const 1 i32.add @@ -31150,10 +31123,10 @@ local.tee $2 i32.const 1 i32.shl - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add i32.load16_s i32.store16 @@ -31166,7 +31139,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $8 local.get $6 i32.sub i32.const 1 @@ -31197,14 +31170,14 @@ i32.shl i32.add i32.load16_s - local.set $9 + local.set $8 local.get $4 local.get $2 i32.const 1 i32.shl i32.add i32.load16_s - local.set $10 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 @@ -31212,11 +31185,10 @@ i32.const 1 i32.shl i32.add - local.tee $8 - local.get $9 - local.get $10 - local.get $9 - local.get $10 + local.get $8 + local.get $7 + local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -31225,12 +31197,6 @@ local.tee $7 select i32.store16 - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - i32.store16 local.get $6 local.get $7 i32.sub @@ -31957,15 +31923,13 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $8 local.get $6 i32.const 1 i32.add @@ -31982,10 +31946,10 @@ local.tee $2 i32.const 1 i32.shl - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add i32.load16_u i32.store16 @@ -31998,7 +31962,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $8 local.get $6 i32.sub i32.const 1 @@ -32029,14 +31993,14 @@ i32.shl i32.add i32.load16_u - local.set $9 + local.set $8 local.get $4 local.get $2 i32.const 1 i32.shl i32.add i32.load16_u - local.set $10 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 @@ -32044,11 +32008,10 @@ i32.const 1 i32.shl i32.add - local.tee $8 - local.get $9 - local.get $10 - local.get $9 - local.get $10 + local.get $8 + local.get $7 + local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -32057,12 +32020,6 @@ local.tee $7 select i32.store16 - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - i32.store16 local.get $6 local.get $7 i32.sub @@ -32799,15 +32756,13 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $8 local.get $6 i32.const 1 i32.add @@ -32824,10 +32779,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add i32.load i32.store @@ -32840,7 +32795,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $8 local.get $6 i32.sub i32.const 2 @@ -32871,14 +32826,14 @@ i32.shl i32.add i32.load - local.set $9 + local.set $8 local.get $4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 @@ -32886,11 +32841,10 @@ i32.const 2 i32.shl i32.add - local.tee $8 - local.get $9 - local.get $10 - local.get $9 - local.get $10 + local.get $8 + local.get $7 + local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -32899,12 +32853,6 @@ local.tee $7 select i32.store - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - i32.store local.get $6 local.get $7 i32.sub @@ -33625,15 +33573,13 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $8 local.get $6 i32.const 1 i32.add @@ -33650,10 +33596,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add i32.load i32.store @@ -33666,7 +33612,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $8 local.get $6 i32.sub i32.const 2 @@ -33697,14 +33643,14 @@ i32.shl i32.add i32.load - local.set $9 + local.set $8 local.get $4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $7 i32.const 2 global.set $~argumentsLength local.get $0 @@ -33712,11 +33658,10 @@ i32.const 2 i32.shl i32.add - local.tee $8 - local.get $9 - local.get $10 - local.get $9 - local.get $10 + local.get $8 + local.get $7 + local.get $8 + local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) @@ -33725,12 +33670,6 @@ local.tee $7 select i32.store - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - i32.store local.get $6 local.get $7 i32.sub @@ -34455,16 +34394,16 @@ (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 i64) (local $9 i64) - (local $10 i64) + (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $10 local.get $6 i32.const 1 i32.add @@ -34481,10 +34420,10 @@ local.tee $2 i32.const 3 i32.shl - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add i64.load i64.store @@ -34497,7 +34436,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $10 local.get $6 i32.sub i32.const 3 @@ -34528,14 +34467,14 @@ i32.shl i32.add i64.load - local.set $9 + local.set $8 local.get $4 local.get $2 i32.const 3 i32.shl i32.add i64.load - local.set $10 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 @@ -34543,11 +34482,10 @@ i32.const 3 i32.shl i32.add - local.tee $8 + local.get $8 local.get $9 - local.get $10 + local.get $8 local.get $9 - local.get $10 local.get $5 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -34556,12 +34494,6 @@ local.tee $7 select i64.store - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - i64.store local.get $6 local.get $7 i32.sub @@ -35288,16 +35220,16 @@ (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 i64) (local $9 i64) - (local $10 i64) + (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $10 local.get $6 i32.const 1 i32.add @@ -35314,10 +35246,10 @@ local.tee $2 i32.const 3 i32.shl - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add i64.load i64.store @@ -35330,7 +35262,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $10 local.get $6 i32.sub i32.const 3 @@ -35361,14 +35293,14 @@ i32.shl i32.add i64.load - local.set $9 + local.set $8 local.get $4 local.get $2 i32.const 3 i32.shl i32.add i64.load - local.set $10 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 @@ -35376,11 +35308,10 @@ i32.const 3 i32.shl i32.add - local.tee $8 + local.get $8 local.get $9 - local.get $10 + local.get $8 local.get $9 - local.get $10 local.get $5 i32.load call_indirect $0 (type $i64_i64_=>_i32) @@ -35389,12 +35320,6 @@ local.tee $7 select i64.store - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - i64.store local.get $6 local.get $7 i32.sub @@ -36121,16 +36046,16 @@ (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 f32) (local $9 f32) - (local $10 f32) + (local $10 i32) local.get $3 local.get $2 i32.const 1 i32.sub local.tee $6 i32.add - local.set $7 + local.set $10 local.get $6 i32.const 1 i32.add @@ -36147,10 +36072,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add f32.load f32.store @@ -36163,7 +36088,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $10 local.get $6 i32.sub i32.const 2 @@ -36194,14 +36119,14 @@ i32.shl i32.add f32.load - local.set $9 + local.set $8 local.get $4 local.get $2 i32.const 2 i32.shl i32.add f32.load - local.set $10 + local.set $9 i32.const 2 global.set $~argumentsLength local.get $0 @@ -36209,11 +36134,10 @@ i32.const 2 i32.shl i32.add - local.tee $8 + local.get $8 local.get $9 - local.get $10 + local.get $8 local.get $9 - local.get $10 local.get $5 i32.load call_indirect $0 (type $f32_f32_=>_i32) @@ -36222,12 +36146,6 @@ local.tee $7 select f32.store - local.get $8 - local.get $10 - local.get $9 - local.get $7 - select - f32.store local.get $6 local.get $7 i32.sub diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index e836567e40..a0d5c44aa1 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -3997,16 +3997,6 @@ local.get $13 select f64.store - local.get $0 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - f64.store local.get $7 local.get $13 i32.sub @@ -33745,16 +33735,6 @@ local.get $13 select i32.store8 - local.get $0 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i32.store8 local.get $7 local.get $13 i32.sub @@ -34682,16 +34662,6 @@ local.get $13 select i32.store8 - local.get $0 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i32.store8 local.get $7 local.get $13 i32.sub @@ -35676,16 +35646,6 @@ local.get $13 select i32.store16 - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i32.store16 local.get $7 local.get $13 i32.sub @@ -36613,16 +36573,6 @@ local.get $13 select i32.store16 - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i32.store16 local.get $7 local.get $13 i32.sub @@ -37564,16 +37514,6 @@ local.get $13 select i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i32.store local.get $7 local.get $13 i32.sub @@ -38495,16 +38435,6 @@ local.get $13 select i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i32.store local.get $7 local.get $13 i32.sub @@ -39430,16 +39360,6 @@ local.get $13 select i64.store - local.get $0 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i64.store local.get $7 local.get $13 i32.sub @@ -40367,16 +40287,6 @@ local.get $13 select i64.store - local.get $0 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - i64.store local.get $7 local.get $13 i32.sub @@ -41304,16 +41214,6 @@ local.get $13 select f32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $12 - local.get $11 - local.get $13 - select - f32.store local.get $7 local.get $13 i32.sub From 57abed6b4ba72dfd3b5be7597cf16c8d5ee046b3 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sat, 10 Jul 2021 12:44:48 +0300 Subject: [PATCH 23/29] minor refactorings --- std/assembly/util/sort.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index 44aba04858..98e53894a8 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -244,7 +244,7 @@ function extendRunRight( ) > 0) { while ( j < right && - bool(comparator( + (comparator( load(ptr + (j << alignof()), 1 << alignof()), load(ptr + (j << alignof())) ) >>> 31) // < 0 @@ -280,10 +280,16 @@ function mergeRuns( --m; var i: i32, j: i32, t = r + m; for (i = m + 1; i > l; --i) { - store(buffer + ((i - 1) << alignof()), load(ptr + ((i - 1) << alignof()))); + store( + buffer + ((i - 1) << alignof()), + load(ptr + ((i - 1) << alignof())) + ); } for (j = m; j < r; ++j) { - store(buffer + ((t - j) << alignof()), load(ptr + (j << alignof()), 1 << alignof())); + store( + buffer + ((t - j) << alignof()), + load(ptr + (j << alignof()), 1 << alignof()) + ); } for (let k = l; k <= r; ++k) { let a = load(buffer + (j << alignof())); From ff8c1c9beffdb83e5590c7253520da80a448067c Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sat, 10 Jul 2021 12:49:38 +0300 Subject: [PATCH 24/29] more --- std/assembly/util/sort.ts | 8 ++++++-- tests/compiler/std/array.untouched.wat | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index 98e53894a8..e02079a727 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -3,7 +3,7 @@ import { compareImpl } from "./string"; type Comparator = (a: T, b: T) => i32; // @ts-ignore: decorator -@inline const EMPTY: u32 = 0xFFFFFFFF; +@inline const EMPTY = u32.MAX_VALUE; // @ts-ignore: decorator @inline const INSERTION_SORT_THRESHOLD = 128; // @ts-ignore: decorator @@ -50,7 +50,11 @@ export function COMPARATOR(): Comparator { if (!(alen | blen)) return 0; if (!alen) return -1; if (!blen) return 1; - let res = compareImpl(changetype(a), 0, changetype(b), 0, min(alen, blen)); + let res = compareImpl( + changetype(a), 0, + changetype(b), 0, + min(alen, blen) + ); return res ? res : alen - blen; }; } else { diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index f32cf899f8..2dbd0c0b96 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -33,6 +33,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -62,7 +63,6 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) (global $std/array/ArrayU32 i32 (i32.const 40)) (global $std/array/ArrayU8 i32 (i32.const 41)) From 3880b06fd4d70832540add924bc32bfc08a0499e Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sat, 10 Jul 2021 13:24:32 +0300 Subject: [PATCH 25/29] update fixtures --- tests/compiler/NonNullable.untouched.wat | 1 + tests/compiler/assert-nonnull.untouched.wat | 1 + tests/compiler/builtins.untouched.wat | 2 +- tests/compiler/class-overloading.untouched.wat | 1 + tests/compiler/class.untouched.wat | 1 + tests/compiler/extends-baseaggregate.untouched.wat | 1 + tests/compiler/field-initialization.untouched.wat | 1 + tests/compiler/infer-array.untouched.wat | 1 + tests/compiler/infer-generic.untouched.wat | 1 + tests/compiler/issues/1699.untouched.wat | 1 + tests/compiler/number.untouched.wat | 1 + tests/compiler/object-literal.untouched.wat | 1 + tests/compiler/resolve-binary.untouched.wat | 1 + tests/compiler/resolve-elementaccess.untouched.wat | 1 + tests/compiler/resolve-function-expression.untouched.wat | 1 + tests/compiler/resolve-propertyaccess.untouched.wat | 1 + tests/compiler/resolve-ternary.untouched.wat | 1 + tests/compiler/resolve-unary.untouched.wat | 1 + tests/compiler/std-wasi/console.untouched.wat | 2 +- tests/compiler/std-wasi/crypto.untouched.wat | 1 + tests/compiler/std-wasi/process.untouched.wat | 2 +- tests/compiler/std/array-access.untouched.wat | 1 + tests/compiler/std/array-literal.untouched.wat | 1 + tests/compiler/std/arraybuffer.untouched.wat | 1 + tests/compiler/std/dataview.untouched.wat | 1 + tests/compiler/std/date.untouched.wat | 1 + tests/compiler/std/hash.untouched.wat | 1 + tests/compiler/std/map.untouched.wat | 1 + tests/compiler/std/object.untouched.wat | 1 + tests/compiler/std/set.untouched.wat | 1 + tests/compiler/std/static-array.untouched.wat | 1 + tests/compiler/std/staticarray.untouched.wat | 1 + tests/compiler/std/string-casemapping.untouched.wat | 2 +- tests/compiler/std/string-encoding.untouched.wat | 1 + tests/compiler/std/string.untouched.wat | 2 +- tests/compiler/std/symbol.untouched.wat | 1 + tests/compiler/std/typedarray.untouched.wat | 2 +- tests/compiler/std/uri.untouched.wat | 1 + tests/compiler/templateliteral.untouched.wat | 1 + tests/compiler/typeof.untouched.wat | 1 + tests/compiler/wasi/abort.untouched.wat | 1 + tests/compiler/wasi/seed.untouched.wat | 1 + tests/compiler/wasi/trace.untouched.wat | 1 + 43 files changed, 43 insertions(+), 6 deletions(-) diff --git a/tests/compiler/NonNullable.untouched.wat b/tests/compiler/NonNullable.untouched.wat index 3ab9ac7798..5d0a4cffd5 100644 --- a/tests/compiler/NonNullable.untouched.wat +++ b/tests/compiler/NonNullable.untouched.wat @@ -6,6 +6,7 @@ (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $NonNullable/z (mut i32) (i32.const 224)) (global $~lib/memory/__data_end i32 (i32.const 300)) diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index 1f7d895881..9191843227 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -5,6 +5,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 380)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16764)) diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 80f25dedf6..75b06133d1 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -21,6 +21,7 @@ (global $builtins/s (mut i32) (i32.const 0)) (global $builtins/fn (mut i32) (i32.const 144)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) @@ -35,7 +36,6 @@ (global $~lib/builtins/u16.MIN_VALUE i32 (i32.const 0)) (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) (global $~lib/builtins/u32.MIN_VALUE i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/u64.MIN_VALUE i64 (i64.const 0)) (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) (global $~lib/builtins/bool.MIN_VALUE i32 (i32.const 0)) diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat index 7030572e97..687cb1df83 100644 --- a/tests/compiler/class-overloading.untouched.wat +++ b/tests/compiler/class-overloading.untouched.wat @@ -24,6 +24,7 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $class-overloading/a (mut i32) (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $class-overloading/c (mut i32) (i32.const 0)) (global $class-overloading/ia (mut i32) (i32.const 0)) (global $class-overloading/ic (mut i32) (i32.const 0)) diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index 2400078f6a..3a78976710 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -24,6 +24,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 512)) (global $~lib/memory/__data_end i32 (i32.const 564)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16948)) diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index 89042890f3..3bc72dc6f7 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -24,6 +24,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 672)) (global $~lib/memory/__data_end i32 (i32.const 748)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17132)) diff --git a/tests/compiler/field-initialization.untouched.wat b/tests/compiler/field-initialization.untouched.wat index ccd54580ff..376f60f33f 100644 --- a/tests/compiler/field-initialization.untouched.wat +++ b/tests/compiler/field-initialization.untouched.wat @@ -22,6 +22,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 768)) (global $~lib/memory/__data_end i32 (i32.const 972)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17356)) diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index 58ec5bd189..52e488409d 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -24,6 +24,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 1088)) (global $~lib/memory/__data_end i32 (i32.const 1188)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17572)) diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index 79b87293f0..272a6e3c9f 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -13,6 +13,7 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $infer-generic/arr i32 (i32.const 128)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) diff --git a/tests/compiler/issues/1699.untouched.wat b/tests/compiler/issues/1699.untouched.wat index 472d30f154..69a380568e 100644 --- a/tests/compiler/issues/1699.untouched.wat +++ b/tests/compiler/issues/1699.untouched.wat @@ -9,6 +9,7 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 659e2fc3fa..df6450b14f 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -31,6 +31,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0)) diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index f54cd3df18..cf8eaf70c7 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -25,6 +25,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 688)) (global $~lib/memory/__data_end i32 (i32.const 748)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17132)) diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index 5226bafe9d..c67d796bb7 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -18,6 +18,7 @@ (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $resolve-binary/a (mut i32) (i32.const 0)) (global $resolve-binary/f (mut f64) (f64.const 0)) diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 99e702c0fd..41a5716111 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -31,6 +31,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $resolve-elementaccess/arr (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index 7174e25b13..74e4f5efab 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -26,6 +26,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 2400)) (global $~lib/memory/__data_end i32 (i32.const 2436)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18820)) diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 43c71aa342..0767d167a8 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -26,6 +26,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $resolve-propertyaccess/Namespace.lazyMember i32 (i32.const 11)) (global $resolve-propertyaccess/MergedNamespace.member i32 (i32.const 2)) (global $resolve-propertyaccess/MergedNamespace.lazyMember i32 (i32.const 22)) diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 8c7ab33c96..1376afd735 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -30,6 +30,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0)) diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index 93609cf020..259650ef0d 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -25,6 +25,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $resolve-unary/a (mut i32) (i32.const 1)) (global $resolve-unary/b (mut i32) (i32.const 1)) (global $resolve-unary/foo (mut i32) (i32.const 0)) diff --git a/tests/compiler/std-wasi/console.untouched.wat b/tests/compiler/std-wasi/console.untouched.wat index cacc3f2977..1c935ab422 100644 --- a/tests/compiler/std-wasi/console.untouched.wat +++ b/tests/compiler/std-wasi/console.untouched.wat @@ -23,6 +23,7 @@ (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) (global $~lib/process/process.stderr i32 (i32.const 2)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/process/iobuf i32 (i32.const 112)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -39,7 +40,6 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/console/timers (mut i32) (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 6912)) (global $~lib/memory/__data_end i32 (i32.const 6948)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 23332)) diff --git a/tests/compiler/std-wasi/crypto.untouched.wat b/tests/compiler/std-wasi/crypto.untouched.wat index 88aba0c0bd..12c8ddac36 100644 --- a/tests/compiler/std-wasi/crypto.untouched.wat +++ b/tests/compiler/std-wasi/crypto.untouched.wat @@ -16,6 +16,7 @@ (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) diff --git a/tests/compiler/std-wasi/process.untouched.wat b/tests/compiler/std-wasi/process.untouched.wat index c10263539e..6ff296237a 100644 --- a/tests/compiler/std-wasi/process.untouched.wat +++ b/tests/compiler/std-wasi/process.untouched.wat @@ -25,6 +25,7 @@ (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_read" (func $~lib/bindings/wasi_snapshot_preview1/fd_read (param i32 i32 i32 i32) (result i32))) (global $~lib/process/process.stdout i32 (i32.const 1)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/process/iobuf i32 (i32.const 64)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -47,7 +48,6 @@ (global $~lib/process/process.env (mut i32) (i32.const 0)) (global $std-wasi/process/env (mut i32) (i32.const 0)) (global $std-wasi/process/envKeys (mut i32) (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/process/process.stdin i32 (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 6336)) (global $~lib/memory/__data_end i32 (i32.const 6380)) diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index ded68ad72b..d5dadaa717 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -6,6 +6,7 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 284)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16668)) diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index 5cbfefc3df..978fac1dee 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -11,6 +11,7 @@ (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/array-literal/staticArrayI8 i32 (i32.const 64)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $std/array-literal/staticArrayI32 i32 (i32.const 320)) (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 400)) (global $std/array-literal/i (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 59208e9c67..3a774a9061 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -22,6 +22,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 688)) (global $~lib/memory/__data_end i32 (i32.const 820)) diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 7907701b8e..1c47f6a9cf 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -29,6 +29,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 720)) (global $~lib/memory/__data_end i32 (i32.const 764)) diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 30571f43ea..5d54d4e71c 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -33,6 +33,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~lib/rt/__rtti_base i32 (i32.const 6480)) (global $~lib/memory/__data_end i32 (i32.const 6540)) diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index 0f361c1678..8ae9b1916b 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -5,6 +5,7 @@ (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/memory/__data_end i32 (i32.const 380)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16764)) (global $~lib/memory/__heap_base i32 (i32.const 16764)) diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index fc7e0b30b7..3173c2cd0a 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -42,6 +42,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 736)) (global $~lib/memory/__data_end i32 (i32.const 996)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17380)) diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.untouched.wat index f6c40ec4a8..70a2e096d0 100644 --- a/tests/compiler/std/object.untouched.wat +++ b/tests/compiler/std/object.untouched.wat @@ -7,6 +7,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 188)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16572)) diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index c87a7d036f..d73180700c 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -39,6 +39,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 624)) (global $~lib/memory/__data_end i32 (i32.const 812)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17196)) diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 2b38f50179..fa68303654 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -19,6 +19,7 @@ (global $std/static-array/I i32 (i32.const 160)) (global $std/static-array/f i32 (i32.const 240)) (global $std/static-array/F i32 (i32.const 336)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/staticarray.untouched.wat b/tests/compiler/std/staticarray.untouched.wat index e5b5f5171d..fc415ea27b 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.untouched.wat @@ -14,6 +14,7 @@ (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/staticarray/arr1 i32 (i32.const 32)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $std/staticarray/arr2 i32 (i32.const 256)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index 8bcea8fb01..220f670e5c 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -18,6 +18,7 @@ (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -31,7 +32,6 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/util/casemap/SPECIALS_UPPER i32 (i32.const 464)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 20032)) (global $~lib/memory/__data_end i32 (i32.const 20068)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36452)) diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index 6487b84d35..ce9ef0a22c 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -11,6 +11,7 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string-encoding/str (mut i32) (i32.const 32)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 68b879d469..c0bb1ebaaa 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -25,6 +25,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string/str (mut i32) (i32.const 32)) (global $std/string/nullStr (mut i32) (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -49,7 +50,6 @@ (global $~lib/builtins/f64.MIN_VALUE f64 (f64.const 5e-324)) (global $std/string/Ox1p_1073 f64 (f64.const 1e-323)) (global $std/string/Ox1_0000000000001p_1022 f64 (f64.const 2.225073858507202e-308)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 68ad1c1978..b231753d05 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -27,6 +27,7 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/symbol/idToString (mut i32) (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $std/symbol/sym3 (mut i32) (i32.const 0)) (global $std/symbol/sym4 (mut i32) (i32.const 0)) (global $std/symbol/key1 (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index a0d5c44aa1..38359b888d 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -75,6 +75,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) @@ -82,7 +83,6 @@ (global $std/typedarray/forEachValues i32 (i32.const 5424)) (global $std/typedarray/testArrayReverseValues i32 (i32.const 5888)) (global $std/typedarray/testArrayIndexOfAndLastIndexOfValues i32 (i32.const 6000)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/uri.untouched.wat b/tests/compiler/std/uri.untouched.wat index 13d4eefcd9..dc6e29b826 100644 --- a/tests/compiler/std/uri.untouched.wat +++ b/tests/compiler/std/uri.untouched.wat @@ -10,6 +10,7 @@ (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/util/uri/URL_UNSAFE i32 (i32.const 44)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) diff --git a/tests/compiler/templateliteral.untouched.wat b/tests/compiler/templateliteral.untouched.wat index 768a99f96e..b041c7dc35 100644 --- a/tests/compiler/templateliteral.untouched.wat +++ b/tests/compiler/templateliteral.untouched.wat @@ -17,6 +17,7 @@ (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index ba3dca6777..9d7e21eea3 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -11,6 +11,7 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $typeof/SomeNamespace.a i32 (i32.const 1)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $typeof/b (mut i32) (i32.const 1)) (global $typeof/i (mut i32) (i32.const 1)) diff --git a/tests/compiler/wasi/abort.untouched.wat b/tests/compiler/wasi/abort.untouched.wat index a2a52b41de..fcb77c7f18 100644 --- a/tests/compiler/wasi/abort.untouched.wat +++ b/tests/compiler/wasi/abort.untouched.wat @@ -8,6 +8,7 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 220)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16604)) diff --git a/tests/compiler/wasi/seed.untouched.wat b/tests/compiler/wasi/seed.untouched.wat index f077ffba04..e165c873db 100644 --- a/tests/compiler/wasi/seed.untouched.wat +++ b/tests/compiler/wasi/seed.untouched.wat @@ -18,6 +18,7 @@ (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 172)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16556)) diff --git a/tests/compiler/wasi/trace.untouched.wat b/tests/compiler/wasi/trace.untouched.wat index 5083c95ab0..8b03608dc2 100644 --- a/tests/compiler/wasi/trace.untouched.wat +++ b/tests/compiler/wasi/trace.untouched.wat @@ -14,6 +14,7 @@ (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) From 2cefcd8d0c3bd4d6ada75b330c3f1ce7470b0dd9 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sat, 10 Jul 2021 16:14:37 +0300 Subject: [PATCH 26/29] add lazy decorator --- std/assembly/util/sort.ts | 2 +- tests/compiler/NonNullable.untouched.wat | 1 - tests/compiler/assert-nonnull.untouched.wat | 1 - tests/compiler/builtins.untouched.wat | 2 +- tests/compiler/class-overloading.untouched.wat | 1 - tests/compiler/class.untouched.wat | 1 - tests/compiler/extends-baseaggregate.untouched.wat | 1 - tests/compiler/field-initialization.untouched.wat | 1 - tests/compiler/infer-array.untouched.wat | 1 - tests/compiler/infer-generic.untouched.wat | 1 - tests/compiler/issues/1699.untouched.wat | 1 - tests/compiler/number.untouched.wat | 1 - tests/compiler/object-literal.untouched.wat | 1 - tests/compiler/resolve-binary.untouched.wat | 1 - tests/compiler/resolve-elementaccess.untouched.wat | 1 - tests/compiler/resolve-function-expression.untouched.wat | 1 - tests/compiler/resolve-propertyaccess.untouched.wat | 1 - tests/compiler/resolve-ternary.untouched.wat | 1 - tests/compiler/resolve-unary.untouched.wat | 1 - tests/compiler/std-wasi/console.untouched.wat | 2 +- tests/compiler/std-wasi/crypto.untouched.wat | 1 - tests/compiler/std-wasi/process.untouched.wat | 2 +- tests/compiler/std/array-access.untouched.wat | 1 - tests/compiler/std/array-literal.untouched.wat | 1 - tests/compiler/std/array.untouched.wat | 2 +- tests/compiler/std/arraybuffer.untouched.wat | 1 - tests/compiler/std/dataview.untouched.wat | 1 - tests/compiler/std/date.untouched.wat | 1 - tests/compiler/std/hash.untouched.wat | 1 - tests/compiler/std/map.untouched.wat | 1 - tests/compiler/std/object.untouched.wat | 1 - tests/compiler/std/set.untouched.wat | 1 - tests/compiler/std/static-array.untouched.wat | 1 - tests/compiler/std/staticarray.untouched.wat | 1 - tests/compiler/std/string-casemapping.untouched.wat | 2 +- tests/compiler/std/string-encoding.untouched.wat | 1 - tests/compiler/std/string.untouched.wat | 2 +- tests/compiler/std/symbol.untouched.wat | 1 - tests/compiler/std/typedarray.untouched.wat | 2 +- tests/compiler/std/uri.untouched.wat | 1 - tests/compiler/templateliteral.untouched.wat | 1 - tests/compiler/typeof.untouched.wat | 1 - tests/compiler/wasi/abort.untouched.wat | 1 - tests/compiler/wasi/seed.untouched.wat | 1 - tests/compiler/wasi/trace.untouched.wat | 1 - 45 files changed, 8 insertions(+), 45 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index e02079a727..cf1df94701 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -3,7 +3,7 @@ import { compareImpl } from "./string"; type Comparator = (a: T, b: T) => i32; // @ts-ignore: decorator -@inline const EMPTY = u32.MAX_VALUE; +@lazy @inline const EMPTY = u32.MAX_VALUE; // @ts-ignore: decorator @inline const INSERTION_SORT_THRESHOLD = 128; // @ts-ignore: decorator diff --git a/tests/compiler/NonNullable.untouched.wat b/tests/compiler/NonNullable.untouched.wat index 5d0a4cffd5..3ab9ac7798 100644 --- a/tests/compiler/NonNullable.untouched.wat +++ b/tests/compiler/NonNullable.untouched.wat @@ -6,7 +6,6 @@ (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $NonNullable/z (mut i32) (i32.const 224)) (global $~lib/memory/__data_end i32 (i32.const 300)) diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index 9191843227..1f7d895881 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -5,7 +5,6 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 380)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16764)) diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 75b06133d1..80f25dedf6 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -21,7 +21,6 @@ (global $builtins/s (mut i32) (i32.const 0)) (global $builtins/fn (mut i32) (i32.const 144)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) @@ -36,6 +35,7 @@ (global $~lib/builtins/u16.MIN_VALUE i32 (i32.const 0)) (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) (global $~lib/builtins/u32.MIN_VALUE i32 (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/u64.MIN_VALUE i64 (i64.const 0)) (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) (global $~lib/builtins/bool.MIN_VALUE i32 (i32.const 0)) diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat index 687cb1df83..7030572e97 100644 --- a/tests/compiler/class-overloading.untouched.wat +++ b/tests/compiler/class-overloading.untouched.wat @@ -24,7 +24,6 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $class-overloading/a (mut i32) (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $class-overloading/c (mut i32) (i32.const 0)) (global $class-overloading/ia (mut i32) (i32.const 0)) (global $class-overloading/ic (mut i32) (i32.const 0)) diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index 3a78976710..2400078f6a 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -24,7 +24,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 512)) (global $~lib/memory/__data_end i32 (i32.const 564)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16948)) diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index 3bc72dc6f7..89042890f3 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -24,7 +24,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 672)) (global $~lib/memory/__data_end i32 (i32.const 748)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17132)) diff --git a/tests/compiler/field-initialization.untouched.wat b/tests/compiler/field-initialization.untouched.wat index 376f60f33f..ccd54580ff 100644 --- a/tests/compiler/field-initialization.untouched.wat +++ b/tests/compiler/field-initialization.untouched.wat @@ -22,7 +22,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 768)) (global $~lib/memory/__data_end i32 (i32.const 972)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17356)) diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index 52e488409d..58ec5bd189 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -24,7 +24,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 1088)) (global $~lib/memory/__data_end i32 (i32.const 1188)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17572)) diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index 272a6e3c9f..79b87293f0 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -13,7 +13,6 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $infer-generic/arr i32 (i32.const 128)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) diff --git a/tests/compiler/issues/1699.untouched.wat b/tests/compiler/issues/1699.untouched.wat index 69a380568e..472d30f154 100644 --- a/tests/compiler/issues/1699.untouched.wat +++ b/tests/compiler/issues/1699.untouched.wat @@ -9,7 +9,6 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index df6450b14f..659e2fc3fa 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -31,7 +31,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0)) diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index cf8eaf70c7..f54cd3df18 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -25,7 +25,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 688)) (global $~lib/memory/__data_end i32 (i32.const 748)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17132)) diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index c67d796bb7..5226bafe9d 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -18,7 +18,6 @@ (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $resolve-binary/a (mut i32) (i32.const 0)) (global $resolve-binary/f (mut f64) (f64.const 0)) diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 41a5716111..99e702c0fd 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -31,7 +31,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $resolve-elementaccess/arr (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index 74e4f5efab..7174e25b13 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -26,7 +26,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 2400)) (global $~lib/memory/__data_end i32 (i32.const 2436)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18820)) diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 0767d167a8..43c71aa342 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -26,7 +26,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $resolve-propertyaccess/Namespace.lazyMember i32 (i32.const 11)) (global $resolve-propertyaccess/MergedNamespace.member i32 (i32.const 2)) (global $resolve-propertyaccess/MergedNamespace.lazyMember i32 (i32.const 22)) diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 1376afd735..8c7ab33c96 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -30,7 +30,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0)) diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index 259650ef0d..93609cf020 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -25,7 +25,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $resolve-unary/a (mut i32) (i32.const 1)) (global $resolve-unary/b (mut i32) (i32.const 1)) (global $resolve-unary/foo (mut i32) (i32.const 0)) diff --git a/tests/compiler/std-wasi/console.untouched.wat b/tests/compiler/std-wasi/console.untouched.wat index 1c935ab422..cacc3f2977 100644 --- a/tests/compiler/std-wasi/console.untouched.wat +++ b/tests/compiler/std-wasi/console.untouched.wat @@ -23,7 +23,6 @@ (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) (global $~lib/process/process.stderr i32 (i32.const 2)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/process/iobuf i32 (i32.const 112)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -40,6 +39,7 @@ (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/console/timers (mut i32) (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 6912)) (global $~lib/memory/__data_end i32 (i32.const 6948)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 23332)) diff --git a/tests/compiler/std-wasi/crypto.untouched.wat b/tests/compiler/std-wasi/crypto.untouched.wat index 12c8ddac36..88aba0c0bd 100644 --- a/tests/compiler/std-wasi/crypto.untouched.wat +++ b/tests/compiler/std-wasi/crypto.untouched.wat @@ -16,7 +16,6 @@ (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) diff --git a/tests/compiler/std-wasi/process.untouched.wat b/tests/compiler/std-wasi/process.untouched.wat index 6ff296237a..c10263539e 100644 --- a/tests/compiler/std-wasi/process.untouched.wat +++ b/tests/compiler/std-wasi/process.untouched.wat @@ -25,7 +25,6 @@ (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_read" (func $~lib/bindings/wasi_snapshot_preview1/fd_read (param i32 i32 i32 i32) (result i32))) (global $~lib/process/process.stdout i32 (i32.const 1)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/process/iobuf i32 (i32.const 64)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) @@ -48,6 +47,7 @@ (global $~lib/process/process.env (mut i32) (i32.const 0)) (global $std-wasi/process/env (mut i32) (i32.const 0)) (global $std-wasi/process/envKeys (mut i32) (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/process/process.stdin i32 (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 6336)) (global $~lib/memory/__data_end i32 (i32.const 6380)) diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index d5dadaa717..ded68ad72b 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -6,7 +6,6 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_none (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 284)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16668)) diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index 978fac1dee..5cbfefc3df 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -11,7 +11,6 @@ (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/array-literal/staticArrayI8 i32 (i32.const 64)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $std/array-literal/staticArrayI32 i32 (i32.const 320)) (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 400)) (global $std/array-literal/i (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 2dbd0c0b96..a0a4d00597 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -33,7 +33,6 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -56,6 +55,7 @@ (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) (global $std/array/charset i32 (i32.const 6288)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 3a774a9061..59208e9c67 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -22,7 +22,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 688)) (global $~lib/memory/__data_end i32 (i32.const 820)) diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 1c47f6a9cf..7907701b8e 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -29,7 +29,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 720)) (global $~lib/memory/__data_end i32 (i32.const 764)) diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 5d54d4e71c..30571f43ea 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -33,7 +33,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~lib/rt/__rtti_base i32 (i32.const 6480)) (global $~lib/memory/__data_end i32 (i32.const 6540)) diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index 8ae9b1916b..0f361c1678 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -5,7 +5,6 @@ (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/memory/__data_end i32 (i32.const 380)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16764)) (global $~lib/memory/__heap_base i32 (i32.const 16764)) diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 3173c2cd0a..fc7e0b30b7 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -42,7 +42,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 736)) (global $~lib/memory/__data_end i32 (i32.const 996)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17380)) diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.untouched.wat index 70a2e096d0..f6c40ec4a8 100644 --- a/tests/compiler/std/object.untouched.wat +++ b/tests/compiler/std/object.untouched.wat @@ -7,7 +7,6 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 188)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16572)) diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index d73180700c..c87a7d036f 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -39,7 +39,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 624)) (global $~lib/memory/__data_end i32 (i32.const 812)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17196)) diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index fa68303654..2b38f50179 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -19,7 +19,6 @@ (global $std/static-array/I i32 (i32.const 160)) (global $std/static-array/f i32 (i32.const 240)) (global $std/static-array/F i32 (i32.const 336)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/staticarray.untouched.wat b/tests/compiler/std/staticarray.untouched.wat index fc415ea27b..e5b5f5171d 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.untouched.wat @@ -14,7 +14,6 @@ (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/staticarray/arr1 i32 (i32.const 32)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $std/staticarray/arr2 i32 (i32.const 256)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index 220f670e5c..8bcea8fb01 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -18,7 +18,6 @@ (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -32,6 +31,7 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/util/casemap/SPECIALS_UPPER i32 (i32.const 464)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 20032)) (global $~lib/memory/__data_end i32 (i32.const 20068)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36452)) diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index ce9ef0a22c..6487b84d35 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -11,7 +11,6 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string-encoding/str (mut i32) (i32.const 32)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index c0bb1ebaaa..68b879d469 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -25,7 +25,6 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $std/string/str (mut i32) (i32.const 32)) (global $std/string/nullStr (mut i32) (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) @@ -50,6 +49,7 @@ (global $~lib/builtins/f64.MIN_VALUE f64 (f64.const 5e-324)) (global $std/string/Ox1p_1073 f64 (f64.const 1e-323)) (global $std/string/Ox1_0000000000001p_1022 f64 (f64.const 2.225073858507202e-308)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/u64.MAX_VALUE i64 (i64.const -1)) (global $~lib/builtins/i64.MIN_VALUE i64 (i64.const -9223372036854775808)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index b231753d05..68ad1c1978 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -27,7 +27,6 @@ (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/symbol/idToString (mut i32) (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $std/symbol/sym3 (mut i32) (i32.const 0)) (global $std/symbol/sym4 (mut i32) (i32.const 0)) (global $std/symbol/key1 (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 38359b888d..0f721dca5b 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -75,8 +75,8 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) diff --git a/tests/compiler/std/uri.untouched.wat b/tests/compiler/std/uri.untouched.wat index dc6e29b826..13d4eefcd9 100644 --- a/tests/compiler/std/uri.untouched.wat +++ b/tests/compiler/std/uri.untouched.wat @@ -10,7 +10,6 @@ (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/util/uri/URL_UNSAFE i32 (i32.const 44)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) diff --git a/tests/compiler/templateliteral.untouched.wat b/tests/compiler/templateliteral.untouched.wat index b041c7dc35..768a99f96e 100644 --- a/tests/compiler/templateliteral.untouched.wat +++ b/tests/compiler/templateliteral.untouched.wat @@ -17,7 +17,6 @@ (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 9d7e21eea3..ba3dca6777 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -11,7 +11,6 @@ (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $typeof/SomeNamespace.a i32 (i32.const 1)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $typeof/b (mut i32) (i32.const 1)) (global $typeof/i (mut i32) (i32.const 1)) diff --git a/tests/compiler/wasi/abort.untouched.wat b/tests/compiler/wasi/abort.untouched.wat index fcb77c7f18..a2a52b41de 100644 --- a/tests/compiler/wasi/abort.untouched.wat +++ b/tests/compiler/wasi/abort.untouched.wat @@ -8,7 +8,6 @@ (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 220)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16604)) diff --git a/tests/compiler/wasi/seed.untouched.wat b/tests/compiler/wasi/seed.untouched.wat index e165c873db..f077ffba04 100644 --- a/tests/compiler/wasi/seed.untouched.wat +++ b/tests/compiler/wasi/seed.untouched.wat @@ -18,7 +18,6 @@ (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 172)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16556)) diff --git a/tests/compiler/wasi/trace.untouched.wat b/tests/compiler/wasi/trace.untouched.wat index 8b03608dc2..5083c95ab0 100644 --- a/tests/compiler/wasi/trace.untouched.wat +++ b/tests/compiler/wasi/trace.untouched.wat @@ -14,7 +14,6 @@ (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) - (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) From e9f661410eb0a8b04d728d5ad7ef6cb70b15e9de Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sun, 11 Jul 2021 13:38:04 +0300 Subject: [PATCH 27/29] add simple stability check --- tests/compiler/std/array.optimized.wat | 3329 ++++++----- tests/compiler/std/array.ts | 63 +- tests/compiler/std/array.untouched.wat | 7291 +++++++++++++++--------- 3 files changed, 6689 insertions(+), 3994 deletions(-) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 9ea1558c33..c3b287ff92 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -13,10 +13,10 @@ (type $none_=>_none (func)) (type $none_=>_f64 (func (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i64_=>_none (func (param i64))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) @@ -43,16 +43,18 @@ (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) + (global $std/array/inputStabArr (mut i32) (i32.const 0)) + (global $std/array/outputStabArr (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) (global $~lib/util/number/_exp (mut i32) (i32.const 0)) (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $std/array/ArrayU32 i32 (i32.const 40)) - (global $std/array/ArrayU8 i32 (i32.const 41)) - (global $std/array/ArrayStr i32 (i32.const 42)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 31492)) + (global $std/array/ArrayU32 i32 (i32.const 43)) + (global $std/array/ArrayU8 i32 (i32.const 44)) + (global $std/array/ArrayStr i32 (i32.const 45)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 31548)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 1036) ",") @@ -354,7 +356,7 @@ (data (i32.const 7484) "\1c") (data (i32.const 7500) "\0c\00\00\00\00\00\00@\00\00\80\bf") (data (i32.const 7516) "\1c") - (data (i32.const 7528) "\12\00\00\00\08\00\00\00,") + (data (i32.const 7528) "\14\00\00\00\08\00\00\00,") (data (i32.const 7548) "\1c") (data (i32.const 7564) "\0c\00\00\00\00\00\80\bf\00\00\00\00\00\00\00@") (data (i32.const 7580) "<") @@ -366,7 +368,7 @@ (data (i32.const 7734) "\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?") (data (i32.const 7774) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") (data (i32.const 7804) "\1c") - (data (i32.const 7816) "\13\00\00\00\08\00\00\00-") + (data (i32.const 7816) "\15\00\00\00\08\00\00\00-") (data (i32.const 7836) "\\") (data (i32.const 7852) "@") (data (i32.const 7862) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") @@ -374,13 +376,13 @@ (data (i32.const 7932) ",") (data (i32.const 7948) "\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") (data (i32.const 7980) "\1c") - (data (i32.const 7992) "\14\00\00\00\08\00\00\00.") + (data (i32.const 7992) "\16\00\00\00\08\00\00\00.") (data (i32.const 8012) ",") (data (i32.const 8028) "\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") (data (i32.const 8060) ",") (data (i32.const 8076) "\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") (data (i32.const 8108) "\1c") - (data (i32.const 8120) "\15\00\00\00\08\00\00\00/") + (data (i32.const 8120) "\17\00\00\00\08\00\00\00/") (data (i32.const 8140) ",") (data (i32.const 8156) "\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff") (data (i32.const 8188) "\1c") @@ -393,204 +395,207 @@ (data (i32.const 8332) ",") (data (i32.const 8348) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") (data (i32.const 8380) "\1c") - (data (i32.const 8392) "\14\00\00\00\08\00\00\000") + (data (i32.const 8392) "\16\00\00\00\08\00\00\000") (data (i32.const 8412) "\1c") (data (i32.const 8428) "\04\00\00\00\01") (data (i32.const 8444) "\1c") (data (i32.const 8460) "\08\00\00\00\01\00\00\00\02") (data (i32.const 8476) "\1c") - (data (i32.const 8488) "\14\00\00\00\08\00\00\001") + (data (i32.const 8488) "\18\00\00\00\08\00\00\001") (data (i32.const 8508) "\1c") - (data (i32.const 8520) "\14\00\00\00\08\00\00\002") + (data (i32.const 8520) "\16\00\00\00\08\00\00\002") (data (i32.const 8540) "\1c") - (data (i32.const 8552) "\14\00\00\00\08\00\00\003") + (data (i32.const 8552) "\16\00\00\00\08\00\00\003") (data (i32.const 8572) "\1c") - (data (i32.const 8584) "\14\00\00\00\08\00\00\004") + (data (i32.const 8584) "\16\00\00\00\08\00\00\004") (data (i32.const 8604) "\1c") - (data (i32.const 8616) "\17\00\00\00\08\00\00\005") + (data (i32.const 8616) "\16\00\00\00\08\00\00\005") (data (i32.const 8636) "\1c") (data (i32.const 8648) "\1a\00\00\00\08\00\00\006") (data (i32.const 8668) "\1c") - (data (i32.const 8680) "\01\00\00\00\02\00\00\00a") + (data (i32.const 8680) "\1d\00\00\00\08\00\00\007") (data (i32.const 8700) "\1c") - (data (i32.const 8712) "\01\00\00\00\02\00\00\00b") + (data (i32.const 8712) "\01\00\00\00\02\00\00\00a") (data (i32.const 8732) "\1c") - (data (i32.const 8744) "\01\00\00\00\04\00\00\00a\00b") + (data (i32.const 8744) "\01\00\00\00\02\00\00\00b") (data (i32.const 8764) "\1c") - (data (i32.const 8776) "\01\00\00\00\04\00\00\00b\00a") + (data (i32.const 8776) "\01\00\00\00\04\00\00\00a\00b") (data (i32.const 8796) "\1c") - (data (i32.const 8808) "\01") - (data (i32.const 8828) ",") - (data (i32.const 8844) "\1c\00\00\00\f0!\00\00\10\"\00\00\f0!\00\000\"\00\00P\"\00\00p\"") - (data (i32.const 8876) ",") - (data (i32.const 8892) "\1c\00\00\00p\"\00\00\f0!\00\00\f0!\00\000\"\00\00\10\"\00\00P\"") - (data (i32.const 8924) "\1c") - (data (i32.const 8936) "\1c\00\00\00\08\00\00\007") + (data (i32.const 8808) "\01\00\00\00\04\00\00\00b\00a") + (data (i32.const 8828) "\1c") + (data (i32.const 8840) "\01") + (data (i32.const 8860) ",") + (data (i32.const 8876) "\1c\00\00\00\10\"\00\000\"\00\00\10\"\00\00P\"\00\00p\"\00\00\90\"") + (data (i32.const 8908) ",") + (data (i32.const 8924) "\1c\00\00\00\90\"\00\00\10\"\00\00\10\"\00\00P\"\00\000\"\00\00p\"") (data (i32.const 8956) "\1c") - (data (i32.const 8968) "\1e\00\00\00\08\00\00\008") + (data (i32.const 8968) "\1f\00\00\00\08\00\00\008") (data (i32.const 8988) "\1c") - (data (i32.const 9004) "\02\00\00\00\01") + (data (i32.const 9000) "!\00\00\00\08\00\00\009") (data (i32.const 9020) "\1c") - (data (i32.const 9032) "\01\00\00\00\08\00\00\00t\00r\00u\00e") + (data (i32.const 9036) "\02\00\00\00\01") (data (i32.const 9052) "\1c") - (data (i32.const 9064) "\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 9064) "\01\00\00\00\08\00\00\00t\00r\00u\00e") (data (i32.const 9084) "\1c") - (data (i32.const 9096) "\01\00\00\00\02\00\00\00,") - (data (i32.const 9116) ",") - (data (i32.const 9128) "\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") - (data (i32.const 9164) "\1c") - (data (i32.const 9180) "\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 9196) "|") - (data (i32.const 9208) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") - (data (i32.const 9324) "<") - (data (i32.const 9336) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 9388) "\1c") - (data (i32.const 9400) "\01\00\00\00\02\00\00\000") - (data (i32.const 9420) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 9820) "\1c\04") - (data (i32.const 9832) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") - (data (i32.const 10876) "\\") - (data (i32.const 10888) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") - (data (i32.const 10972) "\1c") - (data (i32.const 10984) "\01\00\00\00\n\00\00\001\00-\002\00-\003") + (data (i32.const 9096) "\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 9116) "\1c") + (data (i32.const 9128) "\01\00\00\00\02\00\00\00,") + (data (i32.const 9148) ",") + (data (i32.const 9160) "\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") + (data (i32.const 9196) "\1c") + (data (i32.const 9212) "\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data (i32.const 9228) "|") + (data (i32.const 9240) "\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006") + (data (i32.const 9356) "<") + (data (i32.const 9368) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s") + (data (i32.const 9420) "\1c") + (data (i32.const 9432) "\01\00\00\00\02\00\00\000") + (data (i32.const 9452) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") + (data (i32.const 9852) "\1c\04") + (data (i32.const 9864) "\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f") + (data (i32.const 10908) "\\") + (data (i32.const 10920) "\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z") (data (i32.const 11004) "\1c") - (data (i32.const 11020) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 11016) "\01\00\00\00\n\00\00\001\00-\002\00-\003") (data (i32.const 11036) "\1c") - (data (i32.const 11048) "\01\00\00\00\02\00\00\00-") + (data (i32.const 11052) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") (data (i32.const 11068) "\1c") - (data (i32.const 11084) "\08\00\00\00\00\00\00\80\00\00\00\80") + (data (i32.const 11080) "\01\00\00\00\02\00\00\00-") (data (i32.const 11100) "\1c") - (data (i32.const 11112) "\01\00\00\00\04\00\00\00_\00_") - (data (i32.const 11132) "L") - (data (i32.const 11144) "\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 11212) "L") - (data (i32.const 11228) "0") - (data (i32.const 11246) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") - (data (i32.const 11292) "\1c") - (data (i32.const 11304) "\01\00\00\00\04\00\00\00,\00 ") + (data (i32.const 11116) "\08\00\00\00\00\00\00\80\00\00\00\80") + (data (i32.const 11132) "\1c") + (data (i32.const 11144) "\01\00\00\00\04\00\00\00_\00_") + (data (i32.const 11164) "L") + (data (i32.const 11176) "\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008") + (data (i32.const 11244) "L") + (data (i32.const 11260) "0") + (data (i32.const 11278) "\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f") (data (i32.const 11324) "\1c") - (data (i32.const 11336) "\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 11336) "\01\00\00\00\04\00\00\00,\00 ") (data (i32.const 11356) "\1c") - (data (i32.const 11368) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 11388) ",") - (data (i32.const 11400) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 11436) ",") - (data (i32.const 11448) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 11544) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") - (data (i32.const 12892) "\1c") + (data (i32.const 12616) "\01\00\00\00\02\00\00\001") + (data (i32.const 12636) "\1c") + (data (i32.const 12652) "\0c\00\00\00\90\"\00\00P1") + (data (i32.const 12668) "<") + (data (i32.const 12680) "\01\00\00\00\1e\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") + (data (i32.const 12732) "\\") + (data (i32.const 12744) "\01\00\00\00@\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") + (data (i32.const 12828) "\\") + (data (i32.const 12840) "\01\00\00\00>\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]") (data (i32.const 12924) "\1c") - (data (i32.const 12940) "\04\00\00\00\01") (data (i32.const 12956) "\1c") - (data (i32.const 12972) "\08\00\00\00\01\00\00\00\02") - (data (i32.const 12988) ",") - (data (i32.const 13004) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 13036) "\1c") - (data (i32.const 13048) "\01\00\00\00\06\00\00\001\00,\002") - (data (i32.const 13068) ",") - (data (i32.const 13080) "\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") - (data (i32.const 13116) "\1c") - (data (i32.const 13132) "\03\00\00\00\01\ff") + (data (i32.const 12972) "\04\00\00\00\01") + (data (i32.const 12988) "\1c") + (data (i32.const 13004) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 13020) ",") + (data (i32.const 13036) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 13068) "\1c") + (data (i32.const 13080) "\01\00\00\00\06\00\00\001\00,\002") + (data (i32.const 13100) ",") + (data (i32.const 13112) "\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") (data (i32.const 13148) "\1c") - (data (i32.const 13160) "\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000") + (data (i32.const 13164) "\03\00\00\00\01\ff") (data (i32.const 13180) "\1c") - (data (i32.const 13196) "\06\00\00\00\01\00\ff\ff") - (data (i32.const 13212) ",") - (data (i32.const 13224) "\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") - (data (i32.const 13260) ",") - (data (i32.const 13276) "\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 13308) "L") - (data (i32.const 13320) "\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") - (data (i32.const 13388) "<") - (data (i32.const 13404) " \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") - (data (i32.const 13452) "l") - (data (i32.const 13464) "\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 13564) ",") - (data (i32.const 13580) "\1c\00\00\00p\"\00\00\f0!\00\00\f0!\00\000\"\00\00\10\"\00\00P\"") - (data (i32.const 13612) ",") - (data (i32.const 13624) "\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") - (data (i32.const 13660) "\1c") - (data (i32.const 13672) "\01\00\00\00\02\00\00\002") + (data (i32.const 13192) "\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000") + (data (i32.const 13212) "\1c") + (data (i32.const 13228) "\06\00\00\00\01\00\ff\ff") + (data (i32.const 13244) ",") + (data (i32.const 13256) "\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") + (data (i32.const 13292) ",") + (data (i32.const 13308) "\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 13340) "L") + (data (i32.const 13352) "\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000") + (data (i32.const 13420) "<") + (data (i32.const 13436) " \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f") + (data (i32.const 13484) "l") + (data (i32.const 13496) "\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") + (data (i32.const 13596) ",") + (data (i32.const 13612) "\1c\00\00\00\90\"\00\00\10\"\00\00\10\"\00\00P\"\00\000\"\00\00p\"") + (data (i32.const 13644) ",") + (data (i32.const 13656) "\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") (data (i32.const 13692) "\1c") - (data (i32.const 13704) "\01\00\00\00\02\00\00\004") - (data (i32.const 13724) ",") - (data (i32.const 13740) "\10\00\00\0001\00\00p5\00\00\00\00\00\00\905") - (data (i32.const 13772) "\1c") - (data (i32.const 13784) "\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004") + (data (i32.const 13704) "\01\00\00\00\02\00\00\002") + (data (i32.const 13724) "\1c") + (data (i32.const 13736) "\01\00\00\00\02\00\00\004") + (data (i32.const 13756) ",") + (data (i32.const 13772) "\10\00\00\00P1\00\00\905\00\00\00\00\00\00\b05") (data (i32.const 13804) "\1c") - (data (i32.const 13820) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 13816) "\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004") (data (i32.const 13836) "\1c") - (data (i32.const 13852) "\08\00\00\00\03\00\00\00\04") - (data (i32.const 13868) ",") - (data (i32.const 13880) "\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") - (data (i32.const 13916) "\1c") - (data (i32.const 13932) "\02\00\00\00\01\02") + (data (i32.const 13852) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 13868) "\1c") + (data (i32.const 13884) "\08\00\00\00\03\00\00\00\04") + (data (i32.const 13900) ",") + (data (i32.const 13912) "\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") (data (i32.const 13948) "\1c") - (data (i32.const 13964) "\02\00\00\00\03\04") + (data (i32.const 13964) "\02\00\00\00\01\02") (data (i32.const 13980) "\1c") - (data (i32.const 13996) "\04\00\00\00\01") + (data (i32.const 13996) "\02\00\00\00\03\04") (data (i32.const 14012) "\1c") - (data (i32.const 14028) "\04") + (data (i32.const 14028) "\04\00\00\00\01") (data (i32.const 14044) "\1c") - (data (i32.const 14060) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 14060) "\04") (data (i32.const 14076) "\1c") - (data (i32.const 14092) "\0c\00\00\00\04\00\00\00\05\00\00\00\06") + (data (i32.const 14092) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") (data (i32.const 14108) "\1c") - (data (i32.const 14124) "\0c\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 14124) "\0c\00\00\00\04\00\00\00\05\00\00\00\06") (data (i32.const 14140) "\1c") - (data (i32.const 14152) "\01\00\00\00\06\00\00\00o\00n\00e") + (data (i32.const 14156) "\0c\00\00\00\07\00\00\00\08\00\00\00\t") (data (i32.const 14172) "\1c") - (data (i32.const 14188) "\04\00\00\00P7") + (data (i32.const 14184) "\01\00\00\00\06\00\00\00o\00n\00e") (data (i32.const 14204) "\1c") - (data (i32.const 14216) "\01\00\00\00\06\00\00\00t\00w\00o") + (data (i32.const 14220) "\04\00\00\00p7") (data (i32.const 14236) "\1c") - (data (i32.const 14248) "\01\00\00\00\n\00\00\00t\00h\00r\00e\00e") + (data (i32.const 14248) "\01\00\00\00\06\00\00\00t\00w\00o") (data (i32.const 14268) "\1c") - (data (i32.const 14284) "\0c\00\00\00\907\00\00\00\00\00\00\b07") + (data (i32.const 14280) "\01\00\00\00\n\00\00\00t\00h\00r\00e\00e") (data (i32.const 14300) "\1c") - (data (i32.const 14312) "\01\00\00\00\08\00\00\00f\00o\00u\00r") + (data (i32.const 14316) "\0c\00\00\00\b07\00\00\00\00\00\00\d07") (data (i32.const 14332) "\1c") - (data (i32.const 14344) "\01\00\00\00\08\00\00\00f\00i\00v\00e") + (data (i32.const 14344) "\01\00\00\00\08\00\00\00f\00o\00u\00r") (data (i32.const 14364) "\1c") - (data (i32.const 14376) "\01\00\00\00\06\00\00\00s\00i\00x") + (data (i32.const 14376) "\01\00\00\00\08\00\00\00f\00i\00v\00e") (data (i32.const 14396) "\1c") - (data (i32.const 14412) "\0c\00\00\00\f07\00\00\108\00\0008") + (data (i32.const 14408) "\01\00\00\00\06\00\00\00s\00i\00x") (data (i32.const 14428) "\1c") - (data (i32.const 14440) "\01\00\00\00\n\00\00\00s\00e\00v\00e\00n") + (data (i32.const 14444) "\0c\00\00\00\108\00\0008\00\00P8") (data (i32.const 14460) "\1c") - (data (i32.const 14476) "\04\00\00\00p8") - (data (i32.const 14492) "<") - (data (i32.const 14508) " \00\00\00P7\00\00\907\00\00\00\00\00\00\b07\00\00\f07\00\00\108\00\0008\00\00p8") - (data (i32.const 14556) "\1c") + (data (i32.const 14472) "\01\00\00\00\n\00\00\00s\00e\00v\00e\00n") + (data (i32.const 14492) "\1c") + (data (i32.const 14508) "\04\00\00\00\908") + (data (i32.const 14524) "<") + (data (i32.const 14540) " \00\00\00p7\00\00\b07\00\00\00\00\00\00\d07\00\00\108\00\0008\00\00P8\00\00\908") (data (i32.const 14588) "\1c") - (data (i32.const 14620) "<") - (data (i32.const 14632) "\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e") - (data (i32.const 14684) "\1c") - (data (i32.const 14696) "+\00\00\00\08\00\00\009") + (data (i32.const 14620) "\1c") + (data (i32.const 14652) "<") + (data (i32.const 14664) "\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e") (data (i32.const 14716) "\1c") - (data (i32.const 14728) "\1e\00\00\00\08\00\00\00:") - (data (i32.const 14752) ",\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 14780) "\02\t\00\00\00\00\00\00 \00\00\00\00\00\00\00A\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02a") - (data (i32.const 14932) "\02A") - (data (i32.const 14948) " \00\00\00\00\00\00\00\02A") - (data (i32.const 14972) "\02a") + (data (i32.const 14728) ".\00\00\00\08\00\00\00:") + (data (i32.const 14748) "\1c") + (data (i32.const 14760) "!\00\00\00\08\00\00\00;") + (data (i32.const 14784) "/\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 14812) "\02\t\00\00\00\00\00\00 \00\00\00\00\00\00\00A\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02a") + (data (i32.const 14932) " \00\00\00\00\00\00\00\02A") (data (i32.const 14988) "\02A") - (data (i32.const 15004) "B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\01\00\00\07\00\00\00B\00\00\00\06\00\00\00\02A\00\00\1d") - (table $0 59 funcref) - (elem $0 (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|16 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0) + (data (i32.const 15004) " \00\00\00\00\00\00\00\02A") + (data (i32.const 15028) "\02a") + (data (i32.const 15044) "\02A") + (data (i32.const 15060) "B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\01\00\00\07\00\00\00B\00\00\00\06\00\00\00\02A\00\00 ") + (table $0 60 funcref) + (elem $0 (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|2 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|16 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/array/assertStableSortedForComplexObjects~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $std/array/assertStableSortedForComplexObjects~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0) (export "ArrayU32" (global $std/array/ArrayU32)) (export "ArrayU8" (global $std/array/ArrayU8)) (export "ArrayStr" (global $std/array/ArrayStr)) @@ -689,11 +694,23 @@ end i32.const 7312 call $~lib/rt/itcms/__visit + global.get $std/array/inputStabArr + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array/outputStabArr + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end i32.const 1344 call $~lib/rt/itcms/__visit i32.const 1056 call $~lib/rt/itcms/__visit - i32.const 14640 + i32.const 14672 call $~lib/rt/itcms/__visit i32.const 2176 call $~lib/rt/itcms/__visit @@ -701,9 +718,9 @@ call $~lib/rt/itcms/__visit i32.const 1152 call $~lib/rt/itcms/__visit - i32.const 9840 + i32.const 9872 call $~lib/rt/itcms/__visit - i32.const 10896 + i32.const 10928 call $~lib/rt/itcms/__visit global.get $~lib/rt/itcms/pinSpace local.tee $1 @@ -776,7 +793,7 @@ if i32.const 0 local.get $0 - i32.const 31492 + i32.const 31548 i32.lt_u local.get $0 i32.load offset=8 @@ -827,7 +844,7 @@ i32.const 1 else local.get $1 - i32.const 14752 + i32.const 14784 i32.load i32.gt_u if @@ -841,7 +858,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 14756 + i32.const 14788 i32.add i32.load i32.const 32 @@ -1437,10 +1454,10 @@ if unreachable end - i32.const 31504 + i32.const 31552 i32.const 0 i32.store - i32.const 33072 + i32.const 33120 i32.const 0 i32.store loop $for-loop|0 @@ -1451,7 +1468,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 31504 + i32.const 31552 i32.add i32.const 0 i32.store offset=4 @@ -1469,7 +1486,7 @@ i32.add i32.const 2 i32.shl - i32.const 31504 + i32.const 31552 i32.add i32.const 0 i32.store offset=96 @@ -1487,20 +1504,20 @@ br $for-loop|0 end end - i32.const 31504 - i32.const 33076 + i32.const 31552 + i32.const 33124 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 31504 + i32.const 31552 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 31492 + i32.const 31548 i32.lt_u if return @@ -1629,7 +1646,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 31492 + i32.const 31548 i32.lt_u if local.get $0 @@ -1724,7 +1741,7 @@ unreachable end local.get $0 - i32.const 31492 + i32.const 31548 i32.lt_u if local.get $0 @@ -7982,56 +7999,14 @@ f64.const 1 f64.sub ) - (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.sub - ) - (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 + (func $std/array/assertStableSortedForComplexObjects~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1344 - i32.const 1104 - i32.const 115 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 0 - call $~lib/array/Array#__get + i32.load local.get $1 - i32.const 0 - call $~lib/array/Array#__get + i32.load i32.sub ) - (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -8041,11 +8016,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8223,7 +8198,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -8232,11 +8207,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8369,7 +8344,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8386,11 +8361,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8526,7 +8501,7 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort<~lib/array/Array> + call $~lib/util/sort/insertionSort br $folding-inner0 end i32.const 33 @@ -8597,7 +8572,7 @@ i32.sub local.tee $8 local.get $2 - call $~lib/util/sort/extendRunRight<~lib/array/Array> + call $~lib/util/sort/extendRunRight local.tee $1 i32.const 1 i32.add @@ -8616,7 +8591,7 @@ local.tee $1 local.get $5 local.get $2 - call $~lib/util/sort/insertionSort<~lib/array/Array> + call $~lib/util/sort/insertionSort end loop $while-continue|2 local.get $1 @@ -8630,7 +8605,7 @@ local.tee $6 local.get $8 local.get $2 - call $~lib/util/sort/extendRunRight<~lib/array/Array> + call $~lib/util/sort/extendRunRight local.tee $5 local.get $6 i32.sub @@ -8654,7 +8629,7 @@ local.tee $5 local.get $7 local.get $2 - call $~lib/util/sort/insertionSort<~lib/array/Array> + call $~lib/util/sort/insertionSort end local.get $3 local.get $6 @@ -8711,7 +8686,7 @@ local.get $1 local.get $11 local.get $2 - call $~lib/util/sort/mergeRuns<~lib/array/Array> + call $~lib/util/sort/mergeRuns local.get $3 local.get $9 i32.add @@ -8775,7 +8750,7 @@ local.get $8 local.get $11 local.get $2 - call $~lib/util/sort/mergeRuns<~lib/array/Array> + call $~lib/util/sort/mergeRuns end local.get $4 i32.const 1 @@ -8799,11 +8774,53 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 - i32.load + i32.sub + ) + (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) local.get $1 - i32.load + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1344 + i32.const 1104 + i32.const 115 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + ) + (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + local.get $1 + i32.const 0 + call $~lib/array/Array#__get i32.sub ) (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -9070,11 +9087,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9110,7 +9127,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $2 br $__inlined_func$~lib/string/String#concat end @@ -9165,7 +9182,7 @@ i32.div_u i32.const 2 i32.shl - i32.const 9420 + i32.const 9452 i32.add i64.load32_u local.get $3 @@ -9173,7 +9190,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 9420 + i32.const 9452 i32.add i64.load32_u i64.const 32 @@ -9200,7 +9217,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 9420 + i32.const 9452 i32.add i32.load i32.store @@ -9223,7 +9240,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 9420 + i32.const 9452 i32.add i32.load i32.store @@ -9347,11 +9364,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9372,7 +9389,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end @@ -9573,11 +9590,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -9598,7 +9615,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end @@ -9957,7 +9974,7 @@ local.get $8 i32.const 2 i32.shl - i32.const 12416 + i32.const 12448 i32.add i64.load32_u local.get $10 @@ -10087,7 +10104,7 @@ i32.sub i32.const 2 i32.shl - i32.const 12416 + i32.const 12448 i32.add i64.load32_u i64.mul @@ -10605,14 +10622,14 @@ i32.sub global.set $~lib/util/number/_K local.get $11 - i32.const 11544 + i32.const 11576 i32.add i64.load global.set $~lib/util/number/_frc_pow local.get $5 i32.const 1 i32.shl - i32.const 12240 + i32.const 12272 i32.add i32.load16_s global.set $~lib/util/number/_exp_pow @@ -10861,11 +10878,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -10890,7 +10907,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $0 br $__inlined_func$~lib/util/string/joinStringArray end @@ -10904,7 +10921,7 @@ local.tee $0 i32.store local.get $0 - i32.const 8816 + i32.const 8848 local.get $0 select local.set $0 @@ -11079,11 +11096,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11108,7 +11125,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray end @@ -11125,19 +11142,19 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 12656 - i32.const 8816 + i32.const 12688 + i32.const 8848 local.get $1 select local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray end - i32.const 8816 + i32.const 8848 local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 i32.store offset=4 - i32.const 9100 + i32.const 9132 i32.load i32.const 1 i32.shr_u @@ -11160,11 +11177,11 @@ if global.get $~lib/memory/__stack_pointer local.tee $4 - i32.const 12656 + i32.const 12688 i32.store offset=8 local.get $4 local.get $0 - i32.const 12656 + i32.const 12688 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -11173,7 +11190,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 9104 + i32.const 9136 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -11198,11 +11215,11 @@ if global.get $~lib/memory/__stack_pointer local.tee $1 - i32.const 12656 + i32.const 12688 i32.store offset=8 local.get $1 local.get $0 - i32.const 12656 + i32.const 12688 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -11418,7 +11435,7 @@ i32.div_u i32.const 2 i32.shl - i32.const 9420 + i32.const 9452 i32.add i64.load32_u local.get $4 @@ -11426,7 +11443,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 9420 + i32.const 9452 i32.add i64.load32_u i64.const 32 @@ -11449,7 +11466,7 @@ i32.div_u i32.const 2 i32.shl - i32.const 9420 + i32.const 9452 i32.add i64.load32_u local.get $3 @@ -11457,7 +11474,7 @@ i32.rem_u i32.const 2 i32.shl - i32.const 9420 + i32.const 9452 i32.add i64.load32_u i64.const 32 @@ -11854,11 +11871,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -11879,7 +11896,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $0 br $__inlined_func$~lib/util/string/joinIntegerArray end @@ -12867,14 +12884,17 @@ block $invalid block $std/array/ArrayStr block $std/array/Proxy - block $std/array/Ref - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner4 $folding-inner0 $std/array/Ref $folding-inner4 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $std/array/Proxy $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner3 $folding-inner3 $std/array/ArrayStr $folding-inner2 $invalid + block $std/array/Dim + block $std/array/Ref + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner4 $folding-inner0 $std/array/Ref $folding-inner4 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $std/array/Dim $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $std/array/Proxy $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner3 $folding-inner3 $std/array/ArrayStr $folding-inner2 $invalid + end + return end return end @@ -12940,11 +12960,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13008,7 +13028,7 @@ if i32.const 0 i32.const 1552 - i32.const 942 + i32.const 991 i32.const 3 call $~lib/builtins/abort unreachable @@ -13025,11 +13045,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13050,7 +13070,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -13060,11 +13080,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13261,7 +13281,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -13272,7 +13292,7 @@ local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/sort/SORT<~lib/array/Array> + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer local.tee $2 local.get $0 @@ -13283,7 +13303,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -13349,7 +13369,7 @@ if i32.const 0 i32.const 1552 - i32.const 942 + i32.const 991 i32.const 3 call $~lib/builtins/abort unreachable @@ -13360,8 +13380,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13374,11 +13394,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13389,10 +13409,10 @@ i32.const 0 i32.store local.get $1 - i32.const 9104 + i32.const 9136 i32.store local.get $0 - i32.const 9104 + i32.const 9136 call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer i32.const 4 @@ -13406,11 +13426,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13421,10 +13441,10 @@ i32.const 0 i32.store local.get $1 - i32.const 9104 + i32.const 9136 i32.store local.get $0 - i32.const 9104 + i32.const 9136 call $~lib/array/Array<~lib/string/String|null>#join global.get $~lib/memory/__stack_pointer i32.const 4 @@ -13438,11 +13458,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13453,10 +13473,10 @@ i32.const 0 i32.store local.get $1 - i32.const 9104 + i32.const 9136 i32.store local.get $0 - i32.const 9104 + i32.const 9136 call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer i32.const 4 @@ -13470,11 +13490,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13485,10 +13505,10 @@ i32.const 0 i32.store local.get $1 - i32.const 9104 + i32.const 9136 i32.store local.get $0 - i32.const 9104 + i32.const 9136 call $~lib/array/Array#join global.get $~lib/memory/__stack_pointer i32.const 4 @@ -13508,7 +13528,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -13516,7 +13536,7 @@ i32.const 0 i32.store local.get $2 - i32.const 9104 + i32.const 9136 i32.store local.get $0 i32.load offset=4 @@ -13529,7 +13549,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -13551,7 +13571,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $0 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end @@ -13568,7 +13588,7 @@ local.get $0 call $~lib/array/Array#toString else - i32.const 8816 + i32.const 8848 end local.set $0 global.get $~lib/memory/__stack_pointer @@ -13577,12 +13597,12 @@ global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - i32.const 8816 + i32.const 8848 local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 i32.store offset=4 - i32.const 9100 + i32.const 9132 i32.load i32.const 1 i32.shr_u @@ -13620,7 +13640,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 9104 + i32.const 9136 call $~lib/string/String.__concat local.tee $0 i32.store offset=4 @@ -13668,8 +13688,8 @@ local.get $0 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -13684,20 +13704,20 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) (local $10 i32) (local $11 f64) (local $12 f32) global.get $~lib/memory/__stack_pointer - i32.const 76 + i32.const 172 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner2 + block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -13727,12 +13747,48 @@ i64.const 0 i64.store offset=64 local.get $1 + i64.const 0 + i64.store offset=72 + local.get $1 + i64.const 0 + i64.store offset=80 + local.get $1 + i64.const 0 + i64.store offset=88 + local.get $1 + i64.const 0 + i64.store offset=96 + local.get $1 + i64.const 0 + i64.store offset=104 + local.get $1 + i64.const 0 + i64.store offset=112 + local.get $1 + i64.const 0 + i64.store offset=120 + local.get $1 + i64.const 0 + i64.store offset=128 + local.get $1 + i64.const 0 + i64.store offset=136 + local.get $1 + i64.const 0 + i64.store offset=144 + local.get $1 + i64.const 0 + i64.store offset=152 + local.get $1 + i64.const 0 + i64.store offset=160 + local.get $1 i32.const 0 - i32.store offset=72 + i32.store offset=168 memory.size i32.const 16 i32.shl - i32.const 31492 + i32.const 31548 i32.sub i32.const 1 i32.shr_u @@ -13776,9 +13832,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 @@ -13795,9 +13851,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -17773,38 +17829,38 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store block $__inlined_func$~lib/array/Array#indexOf25 - local.get $1 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $4 i32.const -100 i32.le_s i32.const 1 - local.get $3 + local.get $4 select if i32.const -1 local.set $0 br $__inlined_func$~lib/array/Array#indexOf25 end - local.get $3 + local.get $4 i32.const 100 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select local.set $0 - local.get $1 + local.get $3 i32.load offset=4 local.set $1 loop $while-continue|026 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $1 @@ -17839,38 +17895,38 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store block $__inlined_func$~lib/array/Array#indexOf28 - local.get $1 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $4 i32.const -2 i32.le_s i32.const 1 - local.get $3 + local.get $4 select if i32.const -1 local.set $0 br $__inlined_func$~lib/array/Array#indexOf28 end - local.get $3 + local.get $4 i32.const 2 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select local.set $0 - local.get $1 + local.get $3 i32.load offset=4 local.set $1 loop $while-continue|030 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $1 @@ -17905,38 +17961,38 @@ end global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.tee $1 + local.tee $3 i32.store block $__inlined_func$~lib/array/Array#indexOf32 - local.get $1 + local.get $3 i32.load offset=12 - local.tee $3 + local.tee $4 i32.const -4 i32.le_s i32.const 1 - local.get $3 + local.get $4 select if i32.const -1 local.set $0 br $__inlined_func$~lib/array/Array#indexOf32 end - local.get $3 + local.get $4 i32.const 4 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select local.set $0 - local.get $1 + local.get $3 i32.load offset=4 local.set $1 loop $while-continue|034 local.get $0 - local.get $3 + local.get $4 i32.lt_s if local.get $1 @@ -19366,74 +19422,74 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 3 i32.const 2 i32.const 11 i32.const 0 call $~lib/rt/__newArray - local.tee $1 + local.tee $2 i32.store offset=24 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.load offset=4 i32.store offset=20 - local.get $1 + local.get $2 i32.const 0 i32.const 1 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $1 + local.get $2 i32.const 1 i32.const 0 call $~lib/array/Array#__uset - local.get $1 + local.get $2 i32.const 2 i32.const 2 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $0 local.get $1 + local.get $2 i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store i32.const 0 - local.get $1 + local.get $2 i32.load offset=12 - local.tee $9 - local.get $9 + local.tee $8 + local.get $8 i32.const 0 i32.gt_s select - local.set $5 - local.get $0 + local.set $4 + local.get $1 i32.const 1 - local.get $9 - local.get $5 + local.get $8 + local.get $4 i32.sub - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 1 i32.gt_s select - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.tee $2 + local.tee $5 i32.const 2 i32.const 11 i32.const 0 @@ -19442,48 +19498,48 @@ i32.store local.get $7 i32.load offset=4 - local.get $1 + local.get $2 i32.load offset=4 - local.tee $3 - local.get $5 + local.tee $0 + local.get $4 i32.const 2 i32.shl i32.add - local.tee $0 - local.get $2 + local.tee $1 + local.get $5 i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $2 + local.get $8 + local.get $4 local.get $5 i32.add - local.tee $5 + local.tee $4 i32.ne if + local.get $1 local.get $0 - local.get $3 - local.get $5 + local.get $4 i32.const 2 i32.shl i32.add - local.get $9 - local.get $5 + local.get $8 + local.get $4 i32.sub i32.const 2 i32.shl call $~lib/memory/memory.copy end - local.get $1 - local.get $9 local.get $2 + local.get $8 + local.get $5 i32.sub i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 local.get $7 i32.store offset=24 local.get $7 @@ -19502,9 +19558,9 @@ local.get $7 i32.const 0 call $~lib/array/Array#__get - local.tee $0 + local.tee $1 i32.store offset=28 - local.get $0 + local.get $1 i32.eqz if i32.const 5824 @@ -19514,7 +19570,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.load i32.const 1 i32.ne @@ -19526,7 +19582,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.load offset=12 i32.const 2 i32.ne @@ -19538,7 +19594,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 0 call $~lib/array/Array#__get if @@ -19550,7 +19606,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.const 1 call $~lib/array/Array#__get local.tee $1 @@ -21277,48 +21333,48 @@ call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $5 global.get $std/array/arr - local.tee $7 + local.tee $8 i32.store - local.get $1 + local.get $5 i32.const 6560 i32.store offset=8 i32.const 0 local.set $6 - local.get $1 + local.get $5 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 - local.get $7 + local.get $1 + local.get $8 i32.load offset=12 - local.tee $5 + local.tee $4 i32.const 2 i32.const 9 i32.const 0 call $~lib/rt/__newArray - local.tee $2 + local.tee $7 i32.store - local.get $2 + local.get $7 i32.load offset=4 - local.set $4 + local.set $3 loop $for-loop|044 local.get $6 - local.get $5 - local.get $7 + local.get $4 + local.get $8 i32.load offset=12 - local.tee $0 - local.get $0 - local.get $5 + local.tee $1 + local.get $1 + local.get $4 i32.gt_s select i32.lt_s @@ -21326,20 +21382,20 @@ local.get $6 i32.const 2 i32.shl - local.tee $3 - local.get $7 + local.tee $0 + local.get $8 i32.load offset=4 i32.add i32.load - local.set $0 + local.set $1 i32.const 3 global.set $~argumentsLength + local.get $0 local.get $3 - local.get $4 i32.add - local.get $0 + local.get $1 local.get $6 - local.get $7 + local.get $8 i32.const 6560 i32.load call_indirect $0 (type $i32_i32_i32_=>_f32) @@ -21355,10 +21411,10 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $2 + local.get $5 + local.get $7 i32.store offset=24 - local.get $2 + local.get $7 i32.load offset=12 i32.const 4 i32.ne @@ -21370,7 +21426,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $7 i32.const 0 call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer @@ -22732,6 +22788,372 @@ i64.reinterpret_f64 call $~lib/math/NativeMath.seedRandom global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + i32.const 19 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.load offset=4 + i32.store offset=20 + local.get $1 + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=12 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 80 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=16 + local.get $1 + i32.const 90 + i32.store + local.get $1 + i32.const 90 + i32.store offset=4 + local.get $0 + i32.const 1 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 95 + i32.store offset=4 + local.get $0 + i32.const 2 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=28 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 100 + i32.store offset=4 + local.get $0 + i32.const 3 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=32 + local.get $1 + i32.const 80 + i32.store + local.get $1 + i32.const 110 + i32.store offset=4 + local.get $0 + i32.const 4 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=36 + local.get $1 + i32.const 110 + i32.store + local.get $1 + i32.const 115 + i32.store offset=4 + local.get $0 + i32.const 5 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=40 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 120 + i32.store offset=4 + local.get $0 + i32.const 6 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=44 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 125 + i32.store offset=4 + local.get $0 + i32.const 7 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=48 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 130 + i32.store offset=4 + local.get $0 + i32.const 8 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=52 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 135 + i32.store offset=4 + local.get $0 + i32.const 9 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=56 + local.get $1 + i32.const 75 + i32.store + local.get $1 + i32.const 140 + i32.store offset=4 + local.get $0 + i32.const 10 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=60 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 140 + i32.store offset=4 + local.get $0 + i32.const 11 + local.get $1 + call $~lib/array/Array#__uset + local.get $0 + global.set $std/array/inputStabArr + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + i32.const 19 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $0 + i32.load offset=4 + i32.store offset=24 + local.get $1 + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=64 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 95 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=68 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 125 + i32.store offset=4 + local.get $0 + i32.const 1 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=72 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 130 + i32.store offset=4 + local.get $0 + i32.const 2 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=76 + local.get $1 + i32.const 70 + i32.store + local.get $1 + i32.const 140 + i32.store offset=4 + local.get $0 + i32.const 3 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=80 + local.get $1 + i32.const 75 + i32.store + local.get $1 + i32.const 140 + i32.store offset=4 + local.get $0 + i32.const 4 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=84 + local.get $1 + i32.const 80 + i32.store + local.get $1 + i32.const 110 + i32.store offset=4 + local.get $0 + i32.const 5 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=88 + local.get $1 + i32.const 90 + i32.store + local.get $1 + i32.const 90 + i32.store offset=4 + local.get $0 + i32.const 6 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=92 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 80 + i32.store offset=4 + local.get $0 + i32.const 7 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=96 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 100 + i32.store offset=4 + local.get $0 + i32.const 8 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=100 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 120 + i32.store offset=4 + local.get $0 + i32.const 9 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=104 + local.get $1 + i32.const 100 + i32.store + local.get $1 + i32.const 135 + i32.store offset=4 + local.get $0 + i32.const 10 + local.get $1 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=108 + local.get $1 + i32.const 110 + i32.store + local.get $1 + i32.const 115 + i32.store offset=4 + local.get $0 + i32.const 11 + local.get $1 + call $~lib/array/Array#__uset + local.get $0 + global.set $std/array/outputStabArr + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 2 i32.const 9 @@ -22759,7 +23181,7 @@ if i32.const 0 i32.const 1552 - i32.const 953 + i32.const 1002 i32.const 3 call $~lib/builtins/abort unreachable @@ -22792,7 +23214,7 @@ if i32.const 0 i32.const 1552 - i32.const 957 + i32.const 1006 i32.const 3 call $~lib/builtins/abort unreachable @@ -22804,7 +23226,7 @@ i32.const 7728 call $~lib/rt/__newArray local.tee $5 - i32.store offset=12 + i32.store offset=112 i32.const 0 global.set $~argumentsLength i32.const 0 @@ -22814,9 +23236,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -22918,7 +23340,7 @@ if i32.const 0 i32.const 1552 - i32.const 961 + i32.const 1010 i32.const 3 call $~lib/builtins/abort unreachable @@ -22930,7 +23352,7 @@ i32.const 7952 call $~lib/rt/__newArray local.tee $0 - i32.store offset=16 + i32.store offset=116 i32.const 0 global.set $~argumentsLength i32.const 0 @@ -22940,17 +23362,17 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of155 - block $0of156 - block $outOfRange57 + block $1of1101 + block $0of1102 + block $outOfRange103 global.get $~argumentsLength - br_table $0of156 $1of155 $outOfRange57 + br_table $0of1102 $1of1101 $outOfRange103 end unreachable end @@ -22987,7 +23409,7 @@ if i32.const 0 i32.const 1552 - i32.const 965 + i32.const 1014 i32.const 3 call $~lib/builtins/abort unreachable @@ -22999,7 +23421,7 @@ i32.const 8080 call $~lib/rt/__newArray local.tee $0 - i32.store offset=4 + i32.store offset=120 i32.const 0 global.set $~argumentsLength local.get $0 @@ -23022,7 +23444,7 @@ if i32.const 0 i32.const 1552 - i32.const 969 + i32.const 1018 i32.const 3 call $~lib/builtins/abort unreachable @@ -23034,67 +23456,67 @@ i32.const 8208 call $~lib/rt/__newArray local.tee $0 - i32.store offset=28 + i32.store offset=124 global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 i32.const 3 i32.const 8240 call $~lib/rt/__newArray - local.tee $10 - i32.store offset=32 + local.tee $6 + i32.store offset=128 global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 3 i32.const 8272 call $~lib/rt/__newArray - local.tee $9 - i32.store offset=36 + local.tee $2 + i32.store offset=132 global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 2 i32.const 3 i32.const 8304 call $~lib/rt/__newArray - local.tee $7 - i32.store offset=40 + local.tee $8 + i32.store offset=136 global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 2 i32.const 3 i32.const 8352 call $~lib/rt/__newArray - local.tee $6 - i32.store offset=44 + local.tee $10 + i32.store offset=140 global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createReverseOrderedArray - local.tee $2 - i32.store offset=48 + local.tee $7 + i32.store offset=144 global.get $~lib/memory/__stack_pointer i32.const 128 call $std/array/createReverseOrderedArray local.tee $5 - i32.store offset=52 + i32.store offset=148 global.get $~lib/memory/__stack_pointer i32.const 1024 call $std/array/createReverseOrderedArray local.tee $4 - i32.store offset=56 + i32.store offset=152 global.get $~lib/memory/__stack_pointer i32.const 10000 call $std/array/createReverseOrderedArray local.tee $3 - i32.store offset=60 + i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 512 call $std/array/createRandomOrderedArray local.tee $1 - i32.store offset=64 + i32.store offset=160 local.get $0 call $std/array/assertSortedDefault - local.get $10 + local.get $6 call $std/array/assertSortedDefault i32.const 1 i32.const 2 @@ -23105,7 +23527,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $10 + local.get $6 local.get $0 i32.const 0 call $std/array/isArraysEqual @@ -23113,12 +23535,12 @@ if i32.const 0 i32.const 1552 - i32.const 989 + i32.const 1038 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $9 + local.get $2 call $std/array/assertSortedDefault i32.const 2 i32.const 2 @@ -23129,7 +23551,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $9 + local.get $2 local.get $0 i32.const 0 call $std/array/isArraysEqual @@ -23137,37 +23559,37 @@ if i32.const 0 i32.const 1552 - i32.const 992 + i32.const 1041 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 call $std/array/assertSortedDefault - local.get $7 - local.get $6 + local.get $8 + local.get $10 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 1552 - i32.const 995 + i32.const 1044 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $7 call $std/array/assertSortedDefault - local.get $2 - local.get $6 + local.get $7 + local.get $10 i32.const 4 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 1552 - i32.const 998 + i32.const 1047 i32.const 3 call $~lib/builtins/abort unreachable @@ -23175,14 +23597,14 @@ local.get $5 call $std/array/assertSortedDefault local.get $5 - local.get $6 + local.get $10 i32.const 4 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 1552 - i32.const 1001 + i32.const 1050 i32.const 3 call $~lib/builtins/abort unreachable @@ -23190,14 +23612,14 @@ local.get $4 call $std/array/assertSortedDefault local.get $4 - local.get $6 + local.get $10 i32.const 4 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 1552 - i32.const 1004 + i32.const 1053 i32.const 3 call $~lib/builtins/abort unreachable @@ -23205,36 +23627,226 @@ local.get $3 call $std/array/assertSortedDefault local.get $3 - local.get $6 + local.get $10 i32.const 4 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 1552 - i32.const 1007 + i32.const 1056 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 call $std/array/assertSortedDefault + i32.const 0 + local.set $6 + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15164 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $7 + i64.const 0 + i64.store + local.get $7 + i64.const 0 + i64.store offset=8 + local.get $7 + i64.const 0 + i64.store offset=16 + local.get $7 + global.get $std/array/inputStabArr + local.tee $5 + i32.store offset=8 + local.get $7 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15164 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.tee $1 + i32.const 0 + i32.store + i32.const 0 + local.get $5 + i32.load offset=12 + local.tee $3 + local.get $3 + i32.const 0 + i32.gt_s + select + local.set $0 + local.get $1 + local.get $3 + local.get $0 + i32.sub + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 + i32.const 2 + i32.const 19 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + local.set $4 + local.get $5 + i32.load offset=4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.set $3 + local.get $1 + i32.const 2 + i32.shl + local.set $0 + loop $while-continue|00 + local.get $0 + local.get $6 + i32.gt_u + if + local.get $4 + local.get $6 + i32.add + local.get $3 + local.get $6 + i32.add + i32.load + local.tee $1 + i32.store + local.get $2 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $6 + i32.const 4 + i32.add + local.set $6 + br $while-continue|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.tee $1 + local.get $2 + i32.store + local.get $1 + i32.const 8496 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.get $2 + i32.load offset=12 + i32.const 8496 + call $~lib/util/sort/SORT + local.get $7 + local.get $2 + i32.store offset=12 + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + global.get $std/array/inputStabArr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + local.set $3 + loop $for-loop|01 + local.get $3 + local.get $8 + i32.gt_s + if + block $for-break0 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $8 + call $~lib/array/Array#__get + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.tee $0 + global.get $std/array/outputStabArr + local.tee $1 + i32.store + local.get $0 + local.get $1 + local.get $8 + call $~lib/array/Array#__get + local.tee $1 + i32.store offset=20 + local.get $4 + i32.load + local.get $1 + i32.load + i32.ne + if (result i32) + i32.const 1 + else + local.get $4 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.ne + end + if + i32.const 0 + local.set $6 + br $for-break0 + end + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|01 + end + end + end + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 987 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createRandomOrderedArray local.tee $0 - i32.store offset=64 + i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 257 call $std/array/createRandomOrderedArray local.tee $1 - i32.store offset=60 - global.get $~lib/memory/__stack_pointer - i32.const 8496 - i32.store offset=8 - local.get $0 - i32.const 8496 - call $std/array/assertSorted + i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 8528 i32.store offset=8 @@ -23244,7 +23856,7 @@ global.get $~lib/memory/__stack_pointer i32.const 8560 i32.store offset=8 - local.get $1 + local.get $0 i32.const 8560 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer @@ -23253,6 +23865,12 @@ local.get $1 i32.const 8592 call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 8624 + i32.store offset=8 + local.get $1 + i32.const 8624 + call $std/array/assertSorted i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer @@ -23261,9 +23879,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $4 i64.const 0 @@ -23273,16 +23891,16 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 i64.store local.get $1 i32.const 16 - i32.const 22 + i32.const 25 call $~lib/rt/itcms/__new local.tee $5 i32.store @@ -23335,7 +23953,7 @@ local.get $4 local.get $5 i32.store - loop $for-loop|058 + loop $for-loop|0104 local.get $0 i32.const 2 i32.lt_s @@ -23359,7 +23977,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|058 + br $for-loop|0104 end end global.get $~lib/memory/__stack_pointer @@ -23368,97 +23986,97 @@ global.set $~lib/memory/__stack_pointer local.get $3 local.get $5 - i32.store offset=60 + i32.store offset=156 global.get $~lib/memory/__stack_pointer - i32.const 8624 + i32.const 8656 i32.store offset=8 local.get $5 - i32.const 8624 + i32.const 8656 call $std/array/assertSorted<~lib/array/Array> i32.const 0 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.tee $3 + local.tee $0 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $3 i64.const 0 i64.store - local.get $0 + local.get $3 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 i64.store local.get $1 i32.const 16 - i32.const 25 + i32.const 28 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $5 i32.store - local.get $1 + local.get $5 i32.const 0 i32.store - local.get $1 + local.get $5 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link - local.get $1 + local.get $5 i32.const 0 i32.store offset=4 - local.get $1 + local.get $5 i32.const 0 i32.store offset=8 - local.get $1 + local.get $5 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 2048 i32.const 0 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $1 i32.store offset=4 - local.get $4 + local.get $1 i32.const 0 i32.const 2048 call $~lib/memory/memory.fill + local.get $5 local.get $1 - local.get $4 i32.store + local.get $5 local.get $1 - local.get $4 i32.const 0 call $~lib/rt/itcms/__link + local.get $5 local.get $1 - local.get $4 i32.store offset=4 - local.get $1 + local.get $5 i32.const 2048 i32.store offset=8 - local.get $1 + local.get $5 i32.const 512 i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $0 - local.get $1 + local.get $3 + local.get $5 i32.store loop $for-loop|053 - local.get $5 + local.get $4 i32.const 512 i32.lt_s if @@ -23467,22 +24085,22 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 - i32.const 24 + i32.const 27 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.store - local.get $0 + local.get $1 i32.const 511 - local.get $5 + local.get $4 i32.sub i32.store global.get $~lib/memory/__stack_pointer @@ -23490,16 +24108,16 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 local.get $1 + i32.store offset=4 local.get $5 - local.get $0 + local.get $4 + local.get $1 call $~lib/array/Array<~lib/array/Array>#__set - local.get $5 + local.get $4 i32.const 1 i32.add - local.set $5 + local.set $4 br $for-loop|053 end end @@ -23507,62 +24125,60 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 - local.get $1 - i32.store offset=60 + local.get $0 + local.get $5 + i32.store offset=156 global.get $~lib/memory/__stack_pointer - i32.const 8656 + i32.const 8688 i32.store offset=8 - local.get $1 - i32.const 8656 + local.get $5 + i32.const 8688 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 7 i32.const 2 - i32.const 27 - i32.const 8848 + i32.const 30 + i32.const 8880 call $~lib/rt/__newArray local.tee $1 - i32.store offset=64 + i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 7 i32.const 2 - i32.const 27 - i32.const 8896 + i32.const 30 + i32.const 8928 call $~lib/rt/__newArray - local.tee $3 - i32.store offset=56 + local.tee $5 + i32.store offset=152 i32.const 1 global.set $~argumentsLength - local.get $1 - local.set $0 i32.const 0 - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of156 - block $0of157 - block $outOfRange58 + block $1of155 + block $0of156 + block $outOfRange57 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of157 $1of156 $outOfRange58 + br_table $0of156 $1of155 $outOfRange57 end unreachable end - i32.const 8944 - local.set $7 + i32.const 8976 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 8944 + i32.const 8976 i32.store end global.get $~lib/memory/__stack_pointer @@ -23570,65 +24186,65 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.get $1 i32.load offset=12 - local.get $7 - call $~lib/util/sort/SORT<~lib/array/Array> + local.get $10 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer - local.tee $4 - local.get $0 + local.tee $0 + local.get $1 i32.store block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) - local.get $4 + local.get $0 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store i32.const 1 - local.set $9 - local.get $0 + local.set $6 + local.get $1 i32.load offset=12 - local.set $4 - loop $for-loop|060 - local.get $4 - local.get $9 + local.set $0 + loop $for-loop|058 + local.get $0 + local.get $6 i32.gt_s if - local.get $0 - local.get $9 + local.get $1 + local.get $6 i32.const 1 i32.sub call $~lib/array/Array#__get - local.set $2 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.store - local.get $0 - local.get $9 + local.get $1 + local.get $6 call $~lib/array/Array#__get - local.set $5 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.store offset=4 i32.const 2 global.set $~argumentsLength - local.get $2 - local.get $5 - local.get $7 + local.get $4 + local.get $3 + local.get $10 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 @@ -23641,11 +24257,11 @@ i32.const 0 br $__inlined_func$std/array/isSorted<~lib/string/String|null> end - local.get $9 + local.get $6 i32.const 1 i32.add - local.set $9 - br $for-loop|060 + local.set $6 + br $for-loop|058 end end global.get $~lib/memory/__stack_pointer @@ -23658,7 +24274,7 @@ if i32.const 0 i32.const 1552 - i32.const 942 + i32.const 991 i32.const 3 call $~lib/builtins/abort unreachable @@ -23679,26 +24295,26 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $folding-inner161 - block $folding-inner062 + block $folding-inner159 + block $folding-inner060 local.get $1 i32.load offset=12 local.tee $0 - local.get $3 + local.get $5 i32.load offset=12 i32.ne - br_if $folding-inner062 + br_if $folding-inner060 local.get $1 - local.get $3 + local.get $5 i32.eq - br_if $folding-inner161 - loop $for-loop|064 + br_if $folding-inner159 + loop $for-loop|062 local.get $0 local.get $2 i32.gt_s @@ -23706,30 +24322,30 @@ local.get $1 local.get $2 call $~lib/array/Array#__get - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $3 + local.get $5 local.get $2 call $~lib/array/Array#__get - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store offset=4 - local.get $5 local.get $4 + local.get $3 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner062 + br_if $folding-inner060 local.get $2 i32.const 1 i32.add local.set $2 - br $for-loop|064 + br $for-loop|062 end end - br $folding-inner161 + br $folding-inner159 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -23748,7 +24364,7 @@ if i32.const 0 i32.const 1552 - i32.const 1044 + i32.const 1095 i32.const 3 call $~lib/builtins/abort unreachable @@ -23756,14 +24372,14 @@ i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $2 + local.tee $8 i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -23772,9 +24388,9 @@ i32.const 0 i32.const 400 call $~lib/array/Array<~lib/string/String>#constructor - local.tee $10 + local.tee $2 i32.store - loop $for-loop|059107 + loop $for-loop|0105 local.get $0 i32.const 400 i32.lt_s @@ -23783,17 +24399,17 @@ f64.const 32 f64.mul i32.trunc_f64_s - local.set $5 + local.set $7 i32.const 0 - local.set $9 + local.set $6 global.get $~lib/memory/__stack_pointer i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $3 i64.const 0 @@ -23801,18 +24417,18 @@ local.get $3 i32.const 0 i32.store offset=8 - i32.const 8816 + i32.const 8848 local.set $1 local.get $3 - i32.const 8816 + i32.const 8848 i32.store - loop $for-loop|067 - local.get $5 - local.get $9 - i32.gt_s + loop $for-loop|064 + local.get $6 + local.get $7 + i32.lt_s if global.get $~lib/memory/__stack_pointer - local.tee $4 + local.tee $5 i32.const 7312 i32.store offset=4 call $~lib/math/NativeMath.random @@ -23828,20 +24444,20 @@ f64.mul f64.floor i32.trunc_f64_s - local.set $7 + local.set $4 local.get $3 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store block $__inlined_func$~lib/string/String#charAt - local.get $7 + local.get $4 i32.const 7308 i32.load i32.const 1 @@ -23852,7 +24468,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $3 br $__inlined_func$~lib/string/String#charAt end @@ -23863,7 +24479,7 @@ local.tee $3 i32.store local.get $3 - local.get $7 + local.get $4 i32.const 1 i32.shl i32.const 7312 @@ -23878,17 +24494,17 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=4 - local.get $4 + local.get $5 local.get $1 local.get $3 call $~lib/string/String.__concat local.tee $1 i32.store - local.get $9 + local.get $6 i32.const 1 i32.add - local.set $9 - br $for-loop|067 + local.set $6 + br $for-loop|064 end end global.get $~lib/memory/__stack_pointer @@ -23898,7 +24514,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=4 - local.get $10 + local.get $2 local.get $0 local.get $1 call $~lib/array/Array<~lib/array/Array>#__set @@ -23906,16 +24522,16 @@ i32.const 1 i32.add local.set $0 - br $for-loop|059107 + br $for-loop|0105 end end global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer + local.get $8 local.get $2 - local.get $10 - i32.store offset=60 + i32.store offset=156 i32.const 1 global.set $~argumentsLength i32.const 0 @@ -23925,29 +24541,29 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of160 - block $0of161 - block $outOfRange62 + block $1of1106 + block $0of1107 + block $outOfRange108 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of161 $1of160 $outOfRange62 + br_table $0of1107 $1of1106 $outOfRange108 end unreachable end - i32.const 8976 + i32.const 9008 local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 8976 + i32.const 9008 i32.store end - local.get $10 + local.get $2 local.get $6 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer @@ -23956,20 +24572,20 @@ global.set $~lib/memory/__stack_pointer i32.const 2 i32.const 0 - i32.const 31 - i32.const 9008 + i32.const 34 + i32.const 9040 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer local.tee $3 local.get $1 - i32.store offset=68 + i32.store offset=164 local.get $3 - i32.const 9104 - i32.store offset=72 + i32.const 9136 + i32.store offset=168 local.get $1 i32.load offset=4 - local.set $7 + local.set $8 local.get $1 i32.load offset=12 local.set $1 @@ -23982,9 +24598,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -23992,7 +24608,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $2 i32.const 0 i32.lt_s if @@ -24000,29 +24616,29 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $1 br $__inlined_func$~lib/util/string/joinBooleanArray end - block $folding-inner069 - local.get $9 + block $folding-inner066 + local.get $2 i32.eqz if - i32.const 9040 i32.const 9072 - local.get $7 + i32.const 9104 + local.get $8 i32.load8_u select local.set $1 - br $folding-inner069 + br $folding-inner066 end global.get $~lib/memory/__stack_pointer - local.get $9 - i32.const 9100 + local.get $2 + i32.const 9132 i32.load i32.const 1 i32.shr_u - local.tee $2 + local.tee $7 i32.const 5 i32.add i32.mul @@ -24036,12 +24652,12 @@ local.tee $1 i32.store loop $for-loop|1 + local.get $2 local.get $6 - local.get $9 - i32.lt_s + i32.gt_s if local.get $6 - local.get $7 + local.get $8 i32.add i32.load8_u local.tee $3 @@ -24054,8 +24670,8 @@ i32.const 1 i32.shl i32.add - i32.const 9040 i32.const 9072 + i32.const 9104 local.get $3 select local.get $5 @@ -24066,20 +24682,20 @@ local.get $5 i32.add local.set $0 - local.get $2 + local.get $7 if local.get $1 local.get $0 i32.const 1 i32.shl i32.add - i32.const 9104 - local.get $2 + i32.const 9136 + local.get $7 i32.const 1 i32.shl call $~lib/memory/memory.copy local.get $0 - local.get $2 + local.get $7 i32.add local.set $0 end @@ -24090,8 +24706,8 @@ br $for-loop|1 end end - local.get $7 - local.get $9 + local.get $2 + local.get $8 i32.add i32.load8_u local.tee $3 @@ -24104,8 +24720,8 @@ i32.const 1 i32.shl i32.add - i32.const 9040 i32.const 9072 + i32.const 9104 local.get $3 select local.get $5 @@ -24123,7 +24739,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner069 + br $folding-inner066 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24141,16 +24757,16 @@ local.get $1 i32.store local.get $0 - i32.const 9136 + i32.const 9168 i32.store offset=8 local.get $1 - i32.const 9136 + i32.const 9168 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1053 + i32.const 1104 i32.const 3 call $~lib/builtins/abort unreachable @@ -24158,18 +24774,18 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 9184 + i32.const 9216 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=68 + i32.store offset=164 local.get $1 - i32.const 8816 - i32.store offset=72 + i32.const 8848 + i32.store offset=168 local.get $0 - i32.const 8816 + i32.const 8848 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -24177,16 +24793,16 @@ local.get $0 i32.store local.get $1 - i32.const 10992 + i32.const 11024 i32.store offset=8 local.get $0 - i32.const 10992 + i32.const 11024 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1054 + i32.const 1105 i32.const 3 call $~lib/builtins/abort unreachable @@ -24194,18 +24810,18 @@ i32.const 3 i32.const 2 i32.const 7 - i32.const 11024 + i32.const 11056 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=68 + i32.store offset=164 local.get $1 - i32.const 11056 - i32.store offset=72 + i32.const 11088 + i32.store offset=168 local.get $0 - i32.const 11056 + i32.const 11088 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -24213,16 +24829,16 @@ local.get $0 i32.store local.get $1 - i32.const 10992 + i32.const 11024 i32.store offset=8 local.get $0 - i32.const 10992 + i32.const 11024 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1055 + i32.const 1106 i32.const 3 call $~lib/builtins/abort unreachable @@ -24230,18 +24846,18 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 11088 + i32.const 11120 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=68 + i32.store offset=164 local.get $1 - i32.const 11120 - i32.store offset=72 + i32.const 11152 + i32.store offset=168 local.get $0 - i32.const 11120 + i32.const 11152 call $~lib/array/Array#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -24249,16 +24865,16 @@ local.get $0 i32.store local.get $1 - i32.const 11152 + i32.const 11184 i32.store offset=8 local.get $0 - i32.const 11152 + i32.const 11184 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1056 + i32.const 1107 i32.const 3 call $~lib/builtins/abort unreachable @@ -24266,16 +24882,16 @@ i32.const 6 i32.const 3 i32.const 10 - i32.const 11232 + i32.const 11264 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=68 + i32.store offset=164 local.get $1 - i32.const 11312 - i32.store offset=72 + i32.const 11344 + i32.store offset=168 local.get $0 i32.load offset=4 local.get $0 @@ -24287,35 +24903,35 @@ local.get $0 i32.store local.get $1 - i32.const 12480 + i32.const 12512 i32.store offset=8 local.get $0 - i32.const 12480 + i32.const 12512 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1057 + i32.const 1108 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 3 i32.const 2 - i32.const 27 - i32.const 12624 + i32.const 30 + i32.const 12656 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=68 + i32.store offset=164 local.get $1 - i32.const 8816 - i32.store offset=72 + i32.const 8848 + i32.store offset=168 local.get $0 - i32.const 8816 + i32.const 8848 call $~lib/array/Array<~lib/string/String|null>#join local.set $0 global.get $~lib/memory/__stack_pointer @@ -24323,16 +24939,16 @@ local.get $0 i32.store local.get $1 - i32.const 12592 + i32.const 12624 i32.store offset=8 local.get $0 - i32.const 12592 + i32.const 12624 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1058 + i32.const 1109 i32.const 3 call $~lib/builtins/abort unreachable @@ -24345,11 +24961,11 @@ i32.const 0 call $~lib/rt/__newArray local.tee $0 - i32.store offset=60 + i32.store offset=156 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - i32.store offset=56 + i32.store offset=152 local.get $0 i32.const 0 i32.const 0 @@ -24366,10 +24982,10 @@ call $~lib/array/Array#__uset local.get $1 local.get $0 - i32.store offset=56 + i32.store offset=152 global.get $~lib/memory/__stack_pointer - i32.const 9104 - i32.store offset=72 + i32.const 9136 + i32.store offset=168 local.get $0 call $~lib/array/Array#join local.set $0 @@ -24378,16 +24994,16 @@ local.get $0 i32.store local.get $1 - i32.const 12720 + i32.const 12752 i32.store offset=8 local.get $0 - i32.const 12720 + i32.const 12752 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1060 + i32.const 1111 i32.const 3 call $~lib/builtins/abort unreachable @@ -24400,11 +25016,11 @@ i32.const 0 call $~lib/rt/__newArray local.tee $0 - i32.store offset=60 + i32.store offset=156 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - i32.store offset=64 + i32.store offset=160 local.get $0 i32.const 0 i32.const 0 @@ -24417,10 +25033,10 @@ call $~lib/array/Array#__uset local.get $1 local.get $0 - i32.store offset=64 + i32.store offset=160 global.get $~lib/memory/__stack_pointer - i32.const 9104 - i32.store offset=72 + i32.const 9136 + i32.store offset=168 local.get $0 call $~lib/array/Array#join local.set $0 @@ -24429,16 +25045,16 @@ local.get $0 i32.store local.get $1 - i32.const 12816 + i32.const 12848 i32.store offset=8 local.get $0 - i32.const 12816 + i32.const 12848 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1063 + i32.const 1114 i32.const 3 call $~lib/builtins/abort unreachable @@ -24447,34 +25063,34 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 12912 + i32.const 12944 call $~lib/rt/__newArray local.tee $1 - i32.store offset=56 + i32.store offset=152 global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 i32.const 3 - i32.const 12944 + i32.const 12976 call $~lib/rt/__newArray local.tee $4 - i32.store offset=60 + i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 3 - i32.const 12976 + i32.const 13008 call $~lib/rt/__newArray local.tee $3 - i32.store offset=52 + i32.store offset=148 global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 2 i32.const 3 - i32.const 13008 + i32.const 13040 call $~lib/rt/__newArray local.tee $0 - i32.store offset=48 + i32.store offset=144 local.get $1 call $~lib/array/Array#toString local.set $5 @@ -24483,16 +25099,16 @@ local.get $5 i32.store local.get $1 - i32.const 8816 + i32.const 8848 i32.store offset=8 local.get $5 - i32.const 8816 + i32.const 8848 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1073 + i32.const 1124 i32.const 3 call $~lib/builtins/abort unreachable @@ -24505,16 +25121,16 @@ local.get $4 i32.store local.get $1 - i32.const 12592 + i32.const 12624 i32.store offset=8 local.get $4 - i32.const 12592 + i32.const 12624 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1074 + i32.const 1125 i32.const 3 call $~lib/builtins/abort unreachable @@ -24527,16 +25143,16 @@ local.get $3 i32.store local.get $1 - i32.const 13056 + i32.const 13088 i32.store offset=8 local.get $3 - i32.const 13056 + i32.const 13088 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1075 + i32.const 1126 i32.const 3 call $~lib/builtins/abort unreachable @@ -24549,44 +25165,44 @@ local.get $0 i32.store local.get $1 - i32.const 13088 + i32.const 13120 i32.store offset=8 local.get $0 - i32.const 13088 + i32.const 13120 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1076 + i32.const 1127 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 3 i32.const 0 - i32.const 32 - i32.const 13136 + i32.const 35 + i32.const 13168 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=68 + i32.store offset=164 local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $3 i32.const 0 i32.store local.get $3 - i32.const 9104 + i32.const 9136 i32.store local.get $0 i32.load offset=4 @@ -24603,9 +25219,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -24613,7 +25229,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $2 + local.tee $7 i32.const 0 i32.lt_s if @@ -24621,23 +25237,23 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0110 - local.get $2 + block $folding-inner0109 + local.get $7 i32.eqz if local.get $5 i32.load8_s call $~lib/util/number/itoa32 local.set $1 - br $folding-inner0110 + br $folding-inner0109 end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9100 + local.get $7 + i32.const 9132 i32.load i32.const 1 i32.shr_u @@ -24654,10 +25270,10 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0111 - local.get $2 + loop $for-loop|0110 local.get $6 - i32.gt_s + local.get $7 + i32.lt_s if local.get $1 local.get $0 @@ -24679,7 +25295,7 @@ i32.const 1 i32.shl i32.add - i32.const 9104 + i32.const 9136 local.get $4 i32.const 1 i32.shl @@ -24693,7 +25309,7 @@ i32.const 1 i32.add local.set $6 - br $for-loop|0111 + br $for-loop|0110 end end local.get $3 @@ -24702,8 +25318,8 @@ i32.const 1 i32.shl i32.add - local.get $2 local.get $5 + local.get $7 i32.add i32.load8_s call $~lib/util/number/itoa_buffered @@ -24716,7 +25332,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0110 + br $folding-inner0109 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24738,44 +25354,44 @@ local.get $1 i32.store local.get $0 - i32.const 13168 + i32.const 13200 i32.store offset=8 local.get $1 - i32.const 13168 + i32.const 13200 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1078 + i32.const 1129 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 3 i32.const 1 - i32.const 33 - i32.const 13200 + i32.const 36 + i32.const 13232 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=68 + i32.store offset=164 local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $3 i32.const 0 i32.store local.get $3 - i32.const 9104 + i32.const 9136 i32.store local.get $0 i32.load offset=4 @@ -24792,9 +25408,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -24802,7 +25418,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $2 + local.tee $7 i32.const 0 i32.lt_s if @@ -24810,23 +25426,23 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0113 - local.get $2 + block $folding-inner0112 + local.get $7 i32.eqz if local.get $5 i32.load16_u call $~lib/util/number/utoa32 local.set $1 - br $folding-inner0113 + br $folding-inner0112 end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9100 + local.get $7 + i32.const 9132 i32.load i32.const 1 i32.shr_u @@ -24843,10 +25459,10 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0114 - local.get $2 + loop $for-loop|0113 local.get $6 - i32.gt_s + local.get $7 + i32.lt_s if local.get $1 local.get $0 @@ -24870,7 +25486,7 @@ i32.const 1 i32.shl i32.add - i32.const 9104 + i32.const 9136 local.get $4 i32.const 1 i32.shl @@ -24884,7 +25500,7 @@ i32.const 1 i32.add local.set $6 - br $for-loop|0114 + br $for-loop|0113 end end local.get $3 @@ -24894,7 +25510,7 @@ i32.shl i32.add local.get $5 - local.get $2 + local.get $7 i32.const 1 i32.shl i32.add @@ -24909,7 +25525,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0113 + br $folding-inner0112 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -24931,44 +25547,44 @@ local.get $1 i32.store local.get $0 - i32.const 13232 + i32.const 13264 i32.store offset=8 local.get $1 - i32.const 13232 + i32.const 13264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1079 + i32.const 1130 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 3 i32.const 3 - i32.const 34 - i32.const 13280 + i32.const 37 + i32.const 13312 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=68 + i32.store offset=164 local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $3 i32.const 0 i32.store local.get $3 - i32.const 9104 + i32.const 9136 i32.store local.get $0 i32.load offset=4 @@ -24985,9 +25601,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -24995,7 +25611,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $2 + local.tee $7 i32.const 0 i32.lt_s if @@ -25003,45 +25619,45 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0116 - local.get $2 + block $folding-inner0115 + local.get $7 i32.eqz if block $__inlined_func$~lib/util/number/utoa64 (result i32) local.get $5 i64.load - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - local.get $8 + local.get $9 i64.eqz if global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 9408 + i32.const 9440 br $__inlined_func$~lib/util/number/utoa64 end - local.get $8 + local.get $9 i64.const 4294967295 i64.le_u if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.wrap_i64 local.tee $3 local.tee $1 @@ -25103,51 +25719,51 @@ call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i64.const 1000000000000000 i64.lt_u if (result i32) - local.get $8 + local.get $9 i64.const 1000000000000 i64.lt_u if (result i32) - local.get $8 + local.get $9 i64.const 100000000000 i64.ge_u i32.const 10 i32.add - local.get $8 + local.get $9 i64.const 10000000000 i64.ge_u i32.add else - local.get $8 + local.get $9 i64.const 100000000000000 i64.ge_u i32.const 13 i32.add - local.get $8 + local.get $9 i64.const 10000000000000 i64.ge_u i32.add end else - local.get $8 + local.get $9 i64.const 100000000000000000 i64.lt_u if (result i32) - local.get $8 + local.get $9 i64.const 10000000000000000 i64.ge_u i32.const 16 i32.add else - local.get $8 + local.get $9 i64.const -8446744073709551616 i64.ge_u i32.const 18 i32.add - local.get $8 + local.get $9 i64.const 1000000000000000000 i64.ge_u i32.add @@ -25161,7 +25777,7 @@ local.tee $0 i32.store local.get $0 - local.get $8 + local.get $9 local.get $1 call $~lib/util/number/utoa64_dec_lut end @@ -25172,11 +25788,11 @@ local.get $0 end local.set $1 - br $folding-inner0116 + br $folding-inner0115 end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9100 + local.get $7 + i32.const 9132 i32.load i32.const 1 i32.shr_u @@ -25193,10 +25809,10 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0117 - local.get $2 + loop $for-loop|0116 local.get $6 - i32.gt_s + local.get $7 + i32.lt_s if local.get $1 local.get $0 @@ -25220,7 +25836,7 @@ i32.const 1 i32.shl i32.add - i32.const 9104 + i32.const 9136 local.get $4 i32.const 1 i32.shl @@ -25234,7 +25850,7 @@ i32.const 1 i32.add local.set $6 - br $for-loop|0117 + br $for-loop|0116 end end local.get $3 @@ -25244,7 +25860,7 @@ i32.shl i32.add local.get $5 - local.get $2 + local.get $7 i32.const 3 i32.shl i32.add @@ -25259,7 +25875,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0116 + br $folding-inner0115 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25281,44 +25897,44 @@ local.get $1 i32.store local.get $0 - i32.const 13328 + i32.const 13360 i32.store offset=8 local.get $1 - i32.const 13328 + i32.const 13360 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1080 + i32.const 1131 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 4 i32.const 3 - i32.const 35 - i32.const 13408 + i32.const 38 + i32.const 13440 call $~lib/rt/__newArray local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $0 - i32.store offset=68 + i32.store offset=164 local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $3 i32.const 0 i32.store local.get $3 - i32.const 9104 + i32.const 9136 i32.store local.get $0 i32.load offset=4 @@ -25335,9 +25951,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store @@ -25345,7 +25961,7 @@ local.get $1 i32.const 1 i32.sub - local.tee $2 + local.tee $7 i32.const 0 i32.lt_s if @@ -25353,58 +25969,58 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0119 - local.get $2 + block $folding-inner0118 + local.get $7 i32.eqz if local.get $5 i64.load i32.wrap_i64 i64.extend_i32_s - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 i32.store block $__inlined_func$~lib/util/number/itoa64 - local.get $8 + local.get $9 i64.eqz if global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 9408 + i32.const 9440 local.set $1 br $__inlined_func$~lib/util/number/itoa64 end i64.const 0 - local.get $8 + local.get $9 i64.sub - local.get $8 - local.get $8 + local.get $9 + local.get $9 i64.const 63 i64.shr_u i32.wrap_i64 local.tee $4 select - local.tee $8 + local.tee $9 i64.const 4294967295 i64.le_u if global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.wrap_i64 local.tee $3 local.tee $1 @@ -25468,51 +26084,51 @@ call $~lib/util/number/utoa32_dec_lut else global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i64.const 1000000000000000 i64.lt_u if (result i32) - local.get $8 + local.get $9 i64.const 1000000000000 i64.lt_u if (result i32) - local.get $8 + local.get $9 i64.const 100000000000 i64.ge_u i32.const 10 i32.add - local.get $8 + local.get $9 i64.const 10000000000 i64.ge_u i32.add else - local.get $8 + local.get $9 i64.const 100000000000000 i64.ge_u i32.const 13 i32.add - local.get $8 + local.get $9 i64.const 10000000000000 i64.ge_u i32.add end else - local.get $8 + local.get $9 i64.const 100000000000000000 i64.lt_u if (result i32) - local.get $8 + local.get $9 i64.const 10000000000000000 i64.ge_u i32.const 16 i32.add else - local.get $8 + local.get $9 i64.const -8446744073709551616 i64.ge_u i32.const 18 i32.add - local.get $8 + local.get $9 i64.const 1000000000000000000 i64.ge_u i32.add @@ -25528,7 +26144,7 @@ local.tee $1 i32.store local.get $1 - local.get $8 + local.get $9 local.get $0 call $~lib/util/number/utoa64_dec_lut end @@ -25543,11 +26159,11 @@ i32.add global.set $~lib/memory/__stack_pointer end - br $folding-inner0119 + br $folding-inner0118 end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.const 9100 + local.get $7 + i32.const 9132 i32.load i32.const 1 i32.shr_u @@ -25564,10 +26180,10 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0120 - local.get $2 + loop $for-loop|0119 local.get $6 - i32.gt_s + local.get $7 + i32.lt_s if local.get $1 local.get $0 @@ -25591,7 +26207,7 @@ i32.const 1 i32.shl i32.add - i32.const 9104 + i32.const 9136 local.get $4 i32.const 1 i32.shl @@ -25605,7 +26221,7 @@ i32.const 1 i32.add local.set $6 - br $for-loop|0120 + br $for-loop|0119 end end local.get $3 @@ -25615,7 +26231,7 @@ i32.shl i32.add local.get $5 - local.get $2 + local.get $7 i32.const 3 i32.shl i32.add @@ -25630,7 +26246,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0119 + br $folding-inner0118 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25652,16 +26268,16 @@ local.get $1 i32.store local.get $0 - i32.const 13472 + i32.const 13504 i32.store offset=8 local.get $1 - i32.const 13472 + i32.const 13504 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1081 + i32.const 1132 i32.const 3 call $~lib/builtins/abort unreachable @@ -25669,11 +26285,11 @@ global.get $~lib/memory/__stack_pointer i32.const 7 i32.const 2 - i32.const 27 - i32.const 13584 + i32.const 30 + i32.const 13616 call $~lib/rt/__newArray local.tee $1 - i32.store offset=44 + i32.store offset=140 local.get $1 call $~lib/array/Array<~lib/string/String|null>#toString local.set $0 @@ -25682,29 +26298,29 @@ local.get $0 i32.store local.get $1 - i32.const 13632 + i32.const 13664 i32.store offset=8 local.get $0 - i32.const 13632 + i32.const 13664 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1085 + i32.const 1136 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 4 i32.const 2 - i32.const 27 - i32.const 13744 + i32.const 30 + i32.const 13776 call $~lib/rt/__newArray local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=68 + i32.store offset=164 local.get $1 call $~lib/array/Array<~lib/string/String|null>#toString local.set $0 @@ -25713,16 +26329,16 @@ local.get $0 i32.store local.get $1 - i32.const 13792 + i32.const 13824 i32.store offset=8 local.get $0 - i32.const 13792 + i32.const 13824 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1086 + i32.const 1137 i32.const 3 call $~lib/builtins/abort unreachable @@ -25731,21 +26347,21 @@ local.tee $1 i32.const 2 i32.const 2 - i32.const 22 + i32.const 25 i32.const 0 call $~lib/rt/__newArray local.tee $0 - i32.store offset=40 + i32.store offset=136 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - i32.store offset=64 + i32.store offset=160 local.get $0 i32.const 0 i32.const 2 i32.const 2 i32.const 3 - i32.const 13824 + i32.const 13856 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 @@ -25753,43 +26369,43 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 13856 + i32.const 13888 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $1 local.get $0 - i32.store offset=64 + i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 i32.store local.get $1 - i32.const 9104 + i32.const 9136 i32.store local.get $0 i32.load offset=4 - local.set $2 + local.set $7 local.get $0 i32.load offset=12 local.set $0 i32.const 0 - local.set $7 + local.set $10 local.get $1 i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -25809,7 +26425,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $1 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end @@ -25817,7 +26433,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $7 i32.load local.tee $1 i32.store @@ -25826,7 +26442,7 @@ local.get $1 call $~lib/array/Array#toString else - i32.const 8816 + i32.const 8848 end local.set $1 global.get $~lib/memory/__stack_pointer @@ -25835,24 +26451,24 @@ global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - i32.const 8816 + i32.const 8848 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 i32.store offset=4 - i32.const 9100 + i32.const 9132 i32.load i32.const 1 i32.shr_u local.set $3 - loop $for-loop|076 + loop $for-loop|071 local.get $5 - local.get $7 + local.get $10 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $2 local.get $7 + local.get $10 i32.const 2 i32.shl i32.add @@ -25878,20 +26494,20 @@ if global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 9104 + i32.const 9136 call $~lib/string/String.__concat local.tee $1 i32.store offset=4 end - local.get $7 + local.get $10 i32.const 1 i32.add - local.set $7 - br $for-loop|076 + local.set $10 + br $for-loop|071 end end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $7 local.get $5 i32.const 2 i32.shl @@ -25928,16 +26544,16 @@ local.get $1 i32.store local.get $0 - i32.const 13888 + i32.const 13920 i32.store offset=8 local.get $1 - i32.const 13888 + i32.const 13920 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1089 + i32.const 1140 i32.const 3 call $~lib/builtins/abort unreachable @@ -25946,21 +26562,21 @@ local.tee $1 i32.const 2 i32.const 2 - i32.const 36 + i32.const 39 i32.const 0 call $~lib/rt/__newArray local.tee $0 - i32.store offset=40 + i32.store offset=136 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - i32.store offset=36 + i32.store offset=132 local.get $0 i32.const 0 i32.const 2 i32.const 0 i32.const 6 - i32.const 13936 + i32.const 13968 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 @@ -25968,43 +26584,43 @@ i32.const 2 i32.const 0 i32.const 6 - i32.const 13968 + i32.const 14000 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $1 local.get $0 - i32.store offset=36 + i32.store offset=132 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 i32.store local.get $1 - i32.const 9104 + i32.const 9136 i32.store local.get $0 i32.load offset=4 - local.set $2 + local.set $7 local.get $0 i32.load offset=12 local.set $0 i32.const 0 - local.set $7 + local.set $10 local.get $1 i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -26024,7 +26640,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $1 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end @@ -26032,7 +26648,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $7 i32.load local.tee $1 i32.store @@ -26041,7 +26657,7 @@ local.get $1 call $~lib/array/Array#toString else - i32.const 8816 + i32.const 8848 end local.set $1 global.get $~lib/memory/__stack_pointer @@ -26050,24 +26666,24 @@ global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array> end - i32.const 8816 + i32.const 8848 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 i32.store offset=4 - i32.const 9100 + i32.const 9132 i32.load i32.const 1 i32.shr_u local.set $3 - loop $for-loop|078 + loop $for-loop|073 local.get $5 - local.get $7 + local.get $10 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $2 local.get $7 + local.get $10 i32.const 2 i32.shl i32.add @@ -26093,20 +26709,20 @@ if global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 9104 + i32.const 9136 call $~lib/string/String.__concat local.tee $1 i32.store offset=4 end - local.get $7 + local.get $10 i32.const 1 i32.add - local.set $7 - br $for-loop|078 + local.set $10 + br $for-loop|073 end end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $7 local.get $5 i32.const 2 i32.shl @@ -26143,16 +26759,16 @@ local.get $1 i32.store local.get $0 - i32.const 13888 + i32.const 13920 i32.store offset=8 local.get $1 - i32.const 13888 + i32.const 13920 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1092 + i32.const 1143 i32.const 3 call $~lib/builtins/abort unreachable @@ -26161,34 +26777,34 @@ local.tee $0 i32.const 1 i32.const 2 - i32.const 38 + i32.const 41 i32.const 0 call $~lib/rt/__newArray local.tee $3 - i32.store offset=40 + i32.store offset=136 global.get $~lib/memory/__stack_pointer local.tee $1 local.get $3 i32.load offset=4 - i32.store offset=32 + i32.store offset=128 local.get $1 i32.const 1 i32.const 2 - i32.const 37 + i32.const 40 i32.const 0 call $~lib/rt/__newArray local.tee $1 - i32.store offset=28 + i32.store offset=124 global.get $~lib/memory/__stack_pointer local.get $1 i32.load offset=4 - i32.store offset=4 + i32.store offset=120 local.get $1 i32.const 0 i32.const 1 i32.const 2 i32.const 7 - i32.const 14000 + i32.const 14032 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $3 @@ -26197,38 +26813,38 @@ call $~lib/array/Array#__uset local.get $0 local.get $3 - i32.store offset=32 + i32.store offset=128 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 0 i32.store local.get $1 - i32.const 9104 + i32.const 9136 i32.store local.get $3 i32.load offset=4 - local.set $2 + local.set $7 local.get $3 i32.load offset=12 local.set $0 i32.const 0 - local.set $7 + local.set $10 local.get $1 i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer local.tee $1 i64.const 0 @@ -26248,7 +26864,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 local.set $1 br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> end @@ -26256,7 +26872,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $7 i32.load local.tee $1 i32.store @@ -26265,7 +26881,7 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#toString else - i32.const 8816 + i32.const 8848 end local.set $1 global.get $~lib/memory/__stack_pointer @@ -26274,24 +26890,24 @@ global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> end - i32.const 8816 + i32.const 8848 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 i32.store offset=4 - i32.const 9100 + i32.const 9132 i32.load i32.const 1 i32.shr_u local.set $3 - loop $for-loop|080 + loop $for-loop|076 local.get $5 - local.get $7 + local.get $10 i32.gt_s if global.get $~lib/memory/__stack_pointer - local.get $2 local.get $7 + local.get $10 i32.const 2 i32.shl i32.add @@ -26317,20 +26933,20 @@ if global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 9104 + i32.const 9136 call $~lib/string/String.__concat local.tee $1 i32.store offset=4 end - local.get $7 + local.get $10 i32.const 1 i32.add - local.set $7 - br $for-loop|080 + local.set $10 + br $for-loop|076 end end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $7 local.get $5 i32.const 2 i32.shl @@ -26367,16 +26983,16 @@ local.get $1 i32.store local.get $0 - i32.const 12592 + i32.const 12624 i32.store offset=8 local.get $1 - i32.const 12592 + i32.const 12624 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1552 - i32.const 1095 + i32.const 1146 i32.const 3 call $~lib/builtins/abort unreachable @@ -26385,21 +27001,21 @@ local.tee $1 i32.const 4 i32.const 2 - i32.const 22 + i32.const 25 i32.const 0 call $~lib/rt/__newArray local.tee $0 - i32.store offset=32 + i32.store offset=128 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - i32.store offset=36 + i32.store offset=132 local.get $0 i32.const 0 i32.const 1 i32.const 2 i32.const 3 - i32.const 14032 + i32.const 14064 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 @@ -26407,7 +27023,7 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 14064 + i32.const 14096 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 @@ -26415,7 +27031,7 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 14096 + i32.const 14128 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 @@ -26423,17 +27039,17 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 14128 + i32.const 14160 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $1 local.get $0 - i32.store offset=36 + i32.store offset=132 global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/array/Array<~lib/array/Array>#flat local.tee $1 - i32.store offset=32 + i32.store offset=128 local.get $1 i32.load offset=12 i32.const 10 @@ -26441,14 +27057,14 @@ if i32.const 0 i32.const 1552 - i32.const 1102 + i32.const 1153 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 local.set $0 - loop $for-loop|1124 + loop $for-loop|1123 local.get $0 i32.const 10 i32.lt_s @@ -26461,7 +27077,7 @@ if i32.const 0 i32.const 1552 - i32.const 1104 + i32.const 1155 i32.const 5 call $~lib/builtins/abort unreachable @@ -26470,61 +27086,61 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1124 + br $for-loop|1123 end end global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 4 i32.const 2 - i32.const 39 + i32.const 42 i32.const 0 call $~lib/rt/__newArray local.tee $4 - i32.store offset=64 + i32.store offset=160 global.get $~lib/memory/__stack_pointer local.get $4 i32.load offset=4 - i32.store offset=44 + i32.store offset=140 local.get $4 i32.const 0 i32.const 1 i32.const 2 - i32.const 27 - i32.const 14192 + i32.const 30 + i32.const 14224 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $4 i32.const 1 i32.const 3 i32.const 2 - i32.const 27 - i32.const 14288 + i32.const 30 + i32.const 14320 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $4 i32.const 2 i32.const 3 i32.const 2 - i32.const 27 - i32.const 14416 + i32.const 30 + i32.const 14448 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $4 i32.const 3 i32.const 1 i32.const 2 - i32.const 27 - i32.const 14480 + i32.const 30 + i32.const 14512 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $1 local.get $4 - i32.store offset=44 + i32.store offset=140 i32.const 0 local.set $0 i32.const 0 - local.set $7 + local.set $10 i32.const 0 local.set $2 global.get $~lib/memory/__stack_pointer @@ -26533,9 +27149,9 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s - br_if $folding-inner2 + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i64.const 0 i64.store @@ -26545,7 +27161,7 @@ local.get $4 i32.load offset=4 local.set $4 - loop $for-loop|0125 + loop $for-loop|0124 local.get $0 local.get $5 i32.lt_s @@ -26563,50 +27179,50 @@ else i32.const 0 end - local.get $7 + local.get $10 i32.add - local.set $7 + local.set $10 local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|0125 + br $for-loop|0124 end end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.const 2 i32.shl local.tee $1 i32.const 0 call $~lib/rt/itcms/__new - local.tee $9 + local.tee $7 i32.store global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 27 + i32.const 30 call $~lib/rt/itcms/__new - local.tee $10 + local.tee $8 i32.store offset=4 + local.get $8 local.get $10 - local.get $7 i32.store offset=12 - local.get $10 + local.get $8 local.get $1 i32.store offset=8 - local.get $10 - local.get $9 + local.get $8 + local.get $7 i32.store offset=4 - local.get $10 - local.get $9 + local.get $8 + local.get $7 i32.store - local.get $10 - local.get $9 + local.get $8 + local.get $7 i32.const 0 call $~lib/rt/itcms/__link i32.const 0 local.set $0 - loop $for-loop|1126 + loop $for-loop|1125 local.get $0 local.get $5 i32.lt_s @@ -26620,7 +27236,7 @@ local.tee $1 if local.get $2 - local.get $9 + local.get $7 i32.add local.get $1 i32.load offset=4 @@ -26637,18 +27253,18 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1126 + br $for-loop|1125 end end i32.const 0 local.set $0 loop $for-loop|2 local.get $0 - local.get $7 + local.get $10 i32.lt_s if - local.get $9 - local.get $9 + local.get $7 + local.get $7 local.get $0 i32.const 2 i32.shl @@ -26668,37 +27284,37 @@ i32.add global.set $~lib/memory/__stack_pointer local.get $3 - local.get $10 - i32.store offset=64 + local.get $8 + i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 2 - i32.const 27 - i32.const 14512 + i32.const 30 + i32.const 14544 call $~lib/rt/__newArray local.tee $4 - i32.store offset=52 - local.get $10 + i32.store offset=148 + local.get $8 i32.load offset=12 i32.const 8 i32.ne if i32.const 0 i32.const 1552 - i32.const 1110 + i32.const 1161 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 local.set $0 - loop $for-loop|2127 + loop $for-loop|2126 local.get $0 local.get $4 i32.load offset=12 i32.lt_s if - local.get $10 + local.get $8 local.get $0 call $~lib/array/Array#__get local.set $3 @@ -26719,7 +27335,7 @@ if i32.const 0 i32.const 1552 - i32.const 1112 + i32.const 1163 i32.const 5 call $~lib/builtins/abort unreachable @@ -26728,28 +27344,28 @@ i32.const 1 i32.add local.set $0 - br $for-loop|2127 + br $for-loop|2126 end end global.get $~lib/memory/__stack_pointer local.tee $1 i32.const 2 i32.const 2 - i32.const 22 + i32.const 25 i32.const 0 call $~lib/rt/__newArray local.tee $0 - i32.store offset=48 + i32.store offset=144 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - i32.store offset=60 + i32.store offset=156 local.get $0 i32.const 0 i32.const 0 i32.const 2 i32.const 3 - i32.const 14576 + i32.const 14608 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $0 @@ -26757,12 +27373,12 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 14608 + i32.const 14640 call $~lib/rt/__newArray call $~lib/array/Array#__uset local.get $1 local.get $0 - i32.store offset=60 + i32.store offset=156 local.get $0 call $~lib/array/Array<~lib/array/Array>#flat local.set $1 @@ -26774,25 +27390,29 @@ if i32.const 0 i32.const 1552 - i32.const 1116 + i32.const 1167 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 global.set $std/array/arr - i32.const 31492 + i32.const 0 + global.set $std/array/inputStabArr + i32.const 0 + global.set $std/array/outputStabArr + i32.const 31548 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 i32.gt_s if - loop $while-continue|067 + loop $while-continue|0113 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|067 + br $while-continue|0113 end end end @@ -26817,13 +27437,13 @@ i32.add global.set $~lib/rt/itcms/threshold global.get $~lib/memory/__stack_pointer - i32.const 76 + i32.const 172 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26837,11 +27457,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -26931,11 +27551,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27025,11 +27645,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27063,11 +27683,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27128,11 +27748,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27168,11 +27788,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27242,11 +27862,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27345,11 +27965,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27461,11 +28081,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27572,11 +28192,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27630,11 +28250,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27683,11 +28303,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27765,11 +28385,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27837,6 +28457,45 @@ global.set $~lib/memory/__stack_pointer local.get $2 ) + (func $std/array/Dim#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 15164 + i32.lt_s + if + i32.const 31568 + i32.const 31616 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 8 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) (func $~lib/array/Array#sort@varargs (param $0 i32) (local $1 i32) global.get $~lib/memory/__stack_pointer @@ -27844,11 +28503,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27888,11 +28547,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27935,11 +28594,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -27988,11 +28647,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28041,11 +28700,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28059,7 +28718,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 29 + i32.const 32 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -28140,11 +28799,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28203,7 +28862,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 return end i32.const 0 @@ -28249,11 +28908,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28269,7 +28928,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 9408 + i32.const 9440 return end global.get $~lib/memory/__stack_pointer @@ -28362,11 +29021,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28382,7 +29041,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 9408 + i32.const 9440 return end global.get $~lib/memory/__stack_pointer @@ -28463,7 +29122,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -28480,7 +29139,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 8816 + i32.const 8848 return end block $folding-inner0 @@ -28495,7 +29154,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -28510,7 +29169,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11344 + i32.const 11376 local.set $0 br $__inlined_func$~lib/util/number/dtoa end @@ -28528,7 +29187,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11376 + i32.const 11408 local.set $0 br $__inlined_func$~lib/util/number/dtoa end @@ -28536,8 +29195,8 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - i32.const 11408 - i32.const 11456 + i32.const 11440 + i32.const 11488 local.get $3 f64.const 0 f64.lt @@ -28545,7 +29204,7 @@ local.set $0 br $__inlined_func$~lib/util/number/dtoa end - i32.const 11488 + i32.const 11520 local.get $3 call $~lib/util/number/dtoa_core i32.const 1 @@ -28558,7 +29217,7 @@ local.tee $0 i32.store local.get $0 - i32.const 11488 + i32.const 11520 local.get $1 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer @@ -28570,7 +29229,7 @@ end global.get $~lib/memory/__stack_pointer local.get $4 - i32.const 11308 + i32.const 11340 i32.load i32.const 1 i32.shr_u @@ -28614,7 +29273,7 @@ i32.const 1 i32.shl i32.add - i32.const 11312 + i32.const 11344 local.get $5 i32.const 1 i32.shl @@ -28669,8 +29328,8 @@ local.get $0 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28688,11 +29347,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28815,11 +29474,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28846,7 +29505,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -28868,7 +29527,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -28879,7 +29538,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 40 + i32.const 43 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -28890,7 +29549,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -28985,8 +29644,8 @@ local.get $0 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -28999,11 +29658,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29026,11 +29685,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29061,11 +29720,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29139,11 +29798,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29212,11 +29871,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29267,11 +29926,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29382,11 +30041,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29479,11 +30138,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29575,11 +30234,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29668,11 +30327,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29700,7 +30359,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29715,7 +30374,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29780,8 +30439,8 @@ local.get $2 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29793,11 +30452,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29837,11 +30496,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29890,11 +30549,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -29961,7 +30620,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -29976,7 +30635,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30046,8 +30705,8 @@ local.get $2 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30063,11 +30722,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30127,11 +30786,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30201,11 +30860,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30230,7 +30889,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30256,7 +30915,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30347,8 +31006,8 @@ local.get $2 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30365,7 +31024,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30389,7 +31048,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30492,8 +31151,8 @@ local.get $3 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30508,11 +31167,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30577,11 +31236,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30610,7 +31269,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30625,7 +31284,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -30639,10 +31298,10 @@ end unreachable end - i32.const 9104 + i32.const 9136 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 9104 + i32.const 9136 i32.store end local.get $0 @@ -30658,8 +31317,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30671,11 +31330,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30684,7 +31343,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - i32.const 14640 + i32.const 14672 i32.const 1104 i32.const 465 i32.const 7 @@ -30697,11 +31356,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30727,7 +31386,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -30749,7 +31408,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -30760,7 +31419,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 41 + i32.const 44 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -30771,7 +31430,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -30864,8 +31523,8 @@ local.get $0 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30877,11 +31536,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30912,11 +31571,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -30988,11 +31647,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31059,11 +31718,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31109,11 +31768,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31156,11 +31815,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31253,11 +31912,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31349,11 +32008,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31442,11 +32101,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31474,7 +32133,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -31489,7 +32148,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -31549,8 +32208,8 @@ local.get $3 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31565,11 +32224,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31698,11 +32357,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31749,11 +32408,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31818,7 +32477,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -31833,7 +32492,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -31901,8 +32560,8 @@ local.get $2 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31917,11 +32576,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -31978,11 +32637,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32052,11 +32711,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32104,7 +32763,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32130,7 +32789,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32217,8 +32876,8 @@ local.get $2 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32235,7 +32894,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32259,7 +32918,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32354,8 +33013,8 @@ local.get $3 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32370,11 +33029,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32438,7 +33097,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32453,7 +33112,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32467,10 +33126,10 @@ end unreachable end - i32.const 14704 + i32.const 14736 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 14704 + i32.const 14736 i32.store end local.get $0 @@ -32490,8 +33149,8 @@ local.get $0 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32505,7 +33164,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32520,7 +33179,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32534,10 +33193,10 @@ end unreachable end - i32.const 9104 + i32.const 9136 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 9104 + i32.const 9136 i32.store end local.get $0 @@ -32553,8 +33212,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32566,11 +33225,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32593,7 +33252,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32615,7 +33274,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32626,7 +33285,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 42 + i32.const 45 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -32648,8 +33307,8 @@ local.get $0 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32665,7 +33324,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32681,7 +33340,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32748,8 +33407,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32765,7 +33424,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32780,7 +33439,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32848,8 +33507,8 @@ local.get $2 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32863,7 +33522,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32875,7 +33534,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -32933,8 +33592,8 @@ local.get $0 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -32948,11 +33607,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33068,11 +33727,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33116,11 +33775,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33163,7 +33822,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33192,7 +33851,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33276,8 +33935,8 @@ local.get $2 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33290,11 +33949,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33328,7 +33987,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33343,7 +34002,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33373,7 +34032,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.const 2 - i32.const 29 + i32.const 32 i32.const 0 call $~lib/rt/__newArray local.tee $2 @@ -33462,8 +34121,8 @@ local.get $2 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33479,7 +34138,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33491,7 +34150,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33538,8 +34197,8 @@ local.get $3 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33555,7 +34214,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33570,7 +34229,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33626,8 +34285,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33644,7 +34303,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33659,7 +34318,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33669,7 +34328,7 @@ local.get $2 i32.const 0 i32.const 2 - i32.const 29 + i32.const 32 i32.const 0 call $~lib/rt/__newArray local.tee $2 @@ -33731,8 +34390,8 @@ local.get $2 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33749,7 +34408,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33761,7 +34420,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33818,8 +34477,8 @@ local.get $3 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33835,7 +34494,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33851,7 +34510,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -33917,8 +34576,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33932,11 +34591,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -33996,7 +34655,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34022,7 +34681,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34085,7 +34744,7 @@ select local.tee $3 i32.const 2 - i32.const 29 + i32.const 32 i32.const 0 call $~lib/rt/__newArray local.tee $2 @@ -34142,8 +34801,8 @@ local.get $2 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -34160,7 +34819,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34184,7 +34843,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34232,7 +34891,7 @@ select local.tee $2 i32.const 2 - i32.const 29 + i32.const 32 i32.const 0 call $~lib/rt/__newArray local.tee $3 @@ -34287,8 +34946,8 @@ local.get $3 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -34304,7 +34963,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34316,7 +34975,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34378,8 +35037,8 @@ local.get $0 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -34393,7 +35052,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34408,7 +35067,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34422,10 +35081,10 @@ end unreachable end - i32.const 14736 + i32.const 14768 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 14736 + i32.const 14768 i32.store end local.get $0 @@ -34433,7 +35092,7 @@ local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/sort/SORT<~lib/array/Array> + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -34445,8 +35104,8 @@ local.get $0 return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -34460,7 +35119,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34475,7 +35134,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -34489,10 +35148,10 @@ end unreachable end - i32.const 9104 + i32.const 9136 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 9104 + i32.const 9136 i32.store end local.get $0 @@ -34508,8 +35167,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -34521,11 +35180,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 15108 + i32.const 15164 i32.lt_s if - i32.const 31520 i32.const 31568 + i32.const 31616 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index 120224e33c..8237fa5b27 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -899,7 +899,7 @@ function createRandomOrderedArray(size: i32): Array { function createReverseOrderedNestedArray(size: i32): Array> { var arr = new Array>(size); - for (let i: i32 = 0; i < size; i++) { + for (let i = 0; i < size; i++) { let inner = new Array(1); inner[0] = size - 1 - i; arr[i] = inner; @@ -911,9 +911,14 @@ class Proxy { constructor(public x: T) {} } -function createReverseOrderedElementsArray(size: i32): Proxy[] { +class Dim { + height: i32; + width: i32; +} + +function createReverseOrderedElementsArray(size: i32): Array> { var arr = new Array>(size); - for (let i: i32 = 0; i < size; i++) { + for (let i = 0; i < size; i++) { arr[i] = new Proxy(size - 1 - i); } return arr; @@ -921,6 +926,36 @@ function createReverseOrderedElementsArray(size: i32): Proxy[] { const charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-,.+/\\[]{}()<>*&$%^@#!?"; +let inputStabArr: Array = [ + { height: 100, width: 80 }, + { height: 90, width: 90 }, + { height: 70, width: 95 }, + { height: 100, width: 100 }, + { height: 80, width: 110 }, + { height: 110, width: 115 }, + { height: 100, width: 120 }, + { height: 70, width: 125 }, + { height: 70, width: 130 }, + { height: 100, width: 135 }, + { height: 75, width: 140 }, + { height: 70, width: 140 } +]; + +let outputStabArr: Array = [ + { height: 70, width: 95 }, + { height: 70, width: 125 }, + { height: 70, width: 130 }, + { height: 70, width: 140 }, + { height: 75, width: 140 }, + { height: 80, width: 110 }, + { height: 90, width: 90 }, + { height: 100, width: 80 }, + { height: 100, width: 100 }, + { height: 100, width: 120 }, + { height: 100, width: 135 }, + { height: 110, width: 115 } +]; + function createRandomString(len: i32): string { var result = ""; @@ -930,14 +965,28 @@ function createRandomString(len: i32): string { return result; } -function createRandomStringArray(size: i32): string[] { +function createRandomStringArray(size: i32): Array { var arr = new Array(size); - for (let i: i32 = 0; i < size; i++) { + for (let i = 0; i < size; i++) { arr[i] = createRandomString((NativeMath.random() * 32)); } return arr; } +function assertStableSortedForComplexObjects(): void { + let sorted = inputStabArr.slice(0).sort((a, b) => a.height - b.height); + let check = true; + for (let i = 0, len = inputStabArr.length; i < len; i++) { + let input = sorted[i]; + let target = outputStabArr[i]; + if (input.height != target.height || input.width != target.width) { + check = false; + break; + } + } + assert(check); +} + function assertSorted(arr: Array, comparator: (a: T, b: T) => i32 = COMPARATOR()): void { assert(isSorted(arr.sort(comparator), comparator)); } @@ -1007,6 +1056,8 @@ function assertSortedDefault(arr: Array): void { assert(isArraysEqual(reversed10000, expected4, 4)); assertSortedDefault(randomized512); + + assertStableSortedForComplexObjects(); } // Test sorting with custom comparator @@ -1126,6 +1177,8 @@ export class ArrayStr extends Array {} // Unleak globals arr = changetype>(0); +inputStabArr = changetype>(0); +outputStabArr = changetype>(0); __stack_pointer = __heap_base; __collect(); diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index a0a4d00597..c82bc992b4 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -7,9 +7,9 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (type $none_=>_f64 (func (result f64))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) @@ -55,6 +55,8 @@ (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) (global $std/array/charset i32 (i32.const 6288)) + (global $std/array/inputStabArr (mut i32) (i32.const 0)) + (global $std/array/outputStabArr (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) @@ -64,13 +66,13 @@ (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) - (global $std/array/ArrayU32 i32 (i32.const 40)) - (global $std/array/ArrayU8 i32 (i32.const 41)) - (global $std/array/ArrayStr i32 (i32.const 42)) - (global $~lib/rt/__rtti_base i32 (i32.const 13728)) - (global $~lib/memory/__data_end i32 (i32.const 14084)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 30468)) - (global $~lib/memory/__heap_base i32 (i32.const 30468)) + (global $std/array/ArrayU32 i32 (i32.const 43)) + (global $std/array/ArrayU8 i32 (i32.const 44)) + (global $std/array/ArrayStr i32 (i32.const 45)) + (global $~lib/rt/__rtti_base i32 (i32.const 13760)) + (global $~lib/memory/__data_end i32 (i32.const 14140)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 30524)) + (global $~lib/memory/__heap_base i32 (i32.const 30524)) (global $~started (mut i32) (i32.const 0)) (memory $0 1) (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") @@ -229,126 +231,127 @@ (data (i32.const 6220) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00\00\00\00\00") (data (i32.const 6268) "\bc\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\ac\00\00\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\000\001\002\003\004\005\006\007\008\009\00_\00-\00,\00.\00+\00/\00\\\00[\00]\00{\00}\00(\00)\00<\00>\00*\00&\00$\00%\00^\00@\00#\00!\00?\00") (data (i32.const 6460) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00@\00\00\80\bf\00\00\00\00") - (data (i32.const 6492) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6492) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 6524) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\80\bf\00\00\00\00\00\00\00@") (data (i32.const 6556) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\80?\00\00\c0\7f\00\00\80\ff\00\00\80?\00\00\00\00\00\00\80\bf\00\00\00\c0\00\00\80\7f\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 6620) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\80\ff\00\00\00\c0\00\00\80\bf\00\00\00\00\00\00\80?\00\00\80?\00\00\80\7f\00\00\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 6684) "\\\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\05\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6780) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6780) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 6812) "\\\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\05\00\00\00\00\00\f0?\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 6908) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6956) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6956) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 6988) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 7036) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7084) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7084) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 7116) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00") (data (i32.const 7164) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 7196) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 7228) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") (data (i32.const 7260) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 7308) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7356) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7356) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 7388) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 7420) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 7452) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7484) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7516) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7548) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7580) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7452) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7484) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7516) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7548) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7580) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 7612) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7644) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7676) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7708) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") - (data (i32.const 7740) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00a\00\00\00\00\00\00\00\00\00") - (data (i32.const 7772) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7804) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\f0\1d\00\00\10\1e\00\00\f0\1d\00\000\1e\00\00P\1e\00\00p\1e\00\00\00\00\00\00") - (data (i32.const 7852) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00p\1e\00\00\f0\1d\00\00\f0\1d\00\000\1e\00\00\10\1e\00\00P\1e\00\00\00\00\00\00") - (data (i32.const 7900) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7932) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7964) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7996) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") - (data (i32.const 8028) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") - (data (i32.const 8060) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 8092) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00\00\00\00\00\00\00\00\00") - (data (i32.const 8140) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 8172) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") - (data (i32.const 8300) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") - (data (i32.const 8364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 8396) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 8796) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 9852) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") - (data (i32.const 9948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00\00\00") - (data (i32.const 9980) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 10012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10044) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80\00\00\00\00") - (data (i32.const 10076) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00_\00_\00\00\00\00\00\00\00\00\00") - (data (i32.const 10108) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10188) "L\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10268) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00,\00 \00\00\00\00\00\00\00\00\00") - (data (i32.const 10300) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") - (data (i32.const 10332) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") - (data (i32.const 10364) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10412) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10464) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10520) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11868) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11900) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11932) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 11964) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12012) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00,\002\00\00\00\00\00\00\00") - (data (i32.const 12044) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12092) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\01\ff\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12124) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00") - (data (i32.const 12156) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\01\00\ff\ff\00\00\00\00\00\00\00\00") - (data (i32.const 12188) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12236) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12284) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12364) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12428) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00\00\00\00\00\00\00\00\00") - (data (i32.const 12540) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00p\1e\00\00\f0\1d\00\00\f0\1d\00\000\1e\00\00\10\1e\00\00P\1e\00\00\00\00\00\00") - (data (i32.const 12588) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00\00\00") - (data (i32.const 12636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12700) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\000-\00\00p1\00\00\00\00\00\00\901\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00") - (data (i32.const 12780) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 12812) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 12844) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12892) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\02\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12924) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\03\04\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12956) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12988) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13020) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 13052) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00") - (data (i32.const 13084) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") - (data (i32.const 13116) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00o\00n\00e\00\00\00\00\00\00\00") - (data (i32.const 13148) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00P3\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13180) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00t\00w\00o\00\00\00\00\00\00\00") - (data (i32.const 13212) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00h\00r\00e\00e\00\00\00") - (data (i32.const 13244) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\903\00\00\00\00\00\00\b03\00\00") - (data (i32.const 13276) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00o\00u\00r\00\00\00\00\00") - (data (i32.const 13308) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00i\00v\00e\00\00\00\00\00") - (data (i32.const 13340) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00s\00i\00x\00\00\00\00\00\00\00") - (data (i32.const 13372) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\f03\00\00\104\00\0004\00\00") - (data (i32.const 13404) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00e\00v\00e\00n\00\00\00") - (data (i32.const 13436) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00p4\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13468) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00P3\00\00\903\00\00\00\00\00\00\b03\00\00\f03\00\00\104\00\0004\00\00p4\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13532) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7644) "\1c\00\00\00\00\00\00\00\00\00\00\00\1d\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7676) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7708) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7740) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") + (data (i32.const 7772) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00a\00\00\00\00\00\00\00\00\00") + (data (i32.const 7804) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7836) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\10\1e\00\000\1e\00\00\10\1e\00\00P\1e\00\00p\1e\00\00\90\1e\00\00\00\00\00\00") + (data (i32.const 7884) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\90\1e\00\00\10\1e\00\00\10\1e\00\00P\1e\00\000\1e\00\00p\1e\00\00\00\00\00\00") + (data (i32.const 7932) "\1c\00\00\00\00\00\00\00\00\00\00\00\1f\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7964) "\1c\00\00\00\00\00\00\00\00\00\00\00!\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7996) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 8028) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e\00\00\00\00\00") + (data (i32.const 8060) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e\00\00\00") + (data (i32.const 8092) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 8124) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00\00\00\00\00\00\00\00\00") + (data (i32.const 8172) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data (i32.const 8204) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \00m\00u\00s\00t\00 \00b\00e\00 \00b\00e\00t\00w\00e\00e\00n\00 \002\00 \00a\00n\00d\00 \003\006\00\00\00\00\00\00\00\00\00") + (data (i32.const 8332) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00u\00t\00i\00l\00/\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 8396) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 8428) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 8828) "\1c\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\04\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\000\00a\000\00b\000\00c\000\00d\000\00e\000\00f\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\001\00a\001\00b\001\00c\001\00d\001\00e\001\00f\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\002\00a\002\00b\002\00c\002\00d\002\00e\002\00f\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\003\00a\003\00b\003\00c\003\00d\003\00e\003\00f\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\004\00a\004\00b\004\00c\004\00d\004\00e\004\00f\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\005\00a\005\00b\005\00c\005\00d\005\00e\005\00f\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\006\00a\006\00b\006\00c\006\00d\006\00e\006\00f\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\007\00a\007\00b\007\00c\007\00d\007\00e\007\00f\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\008\00a\008\00b\008\00c\008\00d\008\00e\008\00f\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\009\00a\009\00b\009\00c\009\00d\009\00e\009\00f\00a\000\00a\001\00a\002\00a\003\00a\004\00a\005\00a\006\00a\007\00a\008\00a\009\00a\00a\00a\00b\00a\00c\00a\00d\00a\00e\00a\00f\00b\000\00b\001\00b\002\00b\003\00b\004\00b\005\00b\006\00b\007\00b\008\00b\009\00b\00a\00b\00b\00b\00c\00b\00d\00b\00e\00b\00f\00c\000\00c\001\00c\002\00c\003\00c\004\00c\005\00c\006\00c\007\00c\008\00c\009\00c\00a\00c\00b\00c\00c\00c\00d\00c\00e\00c\00f\00d\000\00d\001\00d\002\00d\003\00d\004\00d\005\00d\006\00d\007\00d\008\00d\009\00d\00a\00d\00b\00d\00c\00d\00d\00d\00e\00d\00f\00e\000\00e\001\00e\002\00e\003\00e\004\00e\005\00e\006\00e\007\00e\008\00e\009\00e\00a\00e\00b\00e\00c\00e\00d\00e\00e\00e\00f\00f\000\00f\001\00f\002\00f\003\00f\004\00f\005\00f\006\00f\007\00f\008\00f\009\00f\00a\00f\00b\00f\00c\00f\00d\00f\00e\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 9884) "\\\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00\00\00\00\00") + (data (i32.const 9980) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00\00\00") + (data (i32.const 10012) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 10044) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10076) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80\00\00\00\00") + (data (i32.const 10108) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00_\00_\00\00\00\00\00\00\00\00\00") + (data (i32.const 10140) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\00-\002\001\004\007\004\008\003\006\004\008\00_\00_\00-\002\001\004\007\004\008\003\006\004\008\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10220) "L\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f8\7f\00\00\00\00\00\00\f0\ff\00\00\00\00\00\00\f0\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10300) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00,\00 \00\00\00\00\00\00\00\00\00") + (data (i32.const 10332) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000\00\00\00\00\00\00\00") + (data (i32.const 10364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N\00\00\00\00\00\00\00") + (data (i32.const 10396) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10444) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10496) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10552) "\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\00\00\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00,\00[\00o\00b\00j\00e\00c\00t\00 \00O\00b\00j\00e\00c\00t\00]\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11900) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11932) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11964) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 11996) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12044) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00,\002\00\00\00\00\00\00\00") + (data (i32.const 12076) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12124) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\01\ff\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12156) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00") + (data (i32.const 12188) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\01\00\ff\ff\00\00\00\00\00\00\00\00") + (data (i32.const 12220) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12268) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12316) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\001\00,\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00,\000\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12396) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\ff\ff\ff\ff\ff\ff\ff\ff@Eu\c3*\9d\fb\ff\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\7f\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12460) "l\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00T\00\00\00-\001\00,\00-\001\002\003\004\005\006\007\008\009\000\001\002\003\004\005\006\00,\000\00,\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00\00\00\00\00\00\00\00\00") + (data (i32.const 12572) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\90\1e\00\00\10\1e\00\00\10\1e\00\00P\1e\00\000\1e\00\00p\1e\00\00\00\00\00\00") + (data (i32.const 12620) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,\00\00\00") + (data (i32.const 12668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12700) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12732) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00P-\00\00\901\00\00\00\00\00\00\b01\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00") + (data (i32.const 12812) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") + (data (i32.const 12844) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00") + (data (i32.const 12876) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12924) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\02\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12956) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\03\04\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12988) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13020) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13052) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 13084) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00") + (data (i32.const 13116) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") + (data (i32.const 13148) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00o\00n\00e\00\00\00\00\00\00\00") + (data (i32.const 13180) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00p3\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13212) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00t\00w\00o\00\00\00\00\00\00\00") + (data (i32.const 13244) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00h\00r\00e\00e\00\00\00") + (data (i32.const 13276) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\b03\00\00\00\00\00\00\d03\00\00") + (data (i32.const 13308) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00o\00u\00r\00\00\00\00\00") + (data (i32.const 13340) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00i\00v\00e\00\00\00\00\00") + (data (i32.const 13372) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00s\00i\00x\00\00\00\00\00\00\00") + (data (i32.const 13404) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\104\00\0004\00\00P4\00\00") + (data (i32.const 13436) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00e\00v\00e\00n\00\00\00") + (data (i32.const 13468) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\904\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13500) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00p3\00\00\b03\00\00\00\00\00\00\d03\00\00\104\00\0004\00\00P4\00\00\904\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 13564) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13596) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e\00\00\00\00\00") - (data (i32.const 13660) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13692) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13728) ",\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00 \00\00\00\00\00\00\00A\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\01\00\00\07\00\00\00B\00\00\00\06\00\00\00\02A\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") - (table $0 59 funcref) - (elem $0 (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|4 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|39 $start:std/array~anonymous|40 $start:std/array~anonymous|41 $start:std/array~anonymous|42 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|1 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|1) + (data (i32.const 13596) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13628) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00I\00l\00l\00e\00g\00a\00l\00 \00g\00e\00n\00e\00r\00i\00c\00 \00t\00y\00p\00e\00\00\00\00\00") + (data (i32.const 13692) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13724) "\1c\00\00\00\00\00\00\00\00\00\00\00!\00\00\00\08\00\00\00;\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13760) "/\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\t\00\00\00\00\00\00 \00\00\00\00\00\00\00A\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00\00\00\00\00\00\00\00\00\00\00\00\00B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02A\00\00\00\00\00\00\02\01\00\00\07\00\00\00B\00\00\00\06\00\00\00\02A\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (table $0 60 funcref) + (elem $0 (i32.const 1) $start:std/array~anonymous|0 $start:std/array~anonymous|1 $start:std/array~anonymous|2 $start:std/array~anonymous|3 $start:std/array~anonymous|4 $start:std/array~anonymous|5 $start:std/array~anonymous|6 $start:std/array~anonymous|7 $start:std/array~anonymous|8 $start:std/array~anonymous|9 $start:std/array~anonymous|10 $start:std/array~anonymous|11 $start:std/array~anonymous|12 $start:std/array~anonymous|13 $start:std/array~anonymous|14 $start:std/array~anonymous|15 $start:std/array~anonymous|16 $start:std/array~anonymous|17 $start:std/array~anonymous|18 $start:std/array~anonymous|19 $start:std/array~anonymous|20 $start:std/array~anonymous|21 $start:std/array~anonymous|22 $start:std/array~anonymous|23 $start:std/array~anonymous|24 $start:std/array~anonymous|25 $start:std/array~anonymous|26 $start:std/array~anonymous|27 $start:std/array~anonymous|28 $start:std/array~anonymous|29 $start:std/array~anonymous|30 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|34 $start:std/array~anonymous|35 $start:std/array~anonymous|36 $start:std/array~anonymous|37 $start:std/array~anonymous|38 $start:std/array~anonymous|39 $start:std/array~anonymous|40 $start:std/array~anonymous|41 $start:std/array~anonymous|42 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|1 $std/array/assertStableSortedForComplexObjects~anonymous|0 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|1) (export "ArrayU32" (global $std/array/ArrayU32)) (export "ArrayU8" (global $std/array/ArrayU8)) (export "ArrayStr" (global $std/array/ArrayStr)) @@ -6660,6 +6663,32 @@ unreachable end ) + (func $std/array/Dim#set:height (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $std/array/Dim#set:width (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) @@ -10709,111 +10738,14 @@ end i32.const 1 ) - (func $start:std/array~anonymous|43 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.sub - ) - (func $start:std/array~anonymous|45 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $start:std/array~anonymous|46 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.sub - ) - (func $~lib/array/Array<~lib/array/Array>#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array<~lib/array/Array>#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array<~lib/array/Array>#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array<~lib/array/Array>#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array<~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - i32.const 1 - drop - local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 115 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array<~lib/array/Array>#set:length_ - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/array/Array>#__uset - ) - (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) + (func $std/array/assertStableSortedForComplexObjects~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 0 - call $~lib/array/Array#__get + i32.load local.get $1 - i32.const 0 - call $~lib/array/Array#__get + i32.load i32.sub ) - (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -11022,7 +10954,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -11180,7 +11112,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -11349,7 +11281,7 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort<~lib/array/Array> + call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -11414,7 +11346,7 @@ i32.const 0 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight<~lib/array/Array> + call $~lib/util/sort/extendRunRight local.set $12 local.get $12 i32.const 1 @@ -11440,7 +11372,7 @@ local.get $12 local.get $13 local.get $2 - call $~lib/util/sort/insertionSort<~lib/array/Array> + call $~lib/util/sort/insertionSort end i32.const 0 local.set $14 @@ -11461,7 +11393,7 @@ local.get $5 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight<~lib/array/Array> + call $~lib/util/sort/extendRunRight local.set $3 local.get $3 local.get $5 @@ -11491,7 +11423,7 @@ local.get $3 local.get $16 local.get $2 - call $~lib/util/sort/insertionSort<~lib/array/Array> + call $~lib/util/sort/insertionSort end i32.const 0 local.get $11 @@ -11533,7 +11465,7 @@ local.get $12 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns<~lib/array/Array> + call $~lib/util/sort/mergeRuns local.get $20 local.set $15 local.get $8 @@ -11607,7 +11539,7 @@ local.get $11 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns<~lib/array/Array> + call $~lib/util/sort/mergeRuns end local.get $4 i32.const 1 @@ -11625,20 +11557,40 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/sort/SORT<~lib/array/Array> + call $~lib/util/sort/SORT local.get $0 ) - (func $~lib/array/Array<~lib/array/Array>#get:length (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array>#set:buffer (param $0 i32) (param $1 i32) + (func $start:std/array~anonymous|43 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.sub + ) + (func $start:std/array~anonymous|45 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $start:std/array~anonymous|46 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.sub + ) + (func $~lib/array/Array<~lib/array/Array>#set:buffer (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store @@ -11647,27 +11599,22 @@ i32.const 0 call $~lib/rt/itcms/__link ) - (func $~lib/array/Array>#set:dataStart (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array>#set:dataStart (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store offset=4 ) - (func $~lib/array/Array>#set:byteLength (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array>#set:byteLength (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store offset=8 ) - (func $~lib/array/Array>#set:length_ (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/array/Array>#set:length_ (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store offset=12 ) - (func $std/array/Proxy#set:x (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 i32.load offset=4 local.get $1 @@ -11683,7 +11630,7 @@ i32.const 1 call $~lib/rt/itcms/__link ) - (func $~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -11711,21 +11658,23 @@ local.get $1 i32.const 1 i32.add - call $~lib/array/Array>#set:length_ + call $~lib/array/Array<~lib/array/Array>#set:length_ end local.get $0 local.get $1 local.get $2 - call $~lib/array/Array>#__uset + call $~lib/array/Array<~lib/array/Array>#__uset ) - (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.load + i32.const 0 + call $~lib/array/Array#__get local.get $1 - i32.load + i32.const 0 + call $~lib/array/Array#__get i32.sub ) - (func $~lib/util/sort/insertionSort> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -11934,7 +11883,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -12092,7 +12041,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12261,7 +12210,7 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort> + call $~lib/util/sort/insertionSort<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -12326,7 +12275,7 @@ i32.const 0 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight> + call $~lib/util/sort/extendRunRight<~lib/array/Array> local.set $12 local.get $12 i32.const 1 @@ -12352,7 +12301,7 @@ local.get $12 local.get $13 local.get $2 - call $~lib/util/sort/insertionSort> + call $~lib/util/sort/insertionSort<~lib/array/Array> end i32.const 0 local.set $14 @@ -12373,7 +12322,7 @@ local.get $5 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight> + call $~lib/util/sort/extendRunRight<~lib/array/Array> local.set $3 local.get $3 local.get $5 @@ -12403,7 +12352,7 @@ local.get $3 local.get $16 local.get $2 - call $~lib/util/sort/insertionSort> + call $~lib/util/sort/insertionSort<~lib/array/Array> end i32.const 0 local.get $11 @@ -12445,7 +12394,7 @@ local.get $12 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns> + call $~lib/util/sort/mergeRuns<~lib/array/Array> local.get $20 local.set $15 local.get $8 @@ -12519,7 +12468,7 @@ local.get $11 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns> + call $~lib/util/sort/mergeRuns<~lib/array/Array> end local.get $4 i32.const 1 @@ -12537,20 +12486,107 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/sort/SORT> + call $~lib/util/sort/SORT<~lib/array/Array> local.get $0 ) - (func $~lib/array/Array>#get:length (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/util/sort/insertionSort<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/array/Array>#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array>#set:dataStart (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array>#set:byteLength (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array>#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $std/array/Proxy#set:x (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 115 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array>#set:length_ + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array>#__uset + ) + (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.sub + ) + (func $~lib/util/sort/insertionSort> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -12759,7 +12795,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -12917,7 +12953,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13086,7 +13122,7 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort<~lib/string/String|null> + call $~lib/util/sort/insertionSort> global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -13151,7 +13187,7 @@ i32.const 0 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight<~lib/string/String|null> + call $~lib/util/sort/extendRunRight> local.set $12 local.get $12 i32.const 1 @@ -13177,7 +13213,7 @@ local.get $12 local.get $13 local.get $2 - call $~lib/util/sort/insertionSort<~lib/string/String|null> + call $~lib/util/sort/insertionSort> end i32.const 0 local.set $14 @@ -13198,7 +13234,7 @@ local.get $5 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight<~lib/string/String|null> + call $~lib/util/sort/extendRunRight> local.set $3 local.get $3 local.get $5 @@ -13228,7 +13264,7 @@ local.get $3 local.get $16 local.get $2 - call $~lib/util/sort/insertionSort<~lib/string/String|null> + call $~lib/util/sort/insertionSort> end i32.const 0 local.get $11 @@ -13270,7 +13306,7 @@ local.get $12 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns<~lib/string/String|null> + call $~lib/util/sort/mergeRuns> local.get $20 local.set $15 local.get $8 @@ -13344,7 +13380,7 @@ local.get $11 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns<~lib/string/String|null> + call $~lib/util/sort/mergeRuns> end local.get $4 i32.const 1 @@ -13362,379 +13398,20 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String|null>#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/sort/SORT<~lib/string/String|null> - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String|null>#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/string/String#get:length (param $0 i32) (result i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $5 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $4 - i32.const 4 - i32.ge_u - if (result i32) - local.get $5 - i32.const 7 - i32.and - local.get $6 - i32.const 7 - i32.and - i32.or - i32.eqz - else - i32.const 0 - end - if - block $do-break|0 - loop $do-continue|0 - local.get $5 - i64.load - local.get $6 - i64.load - i64.ne - if - br $do-break|0 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $6 - i32.const 8 - i32.add - local.set $6 - local.get $4 - i32.const 4 - i32.sub - local.set $4 - local.get $4 - i32.const 4 - i32.ge_u - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - local.set $7 - local.get $7 - if - local.get $5 - i32.load16_u - local.set $8 - local.get $6 - i32.load16_u - local.set $9 - local.get $8 - local.get $9 - i32.ne - if - local.get $8 - local.get $9 - i32.sub - return - end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|1 - end - end - i32.const 0 - ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - i32.eq - if (result i32) - i32.const 1 - else - local.get $0 - i32.const 0 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $1 - call $~lib/string/String#get:length - local.set $3 - local.get $2 - local.get $3 - i32.or - i32.eqz - if - i32.const 0 - return - end - local.get $2 - i32.eqz - if - i32.const -1 - return - end - local.get $3 - i32.eqz - if - i32.const 1 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.set $4 - local.get $4 - if (result i32) - local.get $4 - else - local.get $2 - local.get $3 - i32.sub - end - ) - (func $std/array/assertSorted<~lib/string/String|null>@varargs (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 7920 - br $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 - end - local.tee $1 - i32.store - end - local.get $0 - local.get $1 - call $std/array/assertSorted<~lib/string/String|null> - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end - if - i32.const 0 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - ) - (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - ) - (func $~lib/array/Array<~lib/string/String>#set:buffer (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.const 0 - call $~lib/rt/itcms/__link - ) - (func $~lib/array/Array<~lib/string/String>#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=4 - ) - (func $~lib/array/Array<~lib/string/String>#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array<~lib/string/String>#set:length_ (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/string/String#concat - ) - (func $~lib/array/Array<~lib/string/String>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - i32.const 1 - drop + call $~lib/util/sort/SORT> local.get $0 - local.get $2 - i32.const 1 - call $~lib/rt/itcms/__link ) - (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + (func $~lib/array/Array>#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 320 - i32.const 80 - i32.const 115 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array<~lib/string/String>#set:length_ - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__uset ) - (func $~lib/util/sort/insertionSort<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/insertionSort<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -13943,7 +13620,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/mergeRuns<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) @@ -14101,7 +13778,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/SORT<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/SORT<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -14270,7 +13947,7 @@ i32.sub i32.const 0 local.get $2 - call $~lib/util/sort/insertionSort<~lib/string/String> + call $~lib/util/sort/insertionSort<~lib/string/String|null> global.get $~lib/memory/__stack_pointer i32.const 12 i32.add @@ -14335,7 +14012,7 @@ i32.const 0 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight<~lib/string/String> + call $~lib/util/sort/extendRunRight<~lib/string/String|null> local.set $12 local.get $12 i32.const 1 @@ -14361,7 +14038,7 @@ local.get $12 local.get $13 local.get $2 - call $~lib/util/sort/insertionSort<~lib/string/String> + call $~lib/util/sort/insertionSort<~lib/string/String|null> end i32.const 0 local.set $14 @@ -14382,7 +14059,7 @@ local.get $5 local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight<~lib/string/String> + call $~lib/util/sort/extendRunRight<~lib/string/String|null> local.set $3 local.get $3 local.get $5 @@ -14412,7 +14089,7 @@ local.get $3 local.get $16 local.get $2 - call $~lib/util/sort/insertionSort<~lib/string/String> + call $~lib/util/sort/insertionSort<~lib/string/String|null> end i32.const 0 local.get $11 @@ -14454,7 +14131,7 @@ local.get $12 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns<~lib/string/String> + call $~lib/util/sort/mergeRuns<~lib/string/String|null> local.get $20 local.set $15 local.get $8 @@ -14528,7 +14205,7 @@ local.get $11 local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns<~lib/string/String> + call $~lib/util/sort/mergeRuns<~lib/string/String|null> end local.get $4 i32.const 1 @@ -14546,20 +14223,135 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#sort (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String|null>#sort (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $0 i32.load offset=12 local.get $1 - call $~lib/util/sort/SORT<~lib/string/String> + call $~lib/util/sort/SORT<~lib/string/String|null> local.get $0 ) - (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String|null>#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#get:length (param $0 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $5 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 + i32.const 4 + i32.ge_u + if (result i32) + local.get $5 + i32.const 7 + i32.and + local.get $6 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-continue|0 + local.get $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $6 + i32.const 8 + i32.add + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + local.set $7 + local.get $7 + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if + local.get $5 + i32.load16_u + local.set $8 + local.get $6 + i32.load16_u + local.set $9 + local.get $8 + local.get $9 + i32.ne + if + local.get $8 + local.get $9 + i32.sub + return + end + local.get $5 + i32.const 2 + i32.add + local.set $5 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + ) + (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14634,7 +14426,7 @@ i32.sub end ) - (func $std/array/assertSorted<~lib/string/String>@varargs (param $0 i32) (param $1 i32) + (func $std/array/assertSorted<~lib/string/String|null>@varargs (param $0 i32) (param $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -14654,7 +14446,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - block $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 (result i32) + block $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 (result i32) i32.const 0 drop i32.const 0 @@ -14662,178 +14454,1247 @@ i32.const 1 drop i32.const 7952 - br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 + br $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 end local.tee $1 i32.store end local.get $0 local.get $1 - call $std/array/assertSorted<~lib/string/String> + call $std/array/assertSorted<~lib/string/String|null> global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) local.get $0 - i32.load offset=4 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length local.set $2 + local.get $2 + local.get $1 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + return + end local.get $0 - i32.load offset=12 - local.set $3 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + ) + (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + ) + (func $~lib/array/Array<~lib/string/String>#set:buffer (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/string/String>#set:dataStart (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array<~lib/string/String>#set:byteLength (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array<~lib/string/String>#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/string/String#concat + ) + (func $~lib/array/Array<~lib/string/String>#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store i32.const 1 drop + local.get $0 local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinBooleanArray - return + i32.const 1 + call $~lib/rt/itcms/__link ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 local.get $0 - i32.const 100000 - i32.lt_u + i32.load offset=12 + i32.ge_u if - local.get $0 - i32.const 100 - i32.lt_u + local.get $1 + i32.const 0 + i32.lt_s if - i32.const 1 - local.get $0 - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 - local.get $0 - i32.const 10000 - i32.ge_u - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - return + i32.const 320 + i32.const 80 + i32.const 115 + i32.const 22 + call $~lib/builtins/abort + unreachable end - unreachable - else local.get $0 - i32.const 10000000 - i32.lt_u - if - i32.const 6 - local.get $0 - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.add - local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - return - end - unreachable + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array<~lib/string/String>#set:length_ end - unreachable + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/string/String>#__uset ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/util/sort/insertionSort<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i64) + (local $8 i32) + (local $9 i32) (local $10 i32) (local $11 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - local.set $3 - local.get $3 + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 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 - i32.const 8396 + global.get $~lib/memory/__stack_pointer + local.get $0 local.get $6 i32.const 2 i32.shl i32.add - i64.load32_u - local.set $8 - i32.const 8396 - local.get $7 + i32.load + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $6 i32.const 2 i32.shl i32.add - i64.load32_u - local.set $9 - local.get $2 - i32.const 4 + i32.load offset=4 + local.tee $9 + i32.store offset=4 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 + i32.const 1 i32.sub - local.set $2 + local.set $12 + block $while-break|1 + loop $while-continue|1 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store + local.get $8 + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|1 + end + br $while-continue|1 + end + end + end local.get $0 - local.get $2 - i32.const 1 + local.get $12 + i32.const 2 i32.shl i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 - end - end - local.get $1 - i32.const 100 - i32.ge_u - if - local.get $1 - i32.const 100 - i32.div_u - local.set $3 - local.get $1 - i32.const 100 - i32.rem_u - local.set $10 - local.get $3 - local.set $1 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8396 - local.get $10 + local.get $11 + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/mergeRuns<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $8 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.gt_s + local.set $9 + local.get $9 + if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $4 + local.get $8 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $9 + loop $for-loop|2 + local.get $9 + local.get $3 + i32.le_s + local.set $10 + local.get $10 + if + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $11 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $12 + i32.store offset=4 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + local.set $13 + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + local.get $12 + local.get $13 + select + i32.store + local.get $7 + local.get $13 + i32.sub + local.set $7 + local.get $6 + local.get $13 + i32.const 1 + i32.xor + i32.add + local.set $6 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/SORT<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 128 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $4 + i32.store offset=4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + local.set $5 + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $4 + local.get $5 + select + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $4 + i32.store offset=4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + local.set $5 + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store offset=4 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $4 + i32.store offset=4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + local.set $3 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.set $5 + i32.const 31 + local.get $5 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $6 + local.get $6 + i32.const 2 + i32.shl + local.set $7 + local.get $7 + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $8 + local.get $8 + local.get $7 + i32.add + local.set $9 + i32.const 0 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 + if + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 + local.get $0 + i32.const 0 + local.get $11 + local.get $2 + call $~lib/util/sort/extendRunRight<~lib/string/String> + local.set $12 + local.get $12 + i32.const 1 + i32.add + local.set $13 + local.get $13 + i32.const 32 + i32.lt_s + if + local.get $11 + local.tee $4 + i32.const 32 + i32.const 1 + i32.sub + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.set $12 + local.get $0 + i32.const 0 + local.get $12 + local.get $13 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/string/String> + end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 + loop $while-continue|2 + local.get $12 + local.get $11 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $12 + i32.const 1 + i32.add + local.set $5 + local.get $0 + local.get $5 + local.get $11 + local.get $2 + call $~lib/util/sort/extendRunRight<~lib/string/String> + local.set $3 + local.get $3 + local.get $5 + i32.sub + i32.const 1 + i32.add + local.set $16 + local.get $16 + i32.const 32 + i32.lt_s + if + local.get $11 + local.tee $17 + local.get $5 + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $18 + local.get $17 + local.get $18 + i32.lt_s + select + local.set $3 + local.get $0 + local.get $5 + local.get $3 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort<~lib/string/String> + end + i32.const 0 + local.get $11 + local.get $15 + local.get $5 + local.get $3 + call $~lib/util/sort/nodePower + local.set $17 + local.get $14 + local.set $18 + loop $for-loop|3 + local.get $18 + local.get $17 + i32.gt_u + local.set $19 + local.get $19 + if + local.get $8 + local.get $18 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $20 + local.get $20 + i32.const -1 + i32.ne + if + local.get $0 + local.get $20 + local.get $9 + local.get $18 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $12 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns<~lib/string/String> + local.get $20 + local.set $15 + local.get $8 + local.get $18 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $18 + i32.const 1 + i32.sub + local.set $18 + br $for-loop|3 + end + end + local.get $8 + local.get $17 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $9 + local.get $17 + i32.const 2 + i32.shl + i32.add + local.get $12 + i32.store + local.get $5 + local.set $15 + local.get $3 + local.set $12 + local.get $17 + local.set $14 + br $while-continue|2 + end + end + local.get $14 + local.set $4 + loop $for-loop|4 + local.get $4 + i32.const 0 + i32.ne + local.set $18 + local.get $18 + if + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $19 + local.get $19 + i32.const -1 + i32.ne + if + local.get $0 + local.get $19 + local.get $9 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $11 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns<~lib/string/String> + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|4 + end + end + local.get $10 + call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#sort (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + local.get $1 + call $~lib/util/sort/SORT<~lib/string/String> + local.get $0 + ) + (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + i32.eq + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 0 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + return + end + local.get $0 + call $~lib/string/String#get:length + local.set $2 + local.get $1 + call $~lib/string/String#get:length + local.set $3 + local.get $2 + local.get $3 + i32.or + i32.eqz + if + i32.const 0 + return + end + local.get $2 + i32.eqz + if + i32.const -1 + return + end + local.get $3 + i32.eqz + if + i32.const 1 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 0 + local.get $2 + local.tee $4 + local.get $3 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $4 + local.get $4 + if (result i32) + local.get $4 + else + local.get $2 + local.get $3 + i32.sub + end + ) + (func $std/array/assertSorted<~lib/string/String>@varargs (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 7984 + br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 + end + local.tee $1 + i32.store + end + local.get $0 + local.get $1 + call $std/array/assertSorted<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + i32.const 1 + drop + local.get $2 + local.get $3 + local.get $1 + call $~lib/util/string/joinBooleanArray + return + ) + (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) + local.get $0 + i32.const 100000 + i32.lt_u + if + local.get $0 + i32.const 100 + i32.lt_u + if + i32.const 1 + local.get $0 + i32.const 10 + i32.ge_u + i32.add + return + else + i32.const 3 + local.get $0 + i32.const 10000 + i32.ge_u + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + return + end + unreachable + else + local.get $0 + i32.const 10000000 + i32.lt_u + if + i32.const 6 + local.get $0 + i32.const 1000000 + i32.ge_u + i32.add + return + else + i32.const 8 + local.get $0 + i32.const 1000000000 + i32.ge_u + i32.add + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + return + end + unreachable + end + unreachable + ) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $3 + local.get $3 + 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 + i32.const 8428 + local.get $6 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $8 + i32.const 8428 + 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 $while-continue|0 + end + end + local.get $1 + i32.const 100 + i32.ge_u + if + local.get $1 + i32.const 100 + i32.div_u + local.set $3 + local.get $1 + i32.const 100 + i32.rem_u + local.set $10 + local.get $3 + local.set $1 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8428 + local.get $10 i32.const 2 i32.shl i32.add @@ -14855,7 +15716,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 8396 + i32.const 8428 local.get $1 i32.const 2 i32.shl @@ -14905,7 +15766,7 @@ i32.const 1 i32.shl i32.add - i32.const 8816 + i32.const 8848 local.get $1 i32.wrap_i64 i32.const 255 @@ -14927,7 +15788,7 @@ i32.and if local.get $0 - i32.const 8816 + i32.const 8848 local.get $1 i32.wrap_i64 i32.const 6 @@ -15050,7 +15911,7 @@ i32.const 1 i32.shl i32.add - i32.const 9872 + i32.const 9904 local.get $1 local.get $6 i64.and @@ -15086,7 +15947,7 @@ i32.const 1 i32.shl i32.add - i32.const 9872 + i32.const 9904 local.get $1 local.get $6 local.get $4 @@ -15547,7 +16408,7 @@ local.set $22 local.get $18 local.set $21 - i32.const 11392 + i32.const 11424 local.get $13 i32.const 2 i32.shl @@ -15688,7 +16549,7 @@ i32.add global.set $~lib/util/number/_K local.get $10 - i32.const 11392 + i32.const 11424 i32.const 0 local.get $13 i32.sub @@ -16269,14 +17130,14 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 10520 + i32.const 10552 local.get $14 i32.const 3 i32.shl i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 11216 + i32.const 11248 local.get $14 i32.const 1 i32.shl @@ -16653,7 +17514,7 @@ return ) (func $std/array/Ref#toString (param $0 i32) (result i32) - i32.const 11632 + i32.const 11664 ) (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -17013,14 +17874,14 @@ i32.const 100 i32.rem_u local.set $11 - i32.const 8396 + i32.const 8428 local.get $10 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 8396 + i32.const 8428 local.get $11 i32.const 2 i32.shl @@ -17042,14 +17903,14 @@ i64.shl i64.or i64.store - i32.const 8396 + i32.const 8428 local.get $8 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 8396 + i32.const 8428 local.get $9 i32.const 2 i32.shl @@ -18459,7 +19320,7 @@ i32.const 0 i32.eqz drop - i32.const 13616 + i32.const 13648 i32.const 80 i32.const 465 i32.const 7 @@ -20213,7 +21074,7 @@ i32.const 0 i32.eqz drop - i32.const 13616 + i32.const 13648 i32.const 80 i32.const 465 i32.const 7 @@ -20597,7 +21458,7 @@ i32.const 0 i32.eqz drop - i32.const 13616 + i32.const 13648 i32.const 80 i32.const 465 i32.const 7 @@ -21231,13 +22092,27 @@ local.get $0 call $~lib/rt/itcms/__visit end + global.get $std/array/inputStabArr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array/outputStabArr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end i32.const 320 local.get $0 call $~lib/rt/itcms/__visit i32.const 32 local.get $0 call $~lib/rt/itcms/__visit - i32.const 13616 + i32.const 13648 local.get $0 call $~lib/rt/itcms/__visit i32.const 1152 @@ -21249,10 +22124,10 @@ i32.const 128 local.get $0 call $~lib/rt/itcms/__visit - i32.const 8816 + i32.const 8848 local.get $0 call $~lib/rt/itcms/__visit - i32.const 9872 + i32.const 9904 local.get $0 call $~lib/rt/itcms/__visit ) @@ -21487,6 +22362,56 @@ local.get $1 call $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#__visit ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit (param $0 i32) (param $1 i32) local.get $0 i32.load offset=4 @@ -21531,6 +22456,17 @@ local.get $1 call $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit ) + (func $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>#__visit + ) (func $~lib/array/Array<~lib/array/Array>#__visit (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -22045,133 +22981,148 @@ block $std/array/Proxy block $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32> block $~lib/array/Array<~lib/array/Array> - block $~lib/function/Function<%28u32%2Cu32%29=>i32> - block $~lib/function/Function<%28i32%2Ci32%29=>i32> - block $~lib/function/Function<%28f64%2Cf64%29=>i32> - block $~lib/function/Function<%28f32%2Cf32%29=>i32> - block $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool> - block $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool> - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/typedarray/Uint8Array - block $std/array/Ref - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer + block $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32> + block $~lib/function/Function<%28u32%2Cu32%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/function/Function<%28f64%2Cf64%29=>i32> + block $~lib/function/Function<%28f32%2Cf32%29=>i32> + block $~lib/array/Array + block $std/array/Dim + block $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool> + block $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/typedarray/Uint8Array + block $std/array/Ref + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $std/array/Ref $~lib/typedarray/Uint8Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32> $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32> $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool> $std/array/Dim $~lib/array/Array $~lib/function/Function<%28f32%2Cf32%29=>i32> $~lib/function/Function<%28f64%2Cf64%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28u32%2Cu32%29=>i32> $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32> $~lib/array/Array<~lib/array/Array> $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32> $std/array/Proxy $~lib/array/Array> $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32> $~lib/array/Array<~lib/string/String|null> $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32> $~lib/array/Array<~lib/string/String> $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32> $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array<~lib/array/Array> $~lib/array/Array<~lib/array/Array> $~lib/array/Array<~lib/array/Array<~lib/array/Array>> $~lib/array/Array<~lib/array/Array<~lib/string/String|null>> $std/array/ArrayU32 $std/array/ArrayU8 $std/array/ArrayStr $~lib/function/Function<%28u8%2Cu8%29=>i32> $invalid + end + return + end + return + end local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $std/array/Ref $~lib/typedarray/Uint8Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32> $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32> $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32> $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool> $~lib/function/Function<%28f32%2Cf32%29=>i32> $~lib/function/Function<%28f64%2Cf64%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28u32%2Cu32%29=>i32> $~lib/array/Array<~lib/array/Array> $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32> $std/array/Proxy $~lib/array/Array> $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32> $~lib/array/Array<~lib/string/String|null> $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32> $~lib/array/Array<~lib/string/String> $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32> $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array<~lib/array/Array> $~lib/array/Array<~lib/array/Array> $~lib/array/Array<~lib/array/Array<~lib/array/Array>> $~lib/array/Array<~lib/array/Array<~lib/string/String|null>> $std/array/ArrayU32 $std/array/ArrayU8 $std/array/ArrayStr $~lib/function/Function<%28u8%2Cu8%29=>i32> $invalid + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return end + local.get $0 + local.get $1 + call $~lib/array/Array~visit return end return end local.get $0 local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit + call $~lib/typedarray/Uint8Array~visit return end local.get $0 local.get $1 - call $~lib/array/Array~visit + call $~lib/array/Array~visit return end + local.get $0 + local.get $1 + call $~lib/array/Array~visit return end local.get $0 local.get $1 - call $~lib/typedarray/Uint8Array~visit + call $~lib/array/Array~visit return end local.get $0 local.get $1 - call $~lib/array/Array~visit + call $~lib/array/Array~visit return end local.get $0 local.get $1 - call $~lib/array/Array~visit + call $~lib/array/Array~visit return end local.get $0 local.get $1 - call $~lib/array/Array~visit + call $~lib/array/Array~visit return end local.get $0 local.get $1 - call $~lib/array/Array~visit + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>~visit return end local.get $0 local.get $1 - call $~lib/array/Array~visit + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>~visit return end local.get $0 local.get $1 - call $~lib/array/Array~visit + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>~visit return end local.get $0 local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>~visit + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>~visit return end local.get $0 local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>~visit + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>~visit return end local.get $0 local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>~visit + call $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>~visit return end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>~visit return end local.get $0 local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/array/Array%29=>i32>~visit + call $~lib/array/Array~visit return end local.get $0 local.get $1 - call $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>~visit + call $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit return end local.get $0 local.get $1 - call $~lib/function/Function<%28f32%2Cf32%29=>i32>~visit + call $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit return end local.get $0 local.get $1 - call $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit return end local.get $0 local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + call $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit return end local.get $0 local.get $1 - call $~lib/function/Function<%28u32%2Cu32%29=>i32>~visit + call $~lib/function/Function<%28std/array/Dim%2Cstd/array/Dim%29=>i32>~visit return end local.get $0 @@ -22301,8 +23252,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 30496 i32.const 30544 + i32.const 30592 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -22333,7 +23284,7 @@ if i32.const 0 i32.const 528 - i32.const 942 + i32.const 991 i32.const 3 call $~lib/builtins/abort unreachable @@ -22380,6 +23331,349 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/array/assertStableSortedForComplexObjects + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/array/inputStabArr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#slice + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 7472 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#sort + local.tee $0 + i32.store offset=12 + i32.const 1 + local.set $1 + i32.const 0 + local.set $2 + global.get $std/array/inputStabArr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length + local.set $3 + block $for-break0 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $4 + local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.tee $5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/array/outputStabArr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $2 + call $~lib/array/Array#__get + local.tee $6 + i32.store offset=20 + local.get $5 + i32.load + local.get $6 + i32.load + i32.ne + if (result i32) + i32.const 1 + else + local.get $5 + i32.load offset=4 + local.get $6 + i32.load offset=4 + i32.ne + end + if + i32.const 0 + local.set $1 + br $for-break0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + end + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 987 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $~lib/util/sort/extendRunRight<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) @@ -22696,7 +23990,7 @@ if i32.const 0 i32.const 528 - i32.const 942 + i32.const 991 i32.const 3 call $~lib/builtins/abort unreachable @@ -23080,7 +24374,7 @@ if i32.const 0 i32.const 528 - i32.const 942 + i32.const 991 i32.const 3 call $~lib/builtins/abort unreachable @@ -23406,7 +24700,7 @@ if i32.const 0 i32.const 528 - i32.const 942 + i32.const 991 i32.const 3 call $~lib/builtins/abort unreachable @@ -23533,7 +24827,7 @@ i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 7792 + i32.const 7824 local.tee $1 i32.store i32.const 0 @@ -23963,7 +25257,7 @@ if i32.const 0 i32.const 528 - i32.const 942 + i32.const 991 i32.const 3 call $~lib/builtins/abort unreachable @@ -24000,7 +25294,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $9 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -24024,7 +25318,7 @@ local.get $4 call $std/array/Ref#toString else - i32.const 7792 + i32.const 7824 end local.set $9 global.get $~lib/memory/__stack_pointer @@ -24035,7 +25329,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 7792 + i32.const 7824 local.tee $5 i32.store offset=4 local.get $2 @@ -24153,7 +25447,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $9 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -24177,7 +25471,7 @@ local.get $4 call $std/array/Ref#toString else - i32.const 7792 + i32.const 7824 end local.set $9 global.get $~lib/memory/__stack_pointer @@ -24188,7 +25482,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 7792 + i32.const 7824 local.tee $5 i32.store offset=4 local.get $2 @@ -24290,7 +25584,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8080 + i32.const 8112 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -24315,7 +25609,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8080 + i32.const 8112 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -24340,7 +25634,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8080 + i32.const 8112 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -24365,7 +25659,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8080 + i32.const 8112 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -24390,7 +25684,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8080 + i32.const 8112 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -24415,7 +25709,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8080 + i32.const 8112 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -24456,7 +25750,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $9 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -24480,7 +25774,7 @@ local.get $4 call $~lib/array/Array#toString else - i32.const 7792 + i32.const 7824 end local.set $9 global.get $~lib/memory/__stack_pointer @@ -24491,7 +25785,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 7792 + i32.const 7824 local.tee $5 i32.store offset=4 local.get $2 @@ -24593,7 +25887,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8080 + i32.const 8112 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -24618,7 +25912,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8080 + i32.const 8112 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -24659,7 +25953,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $9 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -24683,7 +25977,7 @@ local.get $4 call $~lib/array/Array#toString else - i32.const 7792 + i32.const 7824 end local.set $9 global.get $~lib/memory/__stack_pointer @@ -24694,7 +25988,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 7792 + i32.const 7824 local.tee $5 i32.store offset=4 local.get $2 @@ -24796,7 +26090,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8080 + i32.const 8112 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -24821,7 +26115,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8080 + i32.const 8112 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -24862,7 +26156,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $9 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -24886,7 +26180,7 @@ local.get $4 call $~lib/array/Array#toString else - i32.const 7792 + i32.const 7824 end local.set $9 global.get $~lib/memory/__stack_pointer @@ -24897,7 +26191,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 7792 + i32.const 7824 local.tee $5 i32.store offset=4 local.get $2 @@ -24999,7 +26293,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8080 + i32.const 8112 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -25040,7 +26334,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $9 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -25064,7 +26358,7 @@ local.get $4 call $~lib/array/Array<~lib/array/Array>#toString else - i32.const 7792 + i32.const 7824 end local.set $9 global.get $~lib/memory/__stack_pointer @@ -25075,7 +26369,7 @@ return end global.get $~lib/memory/__stack_pointer - i32.const 7792 + i32.const 7824 local.tee $5 i32.store offset=4 local.get $2 @@ -25177,7 +26471,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8080 + i32.const 8112 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -25210,8 +26504,32 @@ (local $15 i32) (local $16 i32) (local $17 i32) - global.get $~lib/memory/__stack_pointer - i32.const 76 + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i32) + (local $30 i32) + (local $31 i32) + (local $32 i32) + (local $33 i32) + (local $34 i32) + (local $35 i32) + (local $36 i32) + (local $37 i32) + (local $38 i32) + (local $39 i32) + (local $40 i32) + (local $41 i32) + global.get $~lib/memory/__stack_pointer + i32.const 172 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -25243,8 +26561,44 @@ i64.const 0 i64.store offset=64 global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=72 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=80 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=88 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=96 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=104 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=112 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=120 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=128 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=136 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=144 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=152 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=160 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=72 + i32.store offset=168 i32.const 0 i32.const 0 i32.eq @@ -25293,11 +26647,11 @@ i32.const 0 i32.const 0 call $std/array/Ref#constructor - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array.isArray i32.eqz i32.eqz @@ -25312,11 +26666,11 @@ i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#constructor - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> i32.eqz i32.eqz @@ -25341,11 +26695,11 @@ unreachable end i32.const 640 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array.isArray<~lib/string/String> i32.eqz i32.eqz @@ -25358,11 +26712,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array.isArray<~lib/array/Array> i32.eqz if @@ -25393,11 +26747,11 @@ i32.const 6 i32.const 704 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25421,11 +26775,11 @@ i32.const 6 i32.const 736 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25449,11 +26803,11 @@ i32.const 6 i32.const 768 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25477,11 +26831,11 @@ i32.const 6 i32.const 800 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25505,11 +26859,11 @@ i32.const 6 i32.const 832 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25541,11 +26895,11 @@ i32.const 7 i32.const 912 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25569,11 +26923,11 @@ i32.const 7 i32.const 960 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25597,11 +26951,11 @@ i32.const 7 i32.const 1008 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25625,11 +26979,11 @@ i32.const 7 i32.const 1056 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25653,11 +27007,11 @@ i32.const 7 i32.const 1104 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -25670,11 +27024,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -25688,11 +27042,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -25706,20 +27060,20 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 42 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -25734,11 +27088,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 1 i32.eq @@ -25752,11 +27106,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -25770,11 +27124,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop local.set $2 local.get $2 @@ -25790,11 +27144,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -25808,11 +27162,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -25826,20 +27180,20 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 1 i32.eq @@ -25853,11 +27207,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -25871,11 +27225,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -25890,20 +27244,20 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 44 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -25917,11 +27271,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -25935,11 +27289,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -25954,11 +27308,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -25973,20 +27327,20 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 45 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 3 i32.eq @@ -26000,11 +27354,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -26018,11 +27372,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -26037,11 +27391,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -26056,11 +27410,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -26191,21 +27545,21 @@ i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 local.get $2 call $~lib/array/Array#concat local.tee $0 i32.store offset=16 global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -26219,11 +27573,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 3 i32.eq @@ -26255,19 +27609,19 @@ i32.const 3 i32.const 1248 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#concat drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -26332,21 +27686,21 @@ drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 local.get $2 call $~lib/array/Array#concat local.tee $0 i32.store offset=16 global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -26495,11 +27849,11 @@ global.get $~lib/memory/__stack_pointer local.get $1 global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#concat local.tee $0 i32.store offset=16 @@ -26542,21 +27896,21 @@ i32.const 3 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5 i32.const 2 i32.const 3 i32.const 1360 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26581,21 +27935,21 @@ i32.const 3 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5 i32.const 2 i32.const 3 i32.const 1456 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26620,21 +27974,21 @@ i32.const 2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5 i32.const 2 i32.const 3 i32.const 1552 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26659,21 +28013,21 @@ i32.const 2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5 i32.const 2 i32.const 3 i32.const 1648 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26698,21 +28052,21 @@ i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5 i32.const 2 i32.const 3 i32.const 1744 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26737,21 +28091,21 @@ i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5 i32.const 2 i32.const 3 i32.const 1840 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26776,21 +28130,21 @@ i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5 i32.const 2 i32.const 3 i32.const 1936 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26815,21 +28169,21 @@ i32.const -2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5 i32.const 2 i32.const 3 i32.const 2032 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26854,21 +28208,21 @@ i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5 i32.const 2 i32.const 3 i32.const 2128 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26893,21 +28247,21 @@ i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5 i32.const 2 i32.const 3 i32.const 2224 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26932,21 +28286,21 @@ i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5 i32.const 2 i32.const 3 i32.const 2320 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26971,21 +28325,21 @@ i32.const -3 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5 i32.const 2 i32.const 3 i32.const 2416 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -26998,20 +28352,20 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 42 call $~lib/array/Array#unshift drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 4 i32.eq @@ -27025,11 +28379,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -27043,11 +28397,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -27062,11 +28416,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -27081,11 +28435,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -27100,11 +28454,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -27119,20 +28473,20 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 41 call $~lib/array/Array#unshift drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 5 i32.eq @@ -27146,11 +28500,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -27164,11 +28518,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#__get i32.const 41 @@ -27183,11 +28537,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 call $~lib/array/Array#__get i32.const 42 @@ -27202,11 +28556,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 call $~lib/array/Array#__get i32.const 43 @@ -27221,11 +28575,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 3 call $~lib/array/Array#__get i32.const 44 @@ -27240,11 +28594,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 4 call $~lib/array/Array#__get i32.const 45 @@ -27259,11 +28613,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#shift global.set $std/array/i global.get $std/array/i @@ -27279,11 +28633,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 4 i32.eq @@ -27297,11 +28651,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -27315,11 +28669,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -27334,11 +28688,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -27353,11 +28707,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -27372,11 +28726,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -27391,11 +28745,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop global.set $std/array/i global.get $std/array/i @@ -27411,11 +28765,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 3 i32.eq @@ -27429,11 +28783,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -27447,11 +28801,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -27466,11 +28820,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -27485,11 +28839,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -27524,11 +28878,11 @@ i32.const 3 i32.const 2512 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -27553,11 +28907,11 @@ i32.const 3 i32.const 2544 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -27582,11 +28936,11 @@ i32.const 3 i32.const 2576 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -27631,11 +28985,11 @@ i32.const 3 i32.const 2624 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -27660,11 +29014,11 @@ i32.const 3 i32.const 2656 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -27689,11 +29043,11 @@ i32.const 3 i32.const 2688 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -27709,11 +29063,11 @@ i32.const -1 i32.const -3 call $~lib/array/Array#slice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -27730,11 +29084,11 @@ i32.const 10 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#slice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -27748,19 +29102,19 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#reverse drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 3 i32.eq @@ -27774,11 +29128,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -27792,11 +29146,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#__get i32.const 44 @@ -27811,11 +29165,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -27830,11 +29184,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 call $~lib/array/Array#__get i32.const 42 @@ -27849,29 +29203,29 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 44 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 44 i32.const 0 call $~lib/array/Array#indexOf @@ -27889,11 +29243,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 42 i32.const 0 call $~lib/array/Array#indexOf @@ -27911,11 +29265,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 45 i32.const 0 call $~lib/array/Array#indexOf @@ -27933,11 +29287,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 i32.const 100 call $~lib/array/Array#indexOf @@ -27955,11 +29309,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 i32.const -100 call $~lib/array/Array#indexOf @@ -27977,11 +29331,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 i32.const -2 call $~lib/array/Array#indexOf @@ -27999,11 +29353,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 i32.const -4 call $~lib/array/Array#indexOf @@ -28021,11 +29375,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 i32.const 0 call $~lib/array/Array#indexOf @@ -28043,11 +29397,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 i32.const 1 call $~lib/array/Array#indexOf @@ -28065,11 +29419,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 i32.const 2 call $~lib/array/Array#indexOf @@ -28091,11 +29445,11 @@ i32.const 9 i32.const 2720 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 f32.const nan:0x400000 i32.const 0 call $~lib/array/Array#indexOf @@ -28115,11 +29469,11 @@ i32.const 10 i32.const 2752 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 f64.const nan:0x8000000000000 i32.const 0 call $~lib/array/Array#indexOf @@ -28237,11 +29591,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 44 i32.const 0 call $~lib/array/Array#includes @@ -28259,11 +29613,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 42 i32.const 0 call $~lib/array/Array#includes @@ -28281,11 +29635,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 45 i32.const 0 call $~lib/array/Array#includes @@ -28303,11 +29657,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 i32.const 100 call $~lib/array/Array#includes @@ -28325,11 +29679,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 i32.const -100 call $~lib/array/Array#includes @@ -28347,11 +29701,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 i32.const -2 call $~lib/array/Array#includes @@ -28369,11 +29723,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 i32.const -4 call $~lib/array/Array#includes @@ -28391,11 +29745,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 i32.const 0 call $~lib/array/Array#includes @@ -28413,11 +29767,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 i32.const 1 call $~lib/array/Array#includes @@ -28435,11 +29789,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 43 i32.const 2 call $~lib/array/Array#includes @@ -28461,11 +29815,11 @@ i32.const 9 i32.const 2832 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 f32.const nan:0x400000 i32.const 0 call $~lib/array/Array#includes @@ -28483,11 +29837,11 @@ i32.const 10 i32.const 2864 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 f64.const nan:0x8000000000000 i32.const 0 call $~lib/array/Array#includes @@ -28501,21 +29855,21 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 i32.const 1 call $~lib/array/Array#splice drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 4 i32.eq @@ -28529,11 +29883,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $std/array/internalCapacity i32.const 8 i32.eq @@ -28547,11 +29901,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#__get i32.const 44 @@ -28566,11 +29920,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 call $~lib/array/Array#__get i32.const 42 @@ -28596,21 +29950,21 @@ i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#splice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5 i32.const 2 i32.const 3 i32.const 2944 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -28628,11 +29982,11 @@ i32.const 3 i32.const 2992 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -28656,21 +30010,21 @@ i32.const 0 i32.const 0 call $~lib/array/Array#splice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 i32.const 2 i32.const 3 i32.const 3072 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -28688,11 +30042,11 @@ i32.const 3 i32.const 3104 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -28716,21 +30070,21 @@ i32.const 2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#splice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 3 i32.const 2 i32.const 3 i32.const 3200 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -28748,11 +30102,11 @@ i32.const 3 i32.const 3232 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -28776,21 +30130,21 @@ i32.const 2 i32.const 2 call $~lib/array/Array#splice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 i32.const 2 i32.const 3 i32.const 3312 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -28808,11 +30162,11 @@ i32.const 3 i32.const 3344 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -28836,21 +30190,21 @@ i32.const 0 i32.const 1 call $~lib/array/Array#splice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 i32.const 2 i32.const 3 i32.const 3424 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -28868,11 +30222,11 @@ i32.const 3 i32.const 3456 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -28896,21 +30250,21 @@ i32.const -1 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#splice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 i32.const 2 i32.const 3 i32.const 3552 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -28928,11 +30282,11 @@ i32.const 3 i32.const 3584 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -28956,21 +30310,21 @@ i32.const -2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#splice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 i32.const 2 i32.const 3 i32.const 3680 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -28988,11 +30342,11 @@ i32.const 3 i32.const 3712 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29016,21 +30370,21 @@ i32.const -2 i32.const 1 call $~lib/array/Array#splice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 i32.const 2 i32.const 3 i32.const 3792 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29048,11 +30402,11 @@ i32.const 3 i32.const 3824 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29076,21 +30430,21 @@ i32.const -7 i32.const 1 call $~lib/array/Array#splice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 i32.const 2 i32.const 3 i32.const 3920 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29108,11 +30462,11 @@ i32.const 3 i32.const 3952 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29136,21 +30490,21 @@ i32.const -2 i32.const -1 call $~lib/array/Array#splice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 i32.const 2 i32.const 3 i32.const 4048 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29168,11 +30522,11 @@ i32.const 3 i32.const 4080 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29196,21 +30550,21 @@ i32.const 1 i32.const -2 call $~lib/array/Array#splice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 i32.const 2 i32.const 3 i32.const 4176 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29228,11 +30582,11 @@ i32.const 3 i32.const 4208 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29256,21 +30610,21 @@ i32.const 4 i32.const 0 call $~lib/array/Array#splice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 i32.const 2 i32.const 3 i32.const 4304 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29288,11 +30642,11 @@ i32.const 3 i32.const 4336 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29316,21 +30670,21 @@ i32.const 7 i32.const 0 call $~lib/array/Array#splice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 i32.const 2 i32.const 3 i32.const 4432 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29348,11 +30702,11 @@ i32.const 3 i32.const 4464 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29376,21 +30730,21 @@ i32.const 7 i32.const 5 call $~lib/array/Array#splice - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 i32.const 2 i32.const 3 i32.const 4560 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29408,11 +30762,11 @@ i32.const 3 i32.const 4592 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -29759,53 +31113,53 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 i32.const 0 call $~lib/array/Array#__set global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 i32.const 1 call $~lib/array/Array#__set global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 i32.const 2 call $~lib/array/Array#__set global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 3 i32.const 3 call $~lib/array/Array#__set global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 4864 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -29821,17 +31175,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 4896 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -29847,17 +31201,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 4928 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -29873,17 +31227,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 4960 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -29899,11 +31253,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -29917,17 +31271,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 4992 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -29943,49 +31297,49 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5024 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#findIndex global.set $std/array/i global.get $std/array/i @@ -30001,11 +31355,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -30019,35 +31373,35 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 3 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5056 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#every local.set $4 local.get $4 @@ -30063,17 +31417,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5088 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#every local.set $4 local.get $4 @@ -30089,17 +31443,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5120 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#every local.set $4 local.get $4 @@ -30115,11 +31469,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -30133,17 +31487,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5152 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#every local.set $4 local.get $4 @@ -30159,49 +31513,49 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5184 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#every local.set $4 local.get $4 @@ -30217,11 +31571,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -30235,35 +31589,35 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 3 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5216 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#some local.set $4 local.get $4 @@ -30279,17 +31633,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5248 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#some local.set $4 local.get $4 @@ -30305,17 +31659,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5280 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#some local.set $4 local.get $4 @@ -30331,11 +31685,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -30349,17 +31703,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5312 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#some local.set $4 local.get $4 @@ -30375,49 +31729,49 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5344 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#some local.set $4 local.get $4 @@ -30433,11 +31787,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -30451,37 +31805,37 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 3 call $~lib/array/Array#push drop i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5376 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#forEach global.get $std/array/i i32.const 6 @@ -30498,17 +31852,17 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5408 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#forEach global.get $std/array/i i32.const 6 @@ -30523,11 +31877,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -30543,17 +31897,17 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5440 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#forEach global.get $std/array/i i32.const 406 @@ -30568,51 +31922,51 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5472 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#forEach global.get $std/array/i i32.const 1 @@ -30627,11 +31981,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -30645,42 +31999,42 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 3 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5504 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#forEach global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 100 i32.eq @@ -30703,11 +32057,11 @@ local.get $3 if global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop local.get $4 @@ -30718,54 +32072,54 @@ end end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 1 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 3 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5536 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#map local.tee $4 i32.store offset=24 @@ -30786,11 +32140,11 @@ i32.const 0 call $~lib/array/Array#__get global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#__get f32.convert_i32_s @@ -30807,17 +32161,17 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5568 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#map drop global.get $std/array/i @@ -30833,11 +32187,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -30853,17 +32207,17 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5600 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#map drop global.get $std/array/i @@ -30879,51 +32233,51 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5632 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#map drop global.get $std/array/i @@ -30939,11 +32293,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -30957,36 +32311,36 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 3 call $~lib/array/Array#push drop global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5664 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#filter local.tee $4 i32.store offset=24 @@ -31006,17 +32360,17 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5696 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#filter drop global.get $std/array/i @@ -31032,11 +32386,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -31052,17 +32406,17 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5728 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#filter drop global.get $std/array/i @@ -31078,51 +32432,51 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop i32.const 0 global.set $std/array/i global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5760 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/array/Array#filter drop global.get $std/array/i @@ -31138,11 +32492,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -31156,35 +32510,35 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 3 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5792 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -31201,17 +32555,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5824 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 4 call $~lib/array/Array#reduce global.set $std/array/i @@ -31228,17 +32582,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5856 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#reduce local.set $4 @@ -31257,17 +32611,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5888 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#reduce local.set $4 @@ -31286,17 +32640,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5920 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -31313,11 +32667,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -31331,17 +32685,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5952 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -31358,49 +32712,49 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#pop drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 5984 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#reduce global.set $std/array/i @@ -31417,11 +32771,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -31435,35 +32789,35 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 3 call $~lib/array/Array#push drop global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 6016 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -31480,17 +32834,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 6048 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 4 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -31507,17 +32861,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 6080 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#reduceRight local.set $4 @@ -31536,17 +32890,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 6112 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#reduceRight local.set $4 @@ -31565,17 +32919,17 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 6144 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $~lib/array/Array#reduceRight global.set $std/array/i @@ -31592,11 +32946,11 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 8 i32.eq @@ -31610,148 +32964,538 @@ unreachable end global.get $std/array/arr - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 i32.const 6176 - local.set $17 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 + 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 528 + i32.const 850 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 6208 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $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 528 + i32.const 863 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 864 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 0 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 1 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store + local.get $41 + i32.const 3 + call $~lib/array/Array#push + drop + call $~lib/bindings/Math/random + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + i32.const 19 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=4 + local.tee $3 + i32.store offset=20 + local.get $4 + i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + i32.const 100 + call $std/array/Dim#set:height + local.get $2 + i32.const 80 + call $std/array/Dim#set:width + local.get $2 + call $~lib/array/Array#__uset + local.get $4 + i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $0 + i32.store offset=16 + local.get $0 + i32.const 90 + call $std/array/Dim#set:height + local.get $0 + i32.const 90 + call $std/array/Dim#set:width + local.get $0 + call $~lib/array/Array#__uset + local.get $4 + i32.const 2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 70 + call $std/array/Dim#set:height + local.get $1 + i32.const 95 + call $std/array/Dim#set:width + local.get $1 + call $~lib/array/Array#__uset + local.get $4 + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $5 + i32.store offset=28 + local.get $5 + i32.const 100 + call $std/array/Dim#set:height + local.get $5 + i32.const 100 + call $std/array/Dim#set:width + local.get $5 + call $~lib/array/Array#__uset + local.get $4 + i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $6 + i32.store offset=32 + local.get $6 + i32.const 80 + call $std/array/Dim#set:height + local.get $6 + i32.const 110 + call $std/array/Dim#set:width + local.get $6 + call $~lib/array/Array#__uset + local.get $4 + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $7 + i32.store offset=36 + local.get $7 + i32.const 110 + call $std/array/Dim#set:height + local.get $7 + i32.const 115 + call $std/array/Dim#set:width + local.get $7 + call $~lib/array/Array#__uset + local.get $4 + i32.const 6 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $8 + i32.store offset=40 + local.get $8 + i32.const 100 + call $std/array/Dim#set:height + local.get $8 + i32.const 120 + call $std/array/Dim#set:width + local.get $8 + call $~lib/array/Array#__uset + local.get $4 + i32.const 7 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $9 + i32.store offset=44 + local.get $9 + i32.const 70 + call $std/array/Dim#set:height + local.get $9 + i32.const 125 + call $std/array/Dim#set:width + local.get $9 + call $~lib/array/Array#__uset + local.get $4 + i32.const 8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $10 + i32.store offset=48 + local.get $10 + i32.const 70 + call $std/array/Dim#set:height + local.get $10 + i32.const 130 + call $std/array/Dim#set:width + local.get $10 + call $~lib/array/Array#__uset + local.get $4 + i32.const 9 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $11 + i32.store offset=52 + local.get $11 + i32.const 100 + call $std/array/Dim#set:height + local.get $11 + i32.const 135 + call $std/array/Dim#set:width + local.get $11 + call $~lib/array/Array#__uset + local.get $4 + i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $12 + i32.store offset=56 + local.get $12 + i32.const 75 + call $std/array/Dim#set:height + local.get $12 + i32.const 140 + call $std/array/Dim#set:width + local.get $12 + call $~lib/array/Array#__uset + local.get $4 + i32.const 11 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $13 + i32.store offset=60 + local.get $13 + i32.const 70 + call $std/array/Dim#set:height + local.get $13 + i32.const 140 + call $std/array/Dim#set:width + local.get $13 + call $~lib/array/Array#__uset + local.get $4 + global.set $std/array/inputStabArr + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + i32.const 19 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $4 + i32.store offset=24 + local.get $3 + i32.const 0 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=8 - local.get $17 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 528 - i32.const 850 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $17 + call $std/array/Dim#constructor + local.tee $14 + i32.store offset=64 + local.get $14 + i32.const 70 + call $std/array/Dim#set:height + local.get $14 + i32.const 95 + call $std/array/Dim#set:width + local.get $14 + call $~lib/array/Array#__uset + local.get $3 + i32.const 1 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store - local.get $17 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $17 + i32.const 0 + call $std/array/Dim#constructor + local.tee $15 + i32.store offset=68 + local.get $15 + i32.const 70 + call $std/array/Dim#set:height + local.get $15 + i32.const 125 + call $std/array/Dim#set:width + local.get $15 + call $~lib/array/Array#__uset + local.get $3 + i32.const 2 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store - local.get $17 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $17 + i32.const 0 + call $std/array/Dim#constructor + local.tee $16 + i32.store offset=72 + local.get $16 + i32.const 70 + call $std/array/Dim#set:height + local.get $16 + i32.const 130 + call $std/array/Dim#set:width + local.get $16 + call $~lib/array/Array#__uset + local.get $3 + i32.const 3 global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $17 + i32.store offset=76 local.get $17 - i32.store - local.get $17 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $17 - global.get $~lib/memory/__stack_pointer + i32.const 70 + call $std/array/Dim#set:height local.get $17 - i32.store + i32.const 140 + call $std/array/Dim#set:width local.get $17 - call $~lib/array/Array#pop - drop - global.get $std/array/arr - local.set $17 + call $~lib/array/Array#__uset + local.get $3 + i32.const 4 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store - local.get $17 - i32.const 6208 - local.set $17 + i32.const 0 + call $std/array/Dim#constructor + local.tee $18 + i32.store offset=80 + local.get $18 + i32.const 75 + call $std/array/Dim#set:height + local.get $18 + i32.const 140 + call $std/array/Dim#set:width + local.get $18 + call $~lib/array/Array#__uset + local.get $3 + i32.const 5 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=8 - local.get $17 i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i + call $std/array/Dim#constructor + local.tee $19 + i32.store offset=84 + local.get $19 + i32.const 80 + call $std/array/Dim#set:height + local.get $19 + i32.const 110 + call $std/array/Dim#set:width + local.get $19 + call $~lib/array/Array#__uset + local.get $3 i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 863 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $17 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store - local.get $17 - call $~lib/array/Array#get:length i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 528 - i32.const 864 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - local.set $17 + call $std/array/Dim#constructor + local.tee $20 + i32.store offset=88 + local.get $20 + i32.const 90 + call $std/array/Dim#set:height + local.get $20 + i32.const 90 + call $std/array/Dim#set:width + local.get $20 + call $~lib/array/Array#__uset + local.get $3 + i32.const 7 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store - local.get $17 i32.const 0 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.set $17 + call $std/array/Dim#constructor + local.tee $21 + i32.store offset=92 + local.get $21 + i32.const 100 + call $std/array/Dim#set:height + local.get $21 + i32.const 80 + call $std/array/Dim#set:width + local.get $21 + call $~lib/array/Array#__uset + local.get $3 + i32.const 8 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store - local.get $17 - i32.const 1 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.set $17 + i32.const 0 + call $std/array/Dim#constructor + local.tee $22 + i32.store offset=96 + local.get $22 + i32.const 100 + call $std/array/Dim#set:height + local.get $22 + i32.const 100 + call $std/array/Dim#set:width + local.get $22 + call $~lib/array/Array#__uset + local.get $3 + i32.const 9 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store - local.get $17 - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.set $17 + i32.const 0 + call $std/array/Dim#constructor + local.tee $23 + i32.store offset=100 + local.get $23 + i32.const 100 + call $std/array/Dim#set:height + local.get $23 + i32.const 120 + call $std/array/Dim#set:width + local.get $23 + call $~lib/array/Array#__uset + local.get $3 + i32.const 10 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store - local.get $17 - i32.const 3 - call $~lib/array/Array#push - drop - call $~lib/bindings/Math/random - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom + i32.const 0 + call $std/array/Dim#constructor + local.tee $24 + i32.store offset=104 + local.get $24 + i32.const 100 + call $std/array/Dim#set:height + local.get $24 + i32.const 135 + call $std/array/Dim#set:width + local.get $24 + call $~lib/array/Array#__uset + local.get $3 + i32.const 11 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $std/array/Dim#constructor + local.tee $25 + i32.store offset=108 + local.get $25 + i32.const 110 + call $std/array/Dim#set:height + local.get $25 + i32.const 115 + call $std/array/Dim#set:width + local.get $25 + call $~lib/array/Array#__uset + local.get $3 + global.set $std/array/outputStabArr global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 2 @@ -31772,18 +33516,18 @@ i32.const 9 i32.const 6544 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 953 + i32.const 1002 i32.const 3 call $~lib/builtins/abort unreachable @@ -31808,18 +33552,18 @@ i32.const 9 i32.const 6640 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 957 + i32.const 1006 i32.const 3 call $~lib/builtins/abort unreachable @@ -31830,32 +33574,32 @@ i32.const 10 i32.const 6704 call $~lib/rt/__newArray - local.tee $2 - i32.store offset=12 - local.get $2 + local.tee $26 + i32.store offset=112 + local.get $26 i32.const 0 global.set $~argumentsLength i32.const 0 call $~lib/array/Array#sort@varargs drop - local.get $2 + local.get $26 i32.const 8 i32.const 3 i32.const 10 i32.const 6832 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 961 + i32.const 1010 i32.const 3 call $~lib/builtins/abort unreachable @@ -31866,32 +33610,32 @@ i32.const 3 i32.const 6928 call $~lib/rt/__newArray - local.tee $0 - i32.store offset=16 - local.get $0 + local.tee $27 + i32.store offset=116 + local.get $27 i32.const 0 global.set $~argumentsLength i32.const 0 call $~lib/array/Array#sort@varargs drop - local.get $0 + local.get $27 i32.const 5 i32.const 2 i32.const 3 i32.const 7008 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 965 + i32.const 1014 i32.const 3 call $~lib/builtins/abort unreachable @@ -31902,32 +33646,32 @@ i32.const 7 i32.const 7056 call $~lib/rt/__newArray - local.tee $1 - i32.store offset=4 - local.get $1 + local.tee $28 + i32.store offset=120 + local.get $28 i32.const 0 global.set $~argumentsLength i32.const 0 call $~lib/array/Array#sort@varargs drop - local.get $1 + local.get $28 i32.const 5 i32.const 2 i32.const 7 i32.const 7136 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 969 + i32.const 1018 i32.const 3 call $~lib/builtins/abort unreachable @@ -31938,290 +33682,291 @@ i32.const 3 i32.const 7184 call $~lib/rt/__newArray - local.tee $5 - i32.store offset=28 + local.tee $29 + i32.store offset=124 global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 i32.const 3 i32.const 7216 call $~lib/rt/__newArray - local.tee $7 - i32.store offset=32 + local.tee $31 + i32.store offset=128 global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 3 i32.const 7248 call $~lib/rt/__newArray - local.tee $8 - i32.store offset=36 + local.tee $32 + i32.store offset=132 global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 2 i32.const 3 i32.const 7280 call $~lib/rt/__newArray - local.tee $9 - i32.store offset=40 + local.tee $33 + i32.store offset=136 global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 2 i32.const 3 i32.const 7328 call $~lib/rt/__newArray - local.tee $10 - i32.store offset=44 + local.tee $34 + i32.store offset=140 global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createReverseOrderedArray - local.tee $6 - i32.store offset=48 + local.tee $30 + i32.store offset=144 global.get $~lib/memory/__stack_pointer i32.const 128 call $std/array/createReverseOrderedArray - local.tee $11 - i32.store offset=52 + local.tee $35 + i32.store offset=148 global.get $~lib/memory/__stack_pointer i32.const 1024 call $std/array/createReverseOrderedArray - local.tee $12 - i32.store offset=56 + local.tee $36 + i32.store offset=152 global.get $~lib/memory/__stack_pointer i32.const 10000 call $std/array/createReverseOrderedArray - local.tee $13 - i32.store offset=60 + local.tee $37 + i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 512 call $std/array/createRandomOrderedArray - local.tee $14 - i32.store offset=64 - local.get $5 + local.tee $38 + i32.store offset=160 + local.get $29 call $std/array/assertSortedDefault - local.get $7 + local.get $31 call $std/array/assertSortedDefault - local.get $7 + local.get $31 i32.const 1 i32.const 2 i32.const 3 i32.const 7408 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 989 + i32.const 1038 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 + local.get $32 call $std/array/assertSortedDefault - local.get $8 + local.get $32 i32.const 2 i32.const 2 i32.const 3 i32.const 7440 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 992 + i32.const 1041 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $9 + local.get $33 call $std/array/assertSortedDefault - local.get $9 - local.get $10 + local.get $33 + local.get $34 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 995 + i32.const 1044 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $30 call $std/array/assertSortedDefault - local.get $6 - local.get $10 + local.get $30 + local.get $34 i32.const 4 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 998 + i32.const 1047 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $11 + local.get $35 call $std/array/assertSortedDefault - local.get $11 - local.get $10 + local.get $35 + local.get $34 i32.const 4 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 1001 + i32.const 1050 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $12 + local.get $36 call $std/array/assertSortedDefault - local.get $12 - local.get $10 + local.get $36 + local.get $34 i32.const 4 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 1004 + i32.const 1053 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $13 + local.get $37 call $std/array/assertSortedDefault - local.get $13 - local.get $10 + local.get $37 + local.get $34 i32.const 4 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 528 - i32.const 1007 + i32.const 1056 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $14 + local.get $38 call $std/array/assertSortedDefault + call $std/array/assertStableSortedForComplexObjects global.get $~lib/memory/__stack_pointer i32.const 64 call $std/array/createRandomOrderedArray - local.tee $14 - i32.store offset=64 + local.tee $38 + i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 257 call $std/array/createRandomOrderedArray - local.tee $13 - i32.store offset=60 - local.get $14 - i32.const 7472 - local.set $17 - global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=8 - local.get $17 - call $std/array/assertSorted - local.get $14 + local.tee $37 + i32.store offset=156 + local.get $38 i32.const 7504 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $std/array/assertSorted - local.get $13 + local.get $38 i32.const 7536 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $std/array/assertSorted - local.get $13 + local.get $37 i32.const 7568 - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 + call $std/array/assertSorted + local.get $37 + i32.const 7600 + local.set $41 + global.get $~lib/memory/__stack_pointer + local.get $41 + i32.store offset=8 + local.get $41 call $std/array/assertSorted global.get $~lib/memory/__stack_pointer i32.const 2 call $std/array/createReverseOrderedNestedArray - local.tee $13 - i32.store offset=60 - local.get $13 - i32.const 7600 - local.set $17 + local.tee $37 + i32.store offset=156 + local.get $37 + i32.const 7632 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $std/array/assertSorted<~lib/array/Array> global.get $~lib/memory/__stack_pointer i32.const 512 call $std/array/createReverseOrderedElementsArray - local.tee $13 - i32.store offset=60 - local.get $13 - i32.const 7632 - local.set $17 + local.tee $37 + i32.store offset=156 + local.get $37 + i32.const 7664 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $std/array/assertSorted> global.get $~lib/memory/__stack_pointer i32.const 7 i32.const 2 - i32.const 27 - i32.const 7824 + i32.const 30 + i32.const 7856 call $~lib/rt/__newArray - local.tee $14 - i32.store offset=64 + local.tee $38 + i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 7 i32.const 2 - i32.const 27 - i32.const 7872 + i32.const 30 + i32.const 7904 call $~lib/rt/__newArray - local.tee $12 - i32.store offset=56 - local.get $14 + local.tee $36 + i32.store offset=152 + local.get $38 i32.const 1 global.set $~argumentsLength i32.const 0 call $std/array/assertSorted<~lib/string/String|null>@varargs - local.get $14 - local.get $12 + local.get $38 + local.get $36 i32.const 0 call $std/array/isArraysEqual<~lib/string/String|null> i32.eqz if i32.const 0 i32.const 528 - i32.const 1044 + i32.const 1095 i32.const 3 call $~lib/builtins/abort unreachable @@ -32229,47 +33974,47 @@ global.get $~lib/memory/__stack_pointer i32.const 400 call $std/array/createRandomStringArray - local.tee $13 - i32.store offset=60 - local.get $13 + local.tee $37 + i32.store offset=156 + local.get $37 i32.const 1 global.set $~argumentsLength i32.const 0 call $std/array/assertSorted<~lib/string/String>@varargs i32.const 2 i32.const 0 - i32.const 31 - i32.const 7984 + i32.const 34 + i32.const 8016 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=68 - local.get $17 - i32.const 8080 - local.set $17 + local.get $41 + i32.store offset=164 + local.get $41 + i32.const 8112 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=72 - local.get $17 + local.get $41 + i32.store offset=168 + local.get $41 call $~lib/array/Array#join - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 8112 - local.set $17 + local.get $41 + i32.const 8144 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1053 + i32.const 1104 i32.const 3 call $~lib/builtins/abort unreachable @@ -32277,37 +34022,37 @@ i32.const 3 i32.const 2 i32.const 3 - i32.const 8160 + i32.const 8192 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=68 - local.get $17 - i32.const 7792 - local.set $17 + local.get $41 + i32.store offset=164 + local.get $41 + i32.const 7824 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=72 - local.get $17 + local.get $41 + i32.store offset=168 + local.get $41 call $~lib/array/Array#join - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 9968 - local.set $17 + local.get $41 + i32.const 10000 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1054 + i32.const 1105 i32.const 3 call $~lib/builtins/abort unreachable @@ -32315,37 +34060,37 @@ i32.const 3 i32.const 2 i32.const 7 - i32.const 10000 + i32.const 10032 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=68 - local.get $17 - i32.const 10032 - local.set $17 + local.get $41 + i32.store offset=164 + local.get $41 + i32.const 10064 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=72 - local.get $17 + local.get $41 + i32.store offset=168 + local.get $41 call $~lib/array/Array#join - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 9968 - local.set $17 + local.get $41 + i32.const 10000 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1055 + i32.const 1106 i32.const 3 call $~lib/builtins/abort unreachable @@ -32353,37 +34098,37 @@ i32.const 2 i32.const 2 i32.const 3 - i32.const 10064 + i32.const 10096 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=68 - local.get $17 - i32.const 10096 - local.set $17 + local.get $41 + i32.store offset=164 + local.get $41 + i32.const 10128 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=72 - local.get $17 + local.get $41 + i32.store offset=168 + local.get $41 call $~lib/array/Array#join - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 10128 - local.set $17 + local.get $41 + i32.const 10160 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1056 + i32.const 1107 i32.const 3 call $~lib/builtins/abort unreachable @@ -32391,75 +34136,75 @@ i32.const 6 i32.const 3 i32.const 10 - i32.const 10208 + i32.const 10240 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=68 - local.get $17 - i32.const 10288 - local.set $17 + local.get $41 + i32.store offset=164 + local.get $41 + i32.const 10320 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=72 - local.get $17 + local.get $41 + i32.store offset=168 + local.get $41 call $~lib/array/Array#join - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 11456 - local.set $17 + local.get $41 + i32.const 11488 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1057 + i32.const 1108 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 3 i32.const 2 - i32.const 27 - i32.const 11600 + i32.const 30 + i32.const 11632 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=68 - local.get $17 - i32.const 7792 - local.set $17 + local.get $41 + i32.store offset=164 + local.get $41 + i32.const 7824 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=72 - local.get $17 + local.get $41 + i32.store offset=168 + local.get $41 call $~lib/array/Array<~lib/string/String|null>#join - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 11568 - local.set $17 + local.get $41 + i32.const 11600 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1058 + i32.const 1109 i32.const 3 call $~lib/builtins/abort unreachable @@ -32471,57 +34216,57 @@ i32.const 11 i32.const 0 call $~lib/rt/__newArray - local.tee $13 - i32.store offset=60 + local.tee $37 + i32.store offset=156 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $37 i32.load offset=4 - local.tee $12 - i32.store offset=56 - local.get $13 + local.tee $36 + i32.store offset=152 + local.get $37 i32.const 0 i32.const 0 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $13 + local.get $37 i32.const 1 i32.const 0 call $~lib/array/Array#__uset - local.get $13 + local.get $37 i32.const 2 i32.const 0 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $13 - local.tee $12 - i32.store offset=56 - local.get $12 - i32.const 8080 - local.set $17 + local.get $37 + local.tee $36 + i32.store offset=152 + local.get $36 + i32.const 8112 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=72 - local.get $17 + local.get $41 + i32.store offset=168 + local.get $41 call $~lib/array/Array#join - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 11696 - local.set $17 + local.get $41 + i32.const 11728 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1060 + i32.const 1111 i32.const 3 call $~lib/builtins/abort unreachable @@ -32533,53 +34278,53 @@ i32.const 8 i32.const 0 call $~lib/rt/__newArray - local.tee $13 - i32.store offset=60 + local.tee $37 + i32.store offset=156 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $37 i32.load offset=4 - local.tee $14 - i32.store offset=64 - local.get $13 + local.tee $38 + i32.store offset=160 + local.get $37 i32.const 0 i32.const 0 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $13 + local.get $37 i32.const 1 i32.const 0 i32.const 0 call $std/array/Ref#constructor call $~lib/array/Array#__uset - local.get $13 - local.tee $14 - i32.store offset=64 - local.get $14 - i32.const 8080 - local.set $17 + local.get $37 + local.tee $38 + i32.store offset=160 + local.get $38 + i32.const 8112 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=72 - local.get $17 + local.get $41 + i32.store offset=168 + local.get $41 call $~lib/array/Array#join - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 11792 - local.set $17 + local.get $41 + i32.const 11824 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1063 + i32.const 1114 i32.const 3 call $~lib/builtins/abort unreachable @@ -32588,250 +34333,250 @@ i32.const 0 i32.const 2 i32.const 3 - i32.const 11888 + i32.const 11920 call $~lib/rt/__newArray - local.tee $12 - i32.store offset=56 + local.tee $36 + i32.store offset=152 global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 i32.const 3 - i32.const 11920 + i32.const 11952 call $~lib/rt/__newArray - local.tee $13 - i32.store offset=60 + local.tee $37 + i32.store offset=156 global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 3 - i32.const 11952 + i32.const 11984 call $~lib/rt/__newArray - local.tee $11 - i32.store offset=52 + local.tee $35 + i32.store offset=148 global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 2 i32.const 3 - i32.const 11984 + i32.const 12016 call $~lib/rt/__newArray - local.tee $6 - i32.store offset=48 - local.get $12 + local.tee $30 + i32.store offset=144 + local.get $36 call $~lib/array/Array#toString - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 7792 - local.set $17 + local.get $41 + i32.const 7824 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1073 + i32.const 1124 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $13 + local.get $37 call $~lib/array/Array#toString - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 11568 - local.set $17 + local.get $41 + i32.const 11600 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1074 + i32.const 1125 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $11 + local.get $35 call $~lib/array/Array#toString - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 12032 - local.set $17 + local.get $41 + i32.const 12064 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1075 + i32.const 1126 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $30 call $~lib/array/Array#toString - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 12064 - local.set $17 + local.get $41 + i32.const 12096 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1076 + i32.const 1127 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 3 i32.const 0 - i32.const 32 - i32.const 12112 + i32.const 35 + i32.const 12144 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=68 - local.get $17 + local.get $41 + i32.store offset=164 + local.get $41 call $~lib/array/Array#toString - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 12144 - local.set $17 + local.get $41 + i32.const 12176 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1078 + i32.const 1129 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 3 i32.const 1 - i32.const 33 - i32.const 12176 + i32.const 36 + i32.const 12208 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=68 - local.get $17 + local.get $41 + i32.store offset=164 + local.get $41 call $~lib/array/Array#toString - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 12208 - local.set $17 + local.get $41 + i32.const 12240 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1079 + i32.const 1130 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 3 i32.const 3 - i32.const 34 - i32.const 12256 + i32.const 37 + i32.const 12288 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=68 - local.get $17 + local.get $41 + i32.store offset=164 + local.get $41 call $~lib/array/Array#toString - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 12304 - local.set $17 + local.get $41 + i32.const 12336 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1080 + i32.const 1131 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 4 i32.const 3 - i32.const 35 - i32.const 12384 + i32.const 38 + i32.const 12416 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=68 - local.get $17 + local.get $41 + i32.store offset=164 + local.get $41 call $~lib/array/Array#toString - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 12448 - local.set $17 + local.get $41 + i32.const 12480 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1081 + i32.const 1132 i32.const 3 call $~lib/builtins/abort unreachable @@ -32839,62 +34584,62 @@ global.get $~lib/memory/__stack_pointer i32.const 7 i32.const 2 - i32.const 27 - i32.const 12560 + i32.const 30 + i32.const 12592 call $~lib/rt/__newArray - local.tee $10 - i32.store offset=44 - local.get $10 + local.tee $34 + i32.store offset=140 + local.get $34 call $~lib/array/Array<~lib/string/String|null>#toString - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 12608 - local.set $17 + local.get $41 + i32.const 12640 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1085 + i32.const 1136 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 4 i32.const 2 - i32.const 27 - i32.const 12720 + i32.const 30 + i32.const 12752 call $~lib/rt/__newArray - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 - i32.store offset=68 - local.get $17 + local.get $41 + i32.store offset=164 + local.get $41 call $~lib/array/Array<~lib/string/String|null>#toString - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 12768 - local.set $17 + local.get $41 + i32.const 12800 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1086 + i32.const 1137 i32.const 3 call $~lib/builtins/abort unreachable @@ -32903,54 +34648,54 @@ global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 - i32.const 22 + i32.const 25 i32.const 0 call $~lib/rt/__newArray - local.tee $9 - i32.store offset=40 + local.tee $33 + i32.store offset=136 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $33 i32.load offset=4 - local.tee $14 - i32.store offset=64 - local.get $9 + local.tee $38 + i32.store offset=160 + local.get $33 i32.const 0 i32.const 2 i32.const 2 i32.const 3 - i32.const 12800 + i32.const 12832 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $9 + local.get $33 i32.const 1 i32.const 2 i32.const 2 i32.const 3 - i32.const 12832 + i32.const 12864 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $9 - local.tee $14 - i32.store offset=64 - local.get $14 + local.get $33 + local.tee $38 + i32.store offset=160 + local.get $38 call $~lib/array/Array<~lib/array/Array>#toString - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 12864 - local.set $17 + local.get $41 + i32.const 12896 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1089 + i32.const 1140 i32.const 3 call $~lib/builtins/abort unreachable @@ -32959,54 +34704,54 @@ global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 - i32.const 36 + i32.const 39 i32.const 0 call $~lib/rt/__newArray - local.tee $9 - i32.store offset=40 + local.tee $33 + i32.store offset=136 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $33 i32.load offset=4 - local.tee $8 - i32.store offset=36 - local.get $9 + local.tee $32 + i32.store offset=132 + local.get $33 i32.const 0 i32.const 2 i32.const 0 i32.const 6 - i32.const 12912 + i32.const 12944 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $9 + local.get $33 i32.const 1 i32.const 2 i32.const 0 i32.const 6 - i32.const 12944 + i32.const 12976 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $9 - local.tee $8 - i32.store offset=36 - local.get $8 + local.get $33 + local.tee $32 + i32.store offset=132 + local.get $32 call $~lib/array/Array<~lib/array/Array>#toString - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 12864 - local.set $17 + local.get $41 + i32.const 12896 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1092 + i32.const 1143 i32.const 3 call $~lib/builtins/abort unreachable @@ -33015,63 +34760,63 @@ global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 - i32.const 38 + i32.const 41 i32.const 0 call $~lib/rt/__newArray - local.tee $9 - i32.store offset=40 + local.tee $33 + i32.store offset=136 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $33 i32.load offset=4 - local.tee $7 - i32.store offset=32 - local.get $9 + local.tee $31 + i32.store offset=128 + local.get $33 i32.const 0 global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 - i32.const 37 + i32.const 40 i32.const 0 call $~lib/rt/__newArray - local.tee $5 - i32.store offset=28 + local.tee $29 + i32.store offset=124 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $29 i32.load offset=4 - local.tee $1 - i32.store offset=4 - local.get $5 + local.tee $28 + i32.store offset=120 + local.get $29 i32.const 0 i32.const 1 i32.const 2 i32.const 7 - i32.const 12976 + i32.const 13008 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $5 + local.get $29 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__uset - local.get $9 - local.tee $7 - i32.store offset=32 - local.get $7 + local.get $33 + local.tee $31 + i32.store offset=128 + local.get $31 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - i32.const 11568 - local.set $17 + local.get $41 + i32.const 11600 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1095 + i32.const 1146 i32.const 3 call $~lib/builtins/abort unreachable @@ -33080,57 +34825,57 @@ global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 2 - i32.const 22 + i32.const 25 i32.const 0 call $~lib/rt/__newArray - local.tee $7 - i32.store offset=32 + local.tee $31 + i32.store offset=128 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $31 i32.load offset=4 - local.tee $8 - i32.store offset=36 - local.get $7 + local.tee $32 + i32.store offset=132 + local.get $31 i32.const 0 i32.const 1 i32.const 2 i32.const 3 - i32.const 13008 + i32.const 13040 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $7 + local.get $31 i32.const 1 i32.const 3 i32.const 2 i32.const 3 - i32.const 13040 + i32.const 13072 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $7 + local.get $31 i32.const 2 i32.const 3 i32.const 2 i32.const 3 - i32.const 13072 + i32.const 13104 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $7 + local.get $31 i32.const 3 i32.const 3 i32.const 2 i32.const 3 - i32.const 13104 + i32.const 13136 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $7 - local.tee $8 - i32.store offset=36 + local.get $31 + local.tee $32 + i32.store offset=132 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $32 call $~lib/array/Array<~lib/array/Array>#flat - local.tee $7 - i32.store offset=32 - local.get $7 + local.tee $31 + i32.store offset=128 + local.get $31 call $~lib/array/Array#get:length i32.const 10 i32.eq @@ -33138,38 +34883,38 @@ if i32.const 0 i32.const 528 - i32.const 1102 + i32.const 1153 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $14 + local.set $38 loop $for-loop|1 - local.get $14 + local.get $38 i32.const 10 i32.lt_s - local.set $10 - local.get $10 + local.set $34 + local.get $34 if - local.get $7 - local.get $14 + local.get $31 + local.get $38 call $~lib/array/Array#__get - local.get $14 + local.get $38 i32.eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1104 + i32.const 1155 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $14 + local.get $38 i32.const 1 i32.add - local.set $14 + local.set $38 br $for-loop|1 end end @@ -33177,65 +34922,65 @@ global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 2 - i32.const 39 + i32.const 42 i32.const 0 call $~lib/rt/__newArray - local.tee $14 - i32.store offset=64 + local.tee $38 + i32.store offset=160 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $38 i32.load offset=4 - local.tee $10 - i32.store offset=44 - local.get $14 + local.tee $34 + i32.store offset=140 + local.get $38 i32.const 0 i32.const 1 i32.const 2 - i32.const 27 - i32.const 13168 + i32.const 30 + i32.const 13200 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset - local.get $14 + local.get $38 i32.const 1 i32.const 3 i32.const 2 - i32.const 27 - i32.const 13264 + i32.const 30 + i32.const 13296 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset - local.get $14 + local.get $38 i32.const 2 i32.const 3 i32.const 2 - i32.const 27 - i32.const 13392 + i32.const 30 + i32.const 13424 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset - local.get $14 + local.get $38 i32.const 3 i32.const 1 i32.const 2 - i32.const 27 - i32.const 13456 + i32.const 30 + i32.const 13488 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset - local.get $14 - local.tee $10 - i32.store offset=44 + local.get $38 + local.tee $34 + i32.store offset=140 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $34 call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat - local.tee $14 - i32.store offset=64 + local.tee $38 + i32.store offset=160 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 2 - i32.const 27 - i32.const 13488 + i32.const 30 + i32.const 13520 call $~lib/rt/__newArray - local.tee $11 - i32.store offset=52 - local.get $14 + local.tee $35 + i32.store offset=148 + local.get $38 call $~lib/array/Array<~lib/string/String|null>#get:length i32.const 8 i32.eq @@ -33243,51 +34988,51 @@ if i32.const 0 i32.const 528 - i32.const 1110 + i32.const 1161 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $6 + local.set $30 loop $for-loop|2 - local.get $6 - local.get $11 + local.get $30 + local.get $35 call $~lib/array/Array<~lib/string/String|null>#get:length i32.lt_s - local.set $13 - local.get $13 + local.set $37 + local.get $37 if - local.get $14 - local.get $6 + local.get $38 + local.get $30 call $~lib/array/Array<~lib/string/String|null>#__get - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 - local.get $11 - local.get $6 + local.get $41 + local.get $35 + local.get $30 call $~lib/array/Array<~lib/string/String|null>#__get - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store offset=8 - local.get $17 + local.get $41 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 528 - i32.const 1112 + i32.const 1163 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $30 i32.const 1 i32.add - local.set $6 + local.set $30 br $for-loop|2 end end @@ -33295,42 +35040,42 @@ global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 - i32.const 22 + i32.const 25 i32.const 0 call $~lib/rt/__newArray - local.tee $6 - i32.store offset=48 + local.tee $30 + i32.store offset=144 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $30 i32.load offset=4 - local.tee $13 - i32.store offset=60 - local.get $6 + local.tee $37 + i32.store offset=156 + local.get $30 i32.const 0 i32.const 0 i32.const 2 i32.const 3 - i32.const 13552 + i32.const 13584 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $6 + local.get $30 i32.const 1 i32.const 0 i32.const 2 i32.const 3 - i32.const 13584 + i32.const 13616 call $~lib/rt/__newArray call $~lib/array/Array<~lib/array/Array>#__uset - local.get $6 - local.tee $13 - i32.store offset=60 - local.get $13 + local.get $30 + local.tee $37 + i32.store offset=156 + local.get $37 call $~lib/array/Array<~lib/array/Array>#flat - local.set $17 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $17 + local.get $41 i32.store - local.get $17 + local.get $41 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -33338,18 +35083,22 @@ if i32.const 0 i32.const 528 - i32.const 1116 + i32.const 1167 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 global.set $std/array/arr + i32.const 0 + global.set $std/array/inputStabArr + i32.const 0 + global.set $std/array/outputStabArr global.get $~lib/memory/__heap_base global.set $~lib/memory/__stack_pointer call $~lib/rt/itcms/__collect global.get $~lib/memory/__stack_pointer - i32.const 76 + i32.const 172 i32.add global.set $~lib/memory/__stack_pointer ) @@ -33861,7 +35610,7 @@ i32.const 0 i32.store local.get $0 - i32.const 8080 + i32.const 8112 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -35107,6 +36856,40 @@ global.set $~lib/memory/__stack_pointer local.get $7 ) + (func $std/array/Dim#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $std/array/Dim#set:height + local.get $0 + i32.const 0 + call $std/array/Dim#set:width + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -35391,6 +37174,206 @@ global.set $~lib/memory/__stack_pointer local.get $4 ) + (func $~lib/array/Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $1 + local.tee $5 + local.get $3 + local.tee $4 + local.get $5 + local.get $4 + i32.lt_s + select + end + local.set $1 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + else + local.get $2 + local.tee $5 + local.get $3 + local.tee $4 + local.get $5 + local.get $4 + i32.lt_s + select + end + local.set $2 + local.get $2 + local.get $1 + i32.sub + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.const 19 + i32.const 0 + call $~lib/rt/__newArray + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + local.set $7 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.set $8 + i32.const 1 + drop + i32.const 0 + local.set $4 + local.get $3 + i32.const 2 + i32.shl + local.set $5 + loop $while-continue|0 + local.get $4 + local.get $5 + i32.lt_u + local.set $9 + local.get $9 + if + local.get $8 + local.get $4 + i32.add + i32.load + local.set $10 + local.get $7 + local.get $4 + i32.add + local.get $10 + i32.store + local.get $6 + local.get $10 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $4 + i32.const 4 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 99 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + i32.store + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 4672 + i32.const 80 + i32.const 103 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) (func $~lib/array/Array<~lib/array/Array>#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -35410,7 +37393,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 22 + i32.const 25 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -35618,7 +37601,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 25 + i32.const 28 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -35704,7 +37687,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 24 + i32.const 27 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -35841,7 +37824,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 29 + i32.const 32 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -35928,7 +37911,7 @@ call $~lib/string/String#get:length i32.ge_u if - i32.const 7792 + i32.const 7824 local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -35991,7 +37974,7 @@ i32.const 0 i32.eq if - i32.const 7792 + i32.const 7824 local.set $6 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -36163,7 +38146,7 @@ local.get $10 i32.eqz if - i32.const 7792 + i32.const 7824 local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -36241,7 +38224,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $13 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -36253,8 +38236,8 @@ local.get $3 i32.eqz if - i32.const 8016 i32.const 8048 + i32.const 8080 local.get $0 i32.load8_u select @@ -36313,8 +38296,8 @@ i32.const 1 i32.shl i32.add - i32.const 8016 i32.const 8048 + i32.const 8080 local.get $9 select local.get $5 @@ -36364,8 +38347,8 @@ i32.const 1 i32.shl i32.add - i32.const 8016 i32.const 8048 + i32.const 8080 local.get $9 select local.get $5 @@ -36427,8 +38410,8 @@ i32.gt_s end if - i32.const 8192 - i32.const 8320 + i32.const 8224 + i32.const 8352 i32.const 373 i32.const 5 call $~lib/builtins/abort @@ -36437,7 +38420,7 @@ local.get $0 i32.eqz if - i32.const 8384 + i32.const 8416 local.set $8 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -36593,7 +38576,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -36763,8 +38746,8 @@ i32.gt_s end if - i32.const 8192 - i32.const 8320 + i32.const 8224 + i32.const 8352 i32.const 350 i32.const 5 call $~lib/builtins/abort @@ -36773,7 +38756,7 @@ local.get $0 i32.eqz if - i32.const 8384 + i32.const 8416 local.set $7 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -36904,7 +38887,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -37064,7 +39047,7 @@ f64.const 0 f64.eq if - i32.const 10320 + i32.const 10352 local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -37084,7 +39067,7 @@ local.get $0 f64.ne if - i32.const 10352 + i32.const 10384 local.set $3 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -37093,8 +39076,8 @@ local.get $3 return end - i32.const 10384 - i32.const 10432 + i32.const 10416 + i32.const 10464 local.get $0 f64.const 0 f64.lt @@ -37107,7 +39090,7 @@ local.get $3 return end - i32.const 10464 + i32.const 10496 local.get $0 call $~lib/util/number/dtoa_core i32.const 1 @@ -37120,7 +39103,7 @@ local.tee $2 i32.store local.get $2 - i32.const 10464 + i32.const 10496 local.get $1 call $~lib/memory/memory.copy local.get $2 @@ -37157,7 +39140,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -37322,7 +39305,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -37343,7 +39326,7 @@ if (result i32) local.get $4 else - i32.const 7792 + i32.const 7824 end local.set $12 global.get $~lib/memory/__stack_pointer @@ -37530,7 +39513,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -37700,7 +39683,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -37872,8 +39855,8 @@ i32.gt_s end if - i32.const 8192 - i32.const 8320 + i32.const 8224 + i32.const 8352 i32.const 401 i32.const 5 call $~lib/builtins/abort @@ -37884,7 +39867,7 @@ i64.ne i32.eqz if - i32.const 8384 + i32.const 8416 local.set $9 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -38049,7 +40032,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -38222,8 +40205,8 @@ i32.gt_s end if - i32.const 8192 - i32.const 8320 + i32.const 8224 + i32.const 8352 i32.const 431 i32.const 5 call $~lib/builtins/abort @@ -38234,7 +40217,7 @@ i64.ne i32.eqz if - i32.const 8384 + i32.const 8416 local.set $10 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -38425,7 +40408,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $12 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -38597,7 +40580,7 @@ i32.const 0 i32.lt_s if - i32.const 7792 + i32.const 7824 local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -38976,7 +40959,7 @@ i32.store global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 27 + i32.const 30 call $~lib/rt/itcms/__new local.tee $9 i32.store offset=4 @@ -39185,7 +41168,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 40 + i32.const 43 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -39710,7 +41693,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 41 + i32.const 44 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -40145,7 +42128,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 42 + i32.const 45 call $~lib/rt/itcms/__new local.tee $0 i32.store @@ -40285,7 +42268,7 @@ global.get $~lib/memory/__stack_pointer local.get $4 i32.const 2 - i32.const 29 + i32.const 32 i32.const 0 call $~lib/rt/__newArray local.tee $5 @@ -40449,7 +42432,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 2 - i32.const 29 + i32.const 32 i32.const 0 call $~lib/rt/__newArray local.tee $2 @@ -40666,7 +42649,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.const 2 - i32.const 29 + i32.const 32 i32.const 0 call $~lib/rt/__newArray local.tee $6 @@ -40792,7 +42775,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.const 2 - i32.const 29 + i32.const 32 i32.const 0 call $~lib/rt/__newArray local.tee $6 @@ -40939,7 +42922,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8080 + i32.const 8112 local.tee $1 i32.store end @@ -40984,7 +42967,7 @@ i32.const 0 end drop - i32.const 13680 + i32.const 13712 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $1 @@ -41019,7 +43002,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8080 + i32.const 8112 local.tee $1 i32.store end @@ -41059,7 +43042,7 @@ drop i32.const 1 drop - i32.const 13712 + i32.const 13744 br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.1 end local.tee $1 @@ -41094,7 +43077,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8080 + i32.const 8112 local.tee $1 i32.store end From 028f47dc8c1b5660c2a3cc62ccab8d00608016c1 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sun, 11 Jul 2021 14:34:57 +0300 Subject: [PATCH 28/29] this is slightly faster and clearer --- std/assembly/util/sort.ts | 11 +- tests/compiler/std/array.optimized.wat | 376 ++++++------ tests/compiler/std/array.untouched.wat | 508 ++++++++-------- tests/compiler/std/typedarray.optimized.wat | 622 +++++++++++--------- tests/compiler/std/typedarray.untouched.wat | 506 ++++++++-------- 5 files changed, 1080 insertions(+), 943 deletions(-) diff --git a/std/assembly/util/sort.ts b/std/assembly/util/sort.ts index cf1df94701..ac401fd30f 100644 --- a/std/assembly/util/sort.ts +++ b/std/assembly/util/sort.ts @@ -298,9 +298,12 @@ function mergeRuns( for (let k = l; k <= r; ++k) { let a = load(buffer + (j << alignof())); let b = load(buffer + (i << alignof())); - let c = comparator(a, b) >>> 31; // c < 0 - store(ptr + (k << alignof()), select(a, b, c)); - j -= c; // i32(c < 0) - i += c ^ 1; // i32(c >= 0) + if (comparator(a, b) < 0) { + store(ptr + (k << alignof()), a); + --j; + } else { + store(ptr + (k << alignof()), b); + ++i; + } } } diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index c3b287ff92..5b3c3f3be1 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -4879,9 +4879,9 @@ ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) - (local $7 i32) + (local $7 f32) (local $8 f32) - (local $9 f32) + (local $9 i32) (local $10 i32) local.get $3 local.get $2 @@ -4889,7 +4889,7 @@ i32.sub local.tee $6 i32.add - local.set $10 + local.set $9 local.get $6 i32.const 1 i32.add @@ -4906,10 +4906,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $7 + local.tee $10 i32.add local.get $0 - local.get $7 + local.get $10 i32.add f32.load f32.store @@ -4922,7 +4922,7 @@ i32.gt_s if local.get $4 - local.get $10 + local.get $9 local.get $6 i32.sub i32.const 2 @@ -4953,43 +4953,48 @@ i32.shl i32.add f32.load - local.set $8 + local.set $7 local.get $4 local.get $2 i32.const 2 i32.shl i32.add f32.load - local.set $9 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 - local.get $9 + local.get $7 local.get $8 - local.get $9 local.get $5 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - f32.store - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + f32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add @@ -5782,9 +5787,9 @@ ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) - (local $7 i32) + (local $7 f64) (local $8 f64) - (local $9 f64) + (local $9 i32) (local $10 i32) local.get $3 local.get $2 @@ -5792,7 +5797,7 @@ i32.sub local.tee $6 i32.add - local.set $10 + local.set $9 local.get $6 i32.const 1 i32.add @@ -5809,10 +5814,10 @@ local.tee $2 i32.const 3 i32.shl - local.tee $7 + local.tee $10 i32.add local.get $0 - local.get $7 + local.get $10 i32.add f64.load f64.store @@ -5825,7 +5830,7 @@ i32.gt_s if local.get $4 - local.get $10 + local.get $9 local.get $6 i32.sub i32.const 3 @@ -5856,43 +5861,48 @@ i32.shl i32.add f64.load - local.set $8 + local.set $7 local.get $4 local.get $2 i32.const 3 i32.shl i32.add f64.load - local.set $9 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $8 - local.get $9 + local.get $7 local.get $8 - local.get $9 local.get $5 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - f64.store - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + f64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $8 + f64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add @@ -6648,7 +6658,7 @@ i32.sub local.tee $6 i32.add - local.set $8 + local.set $7 local.get $6 i32.const 1 i32.add @@ -6665,10 +6675,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $7 + local.tee $8 i32.add local.get $0 - local.get $7 + local.get $8 i32.add i32.load i32.store @@ -6681,7 +6691,7 @@ i32.gt_s if local.get $4 - local.get $8 + local.get $7 local.get $6 i32.sub i32.const 2 @@ -6712,43 +6722,48 @@ i32.shl i32.add i32.load - local.set $8 + local.set $7 local.get $4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 local.get $7 local.get $8 - local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - i32.store - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add @@ -7456,7 +7471,7 @@ i32.sub local.tee $6 i32.add - local.set $8 + local.set $7 local.get $6 i32.const 1 i32.add @@ -7473,10 +7488,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $7 + local.tee $8 i32.add local.get $0 - local.get $7 + local.get $8 i32.add i32.load i32.store @@ -7489,7 +7504,7 @@ i32.gt_s if local.get $4 - local.get $8 + local.get $7 local.get $6 i32.sub i32.const 2 @@ -7520,43 +7535,48 @@ i32.shl i32.add i32.load - local.set $8 + local.set $7 local.get $4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 local.get $7 local.get $8 - local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - i32.store - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add @@ -8226,7 +8246,7 @@ i32.sub local.tee $6 i32.add - local.set $7 + local.set $8 local.get $6 i32.const 1 i32.add @@ -8243,10 +8263,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $8 + local.tee $7 i32.add local.get $0 - local.get $8 + local.get $7 i32.add i32.load i32.store @@ -8259,7 +8279,7 @@ i32.gt_s if local.get $4 - local.get $7 + local.get $8 local.get $6 i32.sub i32.const 2 @@ -8285,53 +8305,58 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - local.tee $8 + local.tee $7 local.get $4 local.get $6 i32.const 2 i32.shl i32.add i32.load - local.tee $7 + local.tee $8 i32.store - local.get $8 + local.get $7 local.get $4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.tee $8 + local.tee $7 i32.store offset=4 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 local.get $8 local.get $7 - local.get $8 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - i32.store - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add @@ -12317,7 +12342,7 @@ i32.sub local.tee $6 i32.add - local.set $8 + local.set $7 local.get $6 i32.const 1 i32.add @@ -12332,10 +12357,10 @@ i32.const 1 i32.sub local.tee $2 - local.tee $7 + local.tee $8 i32.add local.get $0 - local.get $7 + local.get $8 i32.add i32.load8_u i32.store8 @@ -12348,7 +12373,7 @@ i32.gt_s if local.get $4 - local.get $8 + local.get $7 local.get $6 i32.sub i32.add @@ -12373,39 +12398,42 @@ local.get $6 i32.add i32.load8_u - local.set $8 + local.set $7 local.get $2 local.get $4 i32.add i32.load8_u - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.add - local.get $8 local.get $7 local.get $8 - local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - i32.store8 - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.get $7 + i32.store8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.add + local.get $8 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index c82bc992b4..1051b5ff02 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -7097,7 +7097,6 @@ (local $10 i32) (local $11 f32) (local $12 f32) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -7200,29 +7199,33 @@ local.get $5 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - f32.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + f32.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $12 + f32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -8117,7 +8120,6 @@ (local $10 i32) (local $11 f64) (local $12 f64) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -8220,29 +8222,33 @@ local.get $5 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - f64.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $11 + f64.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $12 + f64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -9167,7 +9173,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -9270,29 +9275,33 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i32.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $12 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -10079,7 +10088,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -10182,29 +10190,33 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i32.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $12 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -10962,7 +10974,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -11077,29 +11088,33 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i32.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $12 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -11891,7 +11906,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -12006,29 +12020,33 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i32.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $12 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -12803,7 +12821,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -12918,29 +12935,33 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i32.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $12 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -13628,7 +13649,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -13743,29 +13763,33 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i32.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $12 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -14812,7 +14836,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -14927,29 +14950,33 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i32.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $12 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -20521,7 +20548,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -20624,29 +20650,33 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i32.store8 - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $11 + i32.store8 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $12 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index d535e67248..ee664717de 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -3328,9 +3328,9 @@ ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) - (local $7 i32) + (local $7 f64) (local $8 f64) - (local $9 f64) + (local $9 i32) (local $10 i32) local.get $3 local.get $2 @@ -3338,7 +3338,7 @@ i32.sub local.tee $6 i32.add - local.set $10 + local.set $9 local.get $6 i32.const 1 i32.add @@ -3355,10 +3355,10 @@ local.tee $2 i32.const 3 i32.shl - local.tee $7 + local.tee $10 i32.add local.get $0 - local.get $7 + local.get $10 i32.add f64.load f64.store @@ -3371,7 +3371,7 @@ i32.gt_s if local.get $4 - local.get $10 + local.get $9 local.get $6 i32.sub i32.const 3 @@ -3402,43 +3402,48 @@ i32.shl i32.add f64.load - local.set $8 + local.set $7 local.get $4 local.get $2 i32.const 3 i32.shl i32.add f64.load - local.set $9 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $8 - local.get $9 + local.get $7 local.get $8 - local.get $9 local.get $5 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - f64.store - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + f64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $8 + f64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add @@ -29508,7 +29513,7 @@ i32.sub local.tee $6 i32.add - local.set $8 + local.set $7 local.get $6 i32.const 1 i32.add @@ -29523,10 +29528,10 @@ i32.const 1 i32.sub local.tee $2 - local.tee $7 + local.tee $8 i32.add local.get $0 - local.get $7 + local.get $8 i32.add i32.load8_s i32.store8 @@ -29539,7 +29544,7 @@ i32.gt_s if local.get $4 - local.get $8 + local.get $7 local.get $6 i32.sub i32.add @@ -29564,39 +29569,42 @@ local.get $6 i32.add i32.load8_s - local.set $8 + local.set $7 local.get $2 local.get $4 i32.add i32.load8_s - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.add - local.get $8 local.get $7 local.get $8 - local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - i32.store8 - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.get $7 + i32.store8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.add + local.get $8 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add @@ -30289,7 +30297,7 @@ i32.sub local.tee $6 i32.add - local.set $8 + local.set $7 local.get $6 i32.const 1 i32.add @@ -30304,10 +30312,10 @@ i32.const 1 i32.sub local.tee $2 - local.tee $7 + local.tee $8 i32.add local.get $0 - local.get $7 + local.get $8 i32.add i32.load8_u i32.store8 @@ -30320,7 +30328,7 @@ i32.gt_s if local.get $4 - local.get $8 + local.get $7 local.get $6 i32.sub i32.add @@ -30345,39 +30353,42 @@ local.get $6 i32.add i32.load8_u - local.set $8 + local.set $7 local.get $2 local.get $4 i32.add i32.load8_u - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.add - local.get $8 local.get $7 local.get $8 - local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - i32.store8 - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.get $7 + i32.store8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.add + local.get $8 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add @@ -31106,7 +31117,7 @@ i32.sub local.tee $6 i32.add - local.set $8 + local.set $7 local.get $6 i32.const 1 i32.add @@ -31123,10 +31134,10 @@ local.tee $2 i32.const 1 i32.shl - local.tee $7 + local.tee $8 i32.add local.get $0 - local.get $7 + local.get $8 i32.add i32.load16_s i32.store16 @@ -31139,7 +31150,7 @@ i32.gt_s if local.get $4 - local.get $8 + local.get $7 local.get $6 i32.sub i32.const 1 @@ -31170,43 +31181,48 @@ i32.shl i32.add i32.load16_s - local.set $8 + local.set $7 local.get $4 local.get $2 i32.const 1 i32.shl i32.add i32.load16_s - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $8 local.get $7 local.get $8 - local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - i32.store16 - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.store16 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add @@ -31929,7 +31945,7 @@ i32.sub local.tee $6 i32.add - local.set $8 + local.set $7 local.get $6 i32.const 1 i32.add @@ -31946,10 +31962,10 @@ local.tee $2 i32.const 1 i32.shl - local.tee $7 + local.tee $8 i32.add local.get $0 - local.get $7 + local.get $8 i32.add i32.load16_u i32.store16 @@ -31962,7 +31978,7 @@ i32.gt_s if local.get $4 - local.get $8 + local.get $7 local.get $6 i32.sub i32.const 1 @@ -31993,43 +32009,48 @@ i32.shl i32.add i32.load16_u - local.set $8 + local.set $7 local.get $4 local.get $2 i32.const 1 i32.shl i32.add i32.load16_u - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $8 local.get $7 local.get $8 - local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - i32.store16 - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.store16 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add @@ -32762,7 +32783,7 @@ i32.sub local.tee $6 i32.add - local.set $8 + local.set $7 local.get $6 i32.const 1 i32.add @@ -32779,10 +32800,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $7 + local.tee $8 i32.add local.get $0 - local.get $7 + local.get $8 i32.add i32.load i32.store @@ -32795,7 +32816,7 @@ i32.gt_s if local.get $4 - local.get $8 + local.get $7 local.get $6 i32.sub i32.const 2 @@ -32826,43 +32847,48 @@ i32.shl i32.add i32.load - local.set $8 + local.set $7 local.get $4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 local.get $7 local.get $8 - local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - i32.store - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add @@ -33579,7 +33605,7 @@ i32.sub local.tee $6 i32.add - local.set $8 + local.set $7 local.get $6 i32.const 1 i32.add @@ -33596,10 +33622,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $7 + local.tee $8 i32.add local.get $0 - local.get $7 + local.get $8 i32.add i32.load i32.store @@ -33612,7 +33638,7 @@ i32.gt_s if local.get $4 - local.get $8 + local.get $7 local.get $6 i32.sub i32.const 2 @@ -33643,43 +33669,48 @@ i32.shl i32.add i32.load - local.set $8 + local.set $7 local.get $4 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 local.get $7 local.get $8 - local.get $7 local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - i32.store - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add @@ -34393,9 +34424,9 @@ ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) - (local $7 i32) + (local $7 i64) (local $8 i64) - (local $9 i64) + (local $9 i32) (local $10 i32) local.get $3 local.get $2 @@ -34403,7 +34434,7 @@ i32.sub local.tee $6 i32.add - local.set $10 + local.set $9 local.get $6 i32.const 1 i32.add @@ -34420,10 +34451,10 @@ local.tee $2 i32.const 3 i32.shl - local.tee $7 + local.tee $10 i32.add local.get $0 - local.get $7 + local.get $10 i32.add i64.load i64.store @@ -34436,7 +34467,7 @@ i32.gt_s if local.get $4 - local.get $10 + local.get $9 local.get $6 i32.sub i32.const 3 @@ -34467,43 +34498,48 @@ i32.shl i32.add i64.load - local.set $8 + local.set $7 local.get $4 local.get $2 i32.const 3 i32.shl i32.add i64.load - local.set $9 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $8 - local.get $9 + local.get $7 local.get $8 - local.get $9 local.get $5 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - i64.store - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $8 + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add @@ -35219,9 +35255,9 @@ ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) - (local $7 i32) + (local $7 i64) (local $8 i64) - (local $9 i64) + (local $9 i32) (local $10 i32) local.get $3 local.get $2 @@ -35229,7 +35265,7 @@ i32.sub local.tee $6 i32.add - local.set $10 + local.set $9 local.get $6 i32.const 1 i32.add @@ -35246,10 +35282,10 @@ local.tee $2 i32.const 3 i32.shl - local.tee $7 + local.tee $10 i32.add local.get $0 - local.get $7 + local.get $10 i32.add i64.load i64.store @@ -35262,7 +35298,7 @@ i32.gt_s if local.get $4 - local.get $10 + local.get $9 local.get $6 i32.sub i32.const 3 @@ -35293,43 +35329,48 @@ i32.shl i32.add i64.load - local.set $8 + local.set $7 local.get $4 local.get $2 i32.const 3 i32.shl i32.add i64.load - local.set $9 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $8 - local.get $9 + local.get $7 local.get $8 - local.get $9 local.get $5 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - i64.store - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $7 + i64.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $8 + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add @@ -36045,9 +36086,9 @@ ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) - (local $7 i32) + (local $7 f32) (local $8 f32) - (local $9 f32) + (local $9 i32) (local $10 i32) local.get $3 local.get $2 @@ -36055,7 +36096,7 @@ i32.sub local.tee $6 i32.add - local.set $10 + local.set $9 local.get $6 i32.const 1 i32.add @@ -36072,10 +36113,10 @@ local.tee $2 i32.const 2 i32.shl - local.tee $7 + local.tee $10 i32.add local.get $0 - local.get $7 + local.get $10 i32.add f32.load f32.store @@ -36088,7 +36129,7 @@ i32.gt_s if local.get $4 - local.get $10 + local.get $9 local.get $6 i32.sub i32.const 2 @@ -36119,43 +36160,48 @@ i32.shl i32.add f32.load - local.set $8 + local.set $7 local.get $4 local.get $2 i32.const 2 i32.shl i32.add f32.load - local.set $9 + local.set $8 i32.const 2 global.set $~argumentsLength - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $8 - local.get $9 + local.get $7 local.get $8 - local.get $9 local.get $5 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u - local.tee $7 - select - f32.store - local.get $6 - local.get $7 - i32.sub - local.set $6 - local.get $2 - local.get $7 - i32.const 1 - i32.xor - i32.add - local.set $2 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $7 + f32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + else + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + end local.get $1 i32.const 1 i32.add diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 0f721dca5b..5d87236f3d 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -3881,7 +3881,6 @@ (local $10 i32) (local $11 f64) (local $12 f64) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -3984,29 +3983,33 @@ local.get $5 i32.load call_indirect $0 (type $f64_f64_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - f64.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $11 + f64.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $12 + f64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -33619,7 +33622,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -33722,29 +33724,33 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i32.store8 - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $11 + i32.store8 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $12 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -34546,7 +34552,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -34649,29 +34654,33 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i32.store8 - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $11 + i32.store8 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $12 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -35530,7 +35539,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -35633,29 +35641,33 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i32.store16 - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $11 + i32.store16 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $12 + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -36457,7 +36469,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -36560,29 +36571,33 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i32.store16 - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $11 + i32.store16 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $12 + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -37398,7 +37413,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -37501,29 +37515,33 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i32.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $12 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -38319,7 +38337,6 @@ (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -38422,29 +38439,33 @@ local.get $5 i32.load call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i32.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $12 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -39244,7 +39265,6 @@ (local $10 i32) (local $11 i64) (local $12 i64) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -39347,29 +39367,33 @@ local.get $5 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i64.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $11 + i64.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $12 + i64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -40171,7 +40195,6 @@ (local $10 i32) (local $11 i64) (local $12 i64) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -40274,29 +40297,33 @@ local.get $5 i32.load call_indirect $0 (type $i64_i64_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - i64.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $11 + i64.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $12 + i64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add @@ -41098,7 +41125,6 @@ (local $10 i32) (local $11 f32) (local $12 f32) - (local $13 i32) local.get $2 i32.const 1 i32.sub @@ -41201,29 +41227,33 @@ local.get $5 i32.load call_indirect $0 (type $f32_f32_=>_i32) - i32.const 31 - i32.shr_u - local.set $13 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $12 - local.get $13 - select - f32.store - local.get $7 - local.get $13 - i32.sub - local.set $7 - local.get $6 - local.get $13 - i32.const 1 - i32.xor - i32.add - local.set $6 + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + f32.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $12 + f32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end local.get $9 i32.const 1 i32.add From 9cf14d47778a94dc23876c8a40bff4d8f8697d39 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 12 Jul 2021 08:25:23 +0300 Subject: [PATCH 29/29] upd fixtures --- tests/compiler/std/array.optimized.wat | 550 +++++--------------- tests/compiler/std/typedarray.optimized.wat | 2 +- 2 files changed, 119 insertions(+), 433 deletions(-) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 0159d7e417..8d8ddab899 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -17165,7 +17165,7 @@ br_if $__inlined_func$~lib/array/Array#indexOf local.get $3 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|02528 local.get $1 local.get $4 @@ -17227,7 +17227,7 @@ br_if $__inlined_func$~lib/array/Array#indexOf local.get $3 i32.load offset=4 - local.set $2 + local.set $3 loop $while-continue|026 local.get $1 local.get $4 @@ -17926,7 +17926,7 @@ local.tee $3 i32.store block $__inlined_func$~lib/array/Array#indexOf30 - local.get $1 + local.get $3 i32.load offset=12 local.tee $4 i32.const -2 @@ -17992,7 +17992,7 @@ local.tee $3 i32.store block $__inlined_func$~lib/array/Array#indexOf34 - local.get $1 + local.get $3 i32.load offset=12 local.tee $4 i32.const -4 @@ -18058,7 +18058,7 @@ local.tee $1 i32.store i32.const 0 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#indexOf38 local.get $1 i32.load offset=12 @@ -18070,7 +18070,7 @@ select if i32.const -1 - local.set $2 + local.set $3 br $__inlined_func$~lib/array/Array#indexOf38 end local.get $1 @@ -18090,10 +18090,10 @@ i32.const 43 i32.eq br_if $__inlined_func$~lib/array/Array#indexOf38 - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $while-continue|039 end end @@ -18116,7 +18116,7 @@ local.tee $1 i32.store i32.const 1 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#indexOf41 local.get $1 i32.load offset=12 @@ -18128,7 +18128,7 @@ select if i32.const -1 - local.set $2 + local.set $3 br $__inlined_func$~lib/array/Array#indexOf41 end local.get $1 @@ -18148,10 +18148,10 @@ i32.const 43 i32.eq br_if $__inlined_func$~lib/array/Array#indexOf41 - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $while-continue|042 end end @@ -18174,7 +18174,7 @@ local.tee $1 i32.store i32.const 2 - local.set $2 + local.set $3 block $__inlined_func$~lib/array/Array#indexOf44 local.get $1 i32.load offset=12 @@ -18186,7 +18186,7 @@ select if i32.const -1 - local.set $2 + local.set $3 br $__inlined_func$~lib/array/Array#indexOf44 end local.get $1 @@ -18206,10 +18206,10 @@ i32.const 43 i32.eq br_if $__inlined_func$~lib/array/Array#indexOf44 - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $while-continue|045 end end @@ -21394,7 +21394,7 @@ i32.store local.get $7 i32.load offset=4 - local.set $4 + local.set $3 loop $for-loop|04577 local.get $6 local.get $4 @@ -21813,7 +21813,7 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|078 local.get $0 local.get $3 @@ -21878,7 +21878,7 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|080 local.get $0 local.get $3 @@ -21943,7 +21943,7 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|082 local.get $0 local.get $3 @@ -22005,7 +22005,7 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|084 local.get $0 local.get $3 @@ -22066,7 +22066,7 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|086 local.get $0 local.get $3 @@ -22147,7 +22147,7 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|088 local.get $0 local.get $3 @@ -22240,7 +22240,7 @@ local.set $0 local.get $4 i32.load offset=12 - local.set $2 + local.set $3 loop $for-loop|090 local.get $0 local.get $3 @@ -23018,148 +23018,13 @@ local.get $1 i32.const 70 i32.store - block $1of148 - block $0of149 - block $outOfRange50 - global.get $~argumentsLength - br_table $0of149 $1of148 $outOfRange50 - end - unreachable - end - i32.const 7568 - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 7568 - i32.store - end + local.get $1 + i32.const 95 + i32.store offset=4 + local.get $0 i32.const 0 - local.set $7 - block $__inlined_func$~lib/array/Array#sort - local.get $0 - local.tee $4 - i32.load offset=12 - local.tee $5 - i32.const 1 - i32.le_s - br_if $__inlined_func$~lib/array/Array#sort - local.get $4 - i32.load offset=4 - local.set $3 - local.get $5 - i32.const 2 - i32.eq - if - local.get $3 - f32.load offset=4 - local.set $13 - local.get $3 - f32.load - local.set $11 - i32.const 2 - global.set $~argumentsLength - local.get $13 - local.get $11 - local.get $1 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $11 - f32.store offset=4 - local.get $3 - local.get $13 - f32.store - end - br $__inlined_func$~lib/array/Array#sort - end - local.get $5 - i32.const 256 - i32.lt_s - if - local.get $1 - local.set $2 - loop $for-loop|0105 - local.get $5 - local.get $7 - i32.gt_s - if - local.get $3 - local.get $7 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $13 - local.get $7 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|1 - local.get $1 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - i32.const 2 - global.set $~argumentsLength - local.get $13 - local.get $11 - local.get $2 - i32.load - call_indirect $0 (type $f32_f32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $1 - local.tee $0 - i32.const 1 - i32.sub - local.set $1 - local.get $3 - local.get $0 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $11 - f32.store - br $while-continue|1 - end - end - end - local.get $3 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $13 - f32.store - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0105 - end - end - else - local.get $3 - local.get $5 - local.get $1 - call $~lib/util/sort/weakHeapSort - end - end + local.get $1 + call $~lib/array/Array#__uset global.get $~lib/memory/__stack_pointer call $std/array/Dim#constructor local.tee $1 @@ -23343,64 +23208,11 @@ i32.eqz if i32.const 0 - local.set $1 - i32.const 0 - local.get $4 - i32.load offset=12 - local.tee $0 - local.get $5 - i32.load offset=12 - i32.ne - br_if $__inlined_func$std/array/isArraysEqual - drop - i32.const 1 - local.get $4 - local.get $5 - i32.eq - br_if $__inlined_func$std/array/isArraysEqual - drop - loop $for-loop|026 - local.get $0 - local.get $1 - i32.gt_s - if - local.get $4 - local.get $1 - call $~lib/array/Array#__get - local.tee $11 - local.get $11 - f32.ne - if (result i32) - local.get $5 - local.get $1 - call $~lib/array/Array#__get - local.tee $11 - local.get $11 - f32.ne - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - local.get $4 - local.get $1 - call $~lib/array/Array#__get - local.get $5 - local.get $1 - call $~lib/array/Array#__get - f32.ne - br_if $__inlined_func$std/array/isArraysEqual - drop - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|026 - end - end - i32.const 1 + i32.const 1552 + i32.const 1002 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -23458,11 +23270,11 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of156 - block $0of157 - block $outOfRange58 + block $1of148 + block $0of149 + block $outOfRange50 global.get $~argumentsLength - br_table $0of157 $1of156 $outOfRange58 + br_table $0of149 $1of148 $outOfRange50 end unreachable end @@ -23472,134 +23284,12 @@ i32.const 7824 i32.store end - i32.const 0 - local.set $7 - block $__inlined_func$~lib/array/Array#sort - local.get $0 - local.tee $4 - i32.load offset=12 - local.tee $5 - i32.const 1 - i32.le_s - br_if $__inlined_func$~lib/array/Array#sort - local.get $4 - i32.load offset=4 - local.set $3 - local.get $5 - i32.const 2 - i32.eq - if - local.get $3 - f64.load offset=8 - local.set $14 - local.get $3 - f64.load - local.set $12 - i32.const 2 - global.set $~argumentsLength - local.get $14 - local.get $12 - local.get $1 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $3 - local.get $12 - f64.store offset=8 - local.get $3 - local.get $14 - f64.store - end - br $__inlined_func$~lib/array/Array#sort - end - local.get $5 - i32.const 256 - i32.lt_s - if - local.get $1 - local.set $2 - loop $for-loop|0107 - local.get $5 - local.get $7 - i32.gt_s - if - local.get $3 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $14 - local.get $7 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|1108 - local.get $1 - i32.const 0 - i32.ge_s - if - block $while-break|1109 - local.get $3 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $12 - i32.const 2 - global.set $~argumentsLength - local.get $14 - local.get $12 - local.get $2 - i32.load - call_indirect $0 (type $f64_f64_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1109 - local.get $1 - local.tee $0 - i32.const 1 - i32.sub - local.set $1 - local.get $3 - local.get $0 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $12 - f64.store - br $while-continue|1108 - end - end - end - local.get $3 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $14 - f64.store - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0107 - end - end - else - local.get $3 - local.get $5 - local.get $1 - call $~lib/util/sort/weakHeapSort - end - end + local.get $5 + i32.load offset=4 + local.get $5 + i32.load offset=12 + local.get $1 + call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -23631,7 +23321,7 @@ i32.eq br_if $__inlined_func$std/array/isArraysEqual drop - loop $for-loop|029 + loop $for-loop|026 local.get $0 local.get $1 i32.gt_s @@ -23669,7 +23359,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|029 + br $for-loop|026 end end i32.const 1 @@ -23706,11 +23396,11 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of159 - block $0of160 - block $outOfRange61 + block $1of1102 + block $0of1103 + block $outOfRange104 global.get $~argumentsLength - br_table $0of160 $1of159 $outOfRange61 + br_table $0of1103 $1of1102 $outOfRange104 end unreachable end @@ -24291,7 +23981,7 @@ local.get $4 local.get $5 i32.store - loop $for-loop|062 + loop $for-loop|0105 local.get $0 i32.const 2 i32.lt_s @@ -24315,7 +24005,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|062 + br $for-loop|0105 end end global.get $~lib/memory/__stack_pointer @@ -24414,7 +24104,7 @@ local.get $5 i32.store loop $for-loop|055 - local.get $5 + local.get $4 i32.const 512 i32.lt_s if @@ -24455,7 +24145,7 @@ local.get $4 i32.const 1 i32.add - local.set $5 + local.set $4 br $for-loop|055 end end @@ -24557,7 +24247,7 @@ local.get $1 i32.load offset=12 local.set $0 - loop $for-loop|058 + loop $for-loop|060 local.get $0 local.get $6 i32.gt_s @@ -24599,7 +24289,7 @@ i32.const 1 i32.add local.set $6 - br $for-loop|058 + br $for-loop|060 end end global.get $~lib/memory/__stack_pointer @@ -24639,20 +24329,20 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $folding-inner159 - block $folding-inner060 + block $folding-inner161 + block $folding-inner062 local.get $1 i32.load offset=12 local.tee $0 local.get $5 i32.load offset=12 i32.ne - br_if $folding-inner060 + br_if $folding-inner062 local.get $1 local.get $5 i32.eq - br_if $folding-inner159 - loop $for-loop|062 + br_if $folding-inner161 + loop $for-loop|064 local.get $0 local.get $2 i32.gt_s @@ -24675,15 +24365,15 @@ local.get $3 call $~lib/string/String.__eq i32.eqz - br_if $folding-inner060 + br_if $folding-inner062 local.get $2 i32.const 1 i32.add local.set $2 - br $for-loop|062 + br $for-loop|064 end end - br $folding-inner159 + br $folding-inner161 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -24728,7 +24418,7 @@ call $~lib/array/Array<~lib/string/String>#constructor local.tee $2 i32.store - loop $for-loop|063113 + loop $for-loop|0106 local.get $0 i32.const 400 i32.lt_s @@ -24760,7 +24450,7 @@ local.get $3 i32.const 8848 i32.store - loop $for-loop|064 + loop $for-loop|067 local.get $6 local.get $7 i32.lt_s @@ -24842,7 +24532,7 @@ i32.const 1 i32.add local.set $6 - br $for-loop|064 + br $for-loop|067 end end global.get $~lib/memory/__stack_pointer @@ -24860,7 +24550,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|063113 + br $for-loop|0106 end end global.get $~lib/memory/__stack_pointer @@ -24885,13 +24575,13 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $1of164 - block $0of165 - block $outOfRange66 + block $1of1107 + block $0of1108 + block $outOfRange109 global.get $~argumentsLength i32.const 1 i32.sub - br_table $0of165 $1of164 $outOfRange66 + br_table $0of1108 $1of1107 $outOfRange109 end unreachable end @@ -24958,7 +24648,7 @@ local.set $1 br $__inlined_func$~lib/util/string/joinBooleanArray end - block $folding-inner066 + block $folding-inner069 local.get $2 i32.eqz if @@ -24968,7 +24658,7 @@ i32.load8_u select local.set $1 - br $folding-inner066 + br $folding-inner069 end global.get $~lib/memory/__stack_pointer local.get $2 @@ -25077,7 +24767,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner066 + br $folding-inner069 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25579,15 +25269,15 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0116 - local.get $3 + block $folding-inner0110 + local.get $7 i32.eqz if local.get $5 i32.load8_s call $~lib/util/number/itoa32 local.set $1 - br $folding-inner0116 + br $folding-inner0110 end global.get $~lib/memory/__stack_pointer local.get $7 @@ -25608,8 +25298,7 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0117 - local.get $3 + loop $for-loop|0111 local.get $6 local.get $7 i32.lt_s @@ -25648,7 +25337,7 @@ i32.const 1 i32.add local.set $6 - br $for-loop|0117 + br $for-loop|0111 end end local.get $3 @@ -25671,7 +25360,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0116 + br $folding-inner0110 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25769,15 +25458,15 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0119 - local.get $3 + block $folding-inner0113 + local.get $7 i32.eqz if local.get $5 i32.load16_u call $~lib/util/number/utoa32 local.set $1 - br $folding-inner0119 + br $folding-inner0113 end global.get $~lib/memory/__stack_pointer local.get $7 @@ -25798,8 +25487,7 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0120 - local.get $3 + loop $for-loop|0114 local.get $6 local.get $7 i32.lt_s @@ -25840,7 +25528,7 @@ i32.const 1 i32.add local.set $6 - br $for-loop|0120 + br $for-loop|0114 end end local.get $3 @@ -25865,7 +25553,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0119 + br $folding-inner0113 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -25963,8 +25651,8 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0122 - local.get $3 + block $folding-inner0116 + local.get $7 i32.eqz if block $__inlined_func$~lib/util/number/utoa64 (result i32) @@ -26128,7 +25816,7 @@ local.get $0 end local.set $1 - br $folding-inner0122 + br $folding-inner0116 end global.get $~lib/memory/__stack_pointer local.get $7 @@ -26149,8 +25837,7 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0123 - local.get $3 + loop $for-loop|0117 local.get $6 local.get $7 i32.lt_s @@ -26191,7 +25878,7 @@ i32.const 1 i32.add local.set $6 - br $for-loop|0123 + br $for-loop|0117 end end local.get $3 @@ -26216,7 +25903,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0122 + br $folding-inner0116 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -26314,8 +26001,8 @@ local.set $1 br $__inlined_func$~lib/util/string/joinIntegerArray end - block $folding-inner0125 - local.get $3 + block $folding-inner0119 + local.get $7 i32.eqz if local.get $5 @@ -26500,7 +26187,7 @@ i32.add global.set $~lib/memory/__stack_pointer end - br $folding-inner0125 + br $folding-inner0119 end global.get $~lib/memory/__stack_pointer local.get $7 @@ -26521,8 +26208,7 @@ call $~lib/rt/itcms/__new local.tee $1 i32.store - loop $for-loop|0126 - local.get $3 + loop $for-loop|0120 local.get $6 local.get $7 i32.lt_s @@ -26563,7 +26249,7 @@ i32.const 1 i32.add local.set $6 - br $for-loop|0126 + br $for-loop|0120 end end local.get $3 @@ -26588,7 +26274,7 @@ local.get $0 call $~lib/string/String#substring local.set $1 - br $folding-inner0125 + br $folding-inner0119 end global.get $~lib/memory/__stack_pointer i32.const 4 @@ -26803,7 +26489,7 @@ i32.const 1 i32.shr_u local.set $3 - loop $for-loop|071 + loop $for-loop|076 local.get $5 local.get $10 i32.gt_s @@ -26845,7 +26531,7 @@ i32.const 1 i32.add local.set $10 - br $for-loop|071 + br $for-loop|076 end end global.get $~lib/memory/__stack_pointer @@ -27017,7 +26703,7 @@ i32.load i32.const 1 i32.shr_u - local.set $2 + local.set $3 loop $for-loop|077 local.get $5 local.get $10 @@ -27059,7 +26745,7 @@ local.get $10 i32.const 1 i32.add - local.set $7 + local.set $10 br $for-loop|077 end end @@ -27241,7 +26927,7 @@ i32.load i32.const 1 i32.shr_u - local.set $2 + local.set $3 loop $for-loop|079 local.get $5 local.get $10 @@ -27283,7 +26969,7 @@ local.get $10 i32.const 1 i32.add - local.set $7 + local.set $10 br $for-loop|079 end end @@ -27406,7 +27092,7 @@ end i32.const 0 local.set $0 - loop $for-loop|1130 + loop $for-loop|1124 local.get $0 i32.const 10 i32.lt_s @@ -27428,7 +27114,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1130 + br $for-loop|1124 end end global.get $~lib/memory/__stack_pointer @@ -27503,7 +27189,7 @@ local.get $4 i32.load offset=4 local.set $4 - loop $for-loop|0131 + loop $for-loop|0125 local.get $0 local.get $5 i32.lt_s @@ -27528,7 +27214,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|0131 + br $for-loop|0125 end end global.get $~lib/memory/__stack_pointer @@ -27564,7 +27250,7 @@ call $~lib/rt/itcms/__link i32.const 0 local.set $0 - loop $for-loop|1132 + loop $for-loop|1126 local.get $0 local.get $5 i32.lt_s @@ -27595,7 +27281,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1132 + br $for-loop|1126 end end i32.const 0 @@ -27650,7 +27336,7 @@ end i32.const 0 local.set $0 - loop $for-loop|2133 + loop $for-loop|2127 local.get $0 local.get $4 i32.load offset=12 @@ -27686,7 +27372,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|2133 + br $for-loop|2127 end end global.get $~lib/memory/__stack_pointer @@ -27749,23 +27435,23 @@ i32.const 0 i32.gt_s if - loop $while-continue|071 + loop $while-continue|0114 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|071 + br $while-continue|0114 end end end call $~lib/rt/itcms/step drop - loop $while-continue|1134 + loop $while-continue|1 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|1134 + br $while-continue|1 end end global.get $~lib/rt/itcms/total diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 4c138301c2..a269f66973 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -28739,7 +28739,7 @@ if i32.const 1360 i32.const 1632 - i32.const 1864 + i32.const 1853 i32.const 19 call $~lib/builtins/abort unreachable