diff --git a/std/assembly.d.ts b/std/assembly.d.ts index 5fca2359..b5663fc1 100644 --- a/std/assembly.d.ts +++ b/std/assembly.d.ts @@ -337,14 +337,18 @@ declare class Array { lastIndexOf(searchElement: T, fromIndex?: i32): i32; push(element: T): void; pop(): T; + forEach(callbackfn: (value: T, index: i32, array: Array) => void): void; + map(callbackfn: (value: T, index: i32, array: Array) => U): Array; + filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U; + reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U; shift(): T; some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool; unshift(element: T): i32; slice(from: i32, to?: i32): T[]; splice(start: i32, deleteCount?: i32): void; reverse(): T[]; - sort(comparator?: (a: T, b: T) => i32): T[]; + sort(comparator?: (a: T, b: T) => i32): this; } /** Class representing a C-like array of values of type `T` with limited capabilities. */ diff --git a/std/assembly/array.ts b/std/assembly/array.ts index f9a3430f..9d1cc22d 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -142,6 +142,35 @@ export class Array { return element; } + forEach(callbackfn: (value: T, index: i32, array: Array) => void): void { + var buffer = this.buffer_; + for (let index = 0, toIndex = this.length_; index < toIndex && index < this.length_; ++index) { + callbackfn(loadUnsafe(buffer, index), index, this); + } + } + + map(callbackfn: (value: T, index: i32, array: Array) => U): Array { + var buffer = this.buffer_; + var length = this.length_; + var result = new Array(length); + var resultBuffer = result.buffer_; + for (let index = 0; index < length && index < this.length_; ++index) { + storeUnsafe(resultBuffer, index, callbackfn(loadUnsafe(buffer, index), index, this)); + } + return result; + } + + filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array { + var buffer = this.buffer_; + var length = this.length_; + var result = new Array(); + for (let index = 0; index < length && index < this.length_; ++index) { + let value = loadUnsafe(buffer, index); + if (callbackfn(value, index, this)) result.push(value); + } + return result; + } + reduce( callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U @@ -154,6 +183,18 @@ export class Array { return accum; } + reduceRight( + callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, + initialValue: U + ): U { + var accum = initialValue; + var buffer = this.buffer_; + for (let index: i32 = this.length_ - 1; index >= 0; --index) { + accum = callbackfn(accum, loadUnsafe(buffer, index), index, this); + } + return accum; + } + shift(): T { var length = this.length_; if (length < 1) throw new RangeError("Array is empty"); @@ -245,7 +286,7 @@ export class Array { return this; } - sort(comparator: (a: T, b: T) => i32 = defaultComparator()): Array { + sort(comparator: (a: T, b: T) => i32 = defaultComparator()): this { var length = this.length_; if (length <= 1) return this; var buffer = this.buffer_; diff --git a/std/portable.d.ts b/std/portable.d.ts index c88dac4b..9387f868 100644 --- a/std/portable.d.ts +++ b/std/portable.d.ts @@ -237,14 +237,18 @@ declare class Array { lastIndexOf(searchElement: T, fromIndex?: i32): i32; push(element: T): void; pop(): T; + forEach(callbackfn: (value: T, index: i32, array: Array) => void): void; + map(callbackfn: (value: T, index: i32, array: Array) => U): Array; + filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U; + reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U; shift(): T; some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool; unshift(element: T): i32; slice(from: i32, to?: i32): T[]; splice(start: i32, deleteCount?: i32): void; reverse(): T[]; - sort(comparator?: (a: T, b: T) => i32): T[]; + sort(comparator?: (a: T, b: T) => i32): this; join(delim: string): string; } diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index ac41b8b8..2f05e030 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -4,12 +4,14 @@ (type $ii (func (param i32) (result i32))) (type $iiiv (func (param i32 i32 i32))) (type $iiii (func (param i32 i32 i32) (result i32))) + (type $iiv (func (param i32 i32))) + (type $iiif (func (param i32 i32 i32) (result f32))) + (type $iif (func (param i32 i32) (result f32))) (type $iiiii (func (param i32 i32 i32 i32) (result i32))) (type $F (func (result f64))) (type $Iv (func (param i64))) (type $II (func (param i64) (result i64))) (type $iv (func (param i32))) - (type $iiv (func (param i32 i32))) (type $v (func)) (import "env" "abort" (func $abort (param i32 i32 i32 i32))) (import "JSMath" "random" (func $~lib/math/JSMath.random (result f64))) @@ -21,6 +23,8 @@ (global $std/array/includes (mut i32) (i32.const 0)) (global $std/array/every (mut i32) (i32.const 0)) (global $std/array/some (mut i32) (i32.const 0)) + (global $std/array/newArr (mut i32) (i32.const 0)) + (global $std/array/filteredArr (mut i32) (i32.const 0)) (global $std/array/boolVal (mut i32) (i32.const 0)) (global $~lib/math/random_seeded (mut i32) (i32.const 0)) (global $~lib/math/random_state0 (mut i64) (i64.const 0)) @@ -43,8 +47,8 @@ (global $std/array/randomStringsExpected (mut i32) (i32.const 632)) (global $std/array/randomStrings400 (mut i32) (i32.const 0)) (global $HEAP_BASE i32 (i32.const 800)) - (table 32 32 anyfunc) - (elem (i32.const 0) $start~anonymous|0 $start~anonymous|1 $start~anonymous|2 $start~anonymous|3 $start~anonymous|2 $start~anonymous|5 $start~anonymous|6 $start~anonymous|7 $start~anonymous|8 $start~anonymous|9 $start~anonymous|10 $start~anonymous|11 $start~anonymous|12 $start~anonymous|13 $start~anonymous|14 $start~anonymous|15 $start~anonymous|16 $start~anonymous|16 $start~anonymous|18 $start~anonymous|19 $start~anonymous|20 $start~anonymous|16 $start~anonymous|22 $std/array/assertSortedDefault~anonymous|23 $start~anonymous|24 $start~anonymous|25 $start~anonymous|24 $start~anonymous|25 $start~anonymous|28 $start~anonymous|29 $start~anonymous|30 $start~anonymous|30) + (table 51 51 anyfunc) + (elem (i32.const 0) $start~anonymous|0 $start~anonymous|1 $start~anonymous|2 $start~anonymous|3 $start~anonymous|2 $start~anonymous|5 $start~anonymous|6 $start~anonymous|7 $start~anonymous|8 $start~anonymous|9 $start~anonymous|10 $start~anonymous|11 $start~anonymous|12 $start~anonymous|13 $start~anonymous|14 $start~anonymous|15 $start~anonymous|16 $start~anonymous|17 $start~anonymous|16 $start~anonymous|19 $start~anonymous|20 $start~anonymous|21 $start~anonymous|22 $start~anonymous|23 $start~anonymous|24 $start~anonymous|25 $start~anonymous|26 $start~anonymous|27 $start~anonymous|28 $start~anonymous|28 $start~anonymous|30 $start~anonymous|31 $start~anonymous|32 $start~anonymous|28 $start~anonymous|34 $start~anonymous|28 $start~anonymous|28 $start~anonymous|30 $start~anonymous|31 $start~anonymous|32 $start~anonymous|28 $start~anonymous|34 $std/array/assertSortedDefault~anonymous|42 $start~anonymous|43 $start~anonymous|44 $start~anonymous|43 $start~anonymous|44 $start~anonymous|47 $start~anonymous|48 $start~anonymous|49 $start~anonymous|49) (memory $0 1) (data (i32.const 4) "\0d\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") (data (i32.const 36) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") @@ -2809,7 +2813,7 @@ (call $abort (i32.const 0) (i32.const 4) - (i32.const 188) + (i32.const 229) (i32.const 42) ) (unreachable) @@ -2881,7 +2885,7 @@ (call $abort (i32.const 0) (i32.const 4) - (i32.const 159) + (i32.const 200) (i32.const 20) ) (unreachable) @@ -3750,13 +3754,502 @@ (i32.const 3) ) ) - (func $start~anonymous|16 (; 43 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start~anonymous|16 (; 43 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + ) + (func $~lib/array/Array#forEach (; 44 ;) (type $iiv) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (set_local $3 + (i32.load + (get_local $0) + ) + ) + (set_local $4 + (i32.load offset=4 + (get_local $0) + ) + ) + (loop $continue|0 + (if + (i32.and + (if (result i32) + (tee_local $5 + (i32.lt_s + (get_local $2) + (get_local $4) + ) + ) + (i32.lt_s + (get_local $2) + (i32.load offset=4 + (get_local $0) + ) + ) + (get_local $5) + ) + (i32.const 1) + ) + (block + (set_global $~argc + (i32.const 3) + ) + (call_indirect (type $iiiv) + (i32.load offset=8 + (i32.add + (get_local $3) + (i32.shl + (get_local $2) + (i32.const 2) + ) + ) + ) + (get_local $2) + (get_local $0) + (get_local $1) + ) + (set_local $2 + (i32.add + (get_local $2) + (i32.const 1) + ) + ) + (br $continue|0) + ) + ) + ) + ) + (func $start~anonymous|17 (; 45 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (drop + (call $~lib/array/Array#push + (get_local $2) + (i32.const 100) + ) + ) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + ) + (func $start~anonymous|19 (; 46 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (drop + (call $~lib/array/Array#pop + (get_local $2) + ) + ) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + ) + (func $start~anonymous|20 (; 47 ;) (type $iiif) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (f32.convert_s/i32 + (get_local $0) + ) + ) + (func $~lib/array/Array#map (; 48 ;) (type $iii) (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) + (set_local $3 + (i32.load + (get_local $0) + ) + ) + (set_local $6 + (i32.load + (tee_local $5 + (call $~lib/array/Array#constructor + (i32.const 0) + (tee_local $4 + (i32.load offset=4 + (get_local $0) + ) + ) + ) + ) + ) + ) + (loop $continue|0 + (if + (i32.and + (if (result i32) + (tee_local $7 + (i32.lt_s + (get_local $2) + (get_local $4) + ) + ) + (i32.lt_s + (get_local $2) + (i32.load offset=4 + (get_local $0) + ) + ) + (get_local $7) + ) + (i32.const 1) + ) + (block + (set_global $~argc + (i32.const 3) + ) + (f32.store offset=8 + (i32.add + (get_local $6) + (i32.shl + (get_local $2) + (i32.const 2) + ) + ) + (call_indirect (type $iiif) + (i32.load offset=8 + (i32.add + (get_local $3) + (i32.shl + (get_local $2) + (i32.const 2) + ) + ) + ) + (get_local $2) + (get_local $0) + (get_local $1) + ) + ) + (set_local $2 + (i32.add + (get_local $2) + (i32.const 1) + ) + ) + (br $continue|0) + ) + ) + ) + (get_local $5) + ) + (func $~lib/array/Array#__get (; 49 ;) (type $iif) (param $0 i32) (param $1 i32) (result f32) + (local $2 i32) + (if + (i32.ge_u + (get_local $1) + (i32.shr_u + (i32.load + (tee_local $2 + (i32.load + (get_local $0) + ) + ) + ) + (i32.const 2) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 4) + (i32.const 64) + (i32.const 37) + ) + (unreachable) + ) + ) + (f32.load offset=8 + (i32.add + (get_local $2) + (i32.shl + (get_local $1) + (i32.const 2) + ) + ) + ) + ) + (func $start~anonymous|21 (; 50 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (drop + (call $~lib/array/Array#push + (get_local $2) + (i32.const 100) + ) + ) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + (get_local $0) + ) + (func $~lib/array/Array#map (; 51 ;) (type $iii) (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) + (set_local $3 + (i32.load + (get_local $0) + ) + ) + (set_local $6 + (i32.load + (tee_local $5 + (call $~lib/array/Array#constructor + (i32.const 0) + (tee_local $4 + (i32.load offset=4 + (get_local $0) + ) + ) + ) + ) + ) + ) + (loop $continue|0 + (if + (i32.and + (if (result i32) + (tee_local $7 + (i32.lt_s + (get_local $2) + (get_local $4) + ) + ) + (i32.lt_s + (get_local $2) + (i32.load offset=4 + (get_local $0) + ) + ) + (get_local $7) + ) + (i32.const 1) + ) + (block + (set_global $~argc + (i32.const 3) + ) + (i32.store offset=8 + (i32.add + (get_local $6) + (i32.shl + (get_local $2) + (i32.const 2) + ) + ) + (call_indirect (type $iiii) + (i32.load offset=8 + (i32.add + (get_local $3) + (i32.shl + (get_local $2) + (i32.const 2) + ) + ) + ) + (get_local $2) + (get_local $0) + (get_local $1) + ) + ) + (set_local $2 + (i32.add + (get_local $2) + (i32.const 1) + ) + ) + (br $continue|0) + ) + ) + ) + (get_local $5) + ) + (func $start~anonymous|22 (; 52 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + (get_local $0) + ) + (func $start~anonymous|23 (; 53 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (drop + (call $~lib/array/Array#pop + (get_local $2) + ) + ) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + (get_local $0) + ) + (func $start~anonymous|24 (; 54 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (i32.ge_s + (get_local $0) + (i32.const 2) + ) + ) + (func $~lib/array/Array#filter (; 55 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (set_local $5 + (i32.load + (get_local $0) + ) + ) + (set_local $6 + (i32.load offset=4 + (get_local $0) + ) + ) + (set_global $~argc + (i32.const 0) + ) + (set_local $4 + (call $~lib/array/Array#constructor|trampoline + (i32.const 0) + (i32.const 0) + ) + ) + (loop $continue|0 + (if + (i32.and + (if (result i32) + (tee_local $3 + (i32.lt_s + (get_local $2) + (get_local $6) + ) + ) + (i32.lt_s + (get_local $2) + (i32.load offset=4 + (get_local $0) + ) + ) + (get_local $3) + ) + (i32.const 1) + ) + (block + (set_local $3 + (i32.load offset=8 + (i32.add + (get_local $5) + (i32.shl + (get_local $2) + (i32.const 2) + ) + ) + ) + ) + (if + (block (result i32) + (set_global $~argc + (i32.const 3) + ) + (call_indirect (type $iiii) + (get_local $3) + (get_local $2) + (get_local $0) + (get_local $1) + ) + ) + (drop + (call $~lib/array/Array#push + (get_local $4) + (get_local $3) + ) + ) + ) + (set_local $2 + (i32.add + (get_local $2) + (i32.const 1) + ) + ) + (br $continue|0) + ) + ) + ) + (get_local $4) + ) + (func $start~anonymous|25 (; 56 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (drop + (call $~lib/array/Array#push + (get_local $2) + (i32.const 100) + ) + ) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + (i32.ge_s + (get_local $0) + (i32.const 2) + ) + ) + (func $start~anonymous|26 (; 57 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + (i32.ge_s + (get_local $0) + (i32.const 2) + ) + ) + (func $start~anonymous|27 (; 58 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (drop + (call $~lib/array/Array#pop + (get_local $2) + ) + ) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + (i32.ge_s + (get_local $0) + (i32.const 2) + ) + ) + (func $start~anonymous|28 (; 59 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (i32.add (get_local $0) (get_local $1) ) ) - (func $~lib/array/Array#reduce (; 44 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 60 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3827,7 +4320,7 @@ ) (get_local $4) ) - (func $start~anonymous|18 (; 45 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start~anonymous|30 (; 61 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (i32.and (select (get_local $0) @@ -3840,7 +4333,7 @@ (i32.const 1) ) ) - (func $start~anonymous|19 (; 46 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start~anonymous|31 (; 62 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (i32.and (select (get_local $0) @@ -3853,7 +4346,7 @@ (i32.const 1) ) ) - (func $start~anonymous|20 (; 47 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start~anonymous|32 (; 63 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (drop (call $~lib/array/Array#push (get_local $3) @@ -3865,7 +4358,7 @@ (get_local $1) ) ) - (func $start~anonymous|22 (; 48 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start~anonymous|34 (; 64 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (drop (call $~lib/array/Array#pop (get_local $3) @@ -3876,7 +4369,62 @@ (get_local $1) ) ) - (func $~lib/math/murmurHash3 (; 49 ;) (type $II) (param $0 i64) (result i64) + (func $~lib/array/Array#reduceRight (; 65 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (set_local $4 + (i32.load + (get_local $0) + ) + ) + (set_local $3 + (i32.sub + (i32.load offset=4 + (get_local $0) + ) + (i32.const 1) + ) + ) + (loop $continue|0 + (if + (i32.ge_s + (get_local $3) + (i32.const 0) + ) + (block + (set_global $~argc + (i32.const 4) + ) + (set_local $2 + (call_indirect (type $iiiii) + (get_local $2) + (i32.load offset=8 + (i32.add + (get_local $4) + (i32.shl + (get_local $3) + (i32.const 2) + ) + ) + ) + (get_local $3) + (get_local $0) + (get_local $1) + ) + ) + (set_local $3 + (i32.sub + (get_local $3) + (i32.const 1) + ) + ) + (br $continue|0) + ) + ) + ) + (get_local $2) + ) + (func $~lib/math/murmurHash3 (; 66 ;) (type $II) (param $0 i64) (result i64) (i64.xor (tee_local $0 (i64.mul @@ -3907,7 +4455,7 @@ ) ) ) - (func $~lib/math/NativeMath.seedRandom (; 50 ;) (type $Iv) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 67 ;) (type $Iv) (param $0 i64) (if (i64.eqz (get_local $0) @@ -3936,7 +4484,7 @@ ) ) ) - (func $std/array/createReverseOrderedArray (; 51 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (; 68 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (call $~lib/array/Array#constructor @@ -3981,7 +4529,7 @@ ) (get_local $1) ) - (func $~lib/math/NativeMath.random (; 52 ;) (type $F) (result f64) + (func $~lib/math/NativeMath.random (; 69 ;) (type $F) (result f64) (local $0 i64) (local $1 i64) (if @@ -4050,7 +4598,7 @@ (f64.const 1) ) ) - (func $std/array/createRandomOrderedArray (; 53 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createRandomOrderedArray (; 70 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (set_local $0 (call $~lib/array/Array#constructor @@ -4093,7 +4641,7 @@ ) (get_local $0) ) - (func $std/array/assertSortedDefault~anonymous|23 (; 54 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/assertSortedDefault~anonymous|42 (; 71 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (i32.gt_s (get_local $0) @@ -4105,7 +4653,7 @@ ) ) ) - (func $~lib/internal/array/insertionSort (; 55 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/internal/array/insertionSort (; 72 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4230,10 +4778,10 @@ ) (get_local $0) ) - (func $~lib/allocator/arena/free_memory (; 56 ;) (type $iv) (param $0 i32) + (func $~lib/allocator/arena/free_memory (; 73 ;) (type $iv) (param $0 i32) (nop) ) - (func $~lib/internal/array/weakHeapSort (; 57 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/internal/array/weakHeapSort (; 74 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4654,7 +5202,7 @@ ) (get_local $0) ) - (func $~lib/array/Array#sort (; 58 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 75 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4743,7 +5291,7 @@ ) ) ) - (func $std/array/isSorted (; 59 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted (; 76 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (set_local $2 @@ -4800,7 +5348,7 @@ ) (i32.const 1) ) - (func $std/array/assertSorted (; 60 ;) (type $iiv) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 77 ;) (type $iiv) (param $0 i32) (param $1 i32) (if (i32.eqz (call $std/array/isSorted @@ -4815,20 +5363,20 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 436) + (i32.const 605) (i32.const 2) ) (unreachable) ) ) ) - (func $std/array/assertSortedDefault (; 61 ;) (type $iv) (param $0 i32) + (func $std/array/assertSortedDefault (; 78 ;) (type $iv) (param $0 i32) (call $std/array/assertSorted (get_local $0) - (i32.const 23) + (i32.const 42) ) ) - (func $std/array/isArraysEqual (; 62 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 79 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (if (i32.eqz @@ -4889,7 +5437,7 @@ ) (i32.const 1) ) - (func $std/array/isArraysEqual|trampoline (; 63 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual|trampoline (; 80 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (block $1of1 (block $0of1 (block $oob @@ -4912,19 +5460,19 @@ (get_local $2) ) ) - (func $start~anonymous|24 (; 64 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|43 (; 81 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (get_local $0) (get_local $1) ) ) - (func $start~anonymous|25 (; 65 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|44 (; 82 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (get_local $1) (get_local $0) ) ) - (func $std/array/createReverseOrderedNestedArray (; 66 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedNestedArray (; 83 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (call $~lib/array/Array#constructor @@ -4980,7 +5528,7 @@ ) (get_local $1) ) - (func $start~anonymous|28 (; 67 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|47 (; 84 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (call $~lib/array/Array#__get (get_local $0) @@ -4992,7 +5540,7 @@ ) ) ) - (func $std/array/Proxy#constructor (; 68 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/Proxy#constructor (; 85 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (if (result i32) (get_local $0) @@ -5010,7 +5558,7 @@ ) ) ) - (func $std/array/createReverseOrderedElementsArray (; 69 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedElementsArray (; 86 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (call $~lib/array/Array#constructor @@ -5058,7 +5606,7 @@ ) (get_local $1) ) - (func $start~anonymous|29 (; 70 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|48 (; 87 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (i32.load (get_local $0) @@ -5068,7 +5616,7 @@ ) ) ) - (func $~lib/memory/compare_memory (; 71 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/memory/compare_memory (; 88 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (if (i32.eq (get_local $0) @@ -5128,7 +5676,7 @@ (i32.const 0) ) ) - (func $~lib/string/String.__gt (; 72 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 89 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (if @@ -5212,7 +5760,7 @@ (i32.const 0) ) ) - (func $~lib/string/String.__lt (; 73 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 90 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (if @@ -5296,7 +5844,7 @@ (i32.const 0) ) ) - (func $start~anonymous|30 (; 74 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|49 (; 91 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (call $~lib/string/String.__gt (get_local $0) @@ -5308,7 +5856,7 @@ ) ) ) - (func $~lib/string/String.__eq (; 75 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 92 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (if (i32.eq @@ -5370,7 +5918,7 @@ ) ) ) - (func $~lib/string/String.__ne (; 76 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 93 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.eqz (call $~lib/string/String.__eq (get_local $0) @@ -5378,7 +5926,7 @@ ) ) ) - (func $std/array/isArraysEqual (; 77 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 94 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (if (i32.eqz @@ -5439,7 +5987,7 @@ ) (i32.const 1) ) - (func $std/array/isArraysEqual|trampoline (; 78 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual|trampoline (; 95 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (block $1of1 (block $0of1 (block $oob @@ -5462,7 +6010,7 @@ (get_local $2) ) ) - (func $~lib/internal/string/allocate (; 79 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/internal/string/allocate (; 96 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (if (i32.eqz @@ -5509,7 +6057,7 @@ ) (get_local $1) ) - (func $~lib/string/String#charAt (; 80 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#charAt (; 97 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (if (i32.eqz @@ -5554,7 +6102,7 @@ ) (get_local $2) ) - (func $~lib/string/String#concat (; 81 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 98 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5641,7 +6189,7 @@ ) (get_local $2) ) - (func $~lib/string/String.__concat (; 82 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 99 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (if (i32.eqz (get_local $0) @@ -5655,7 +6203,7 @@ (get_local $1) ) ) - (func $std/array/createRandomString (; 83 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 100 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (set_local $1 @@ -5700,7 +6248,7 @@ ) (get_local $1) ) - (func $std/array/createRandomStringArray (; 84 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createRandomStringArray (; 101 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (set_local $1 (call $~lib/array/Array#constructor @@ -5744,7 +6292,7 @@ ) (get_local $1) ) - (func $start (; 85 ;) (type $v) + (func $start (; 102 ;) (type $v) (set_global $~lib/allocator/arena/startOffset (i32.and (i32.add @@ -7787,11 +8335,11 @@ ) ) (set_global $std/array/i - (call $~lib/array/Array#reduce - (get_global $std/array/arr) - (i32.const 16) - (i32.const 0) - ) + (i32.const 0) + ) + (call $~lib/array/Array#forEach + (get_global $std/array/arr) + (i32.const 16) ) (if (i32.ne @@ -7802,65 +8350,24 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 318) + (i32.const 319) (i32.const 0) ) (unreachable) ) ) (set_global $std/array/i - (call $~lib/array/Array#reduce - (get_global $std/array/arr) - (i32.const 17) - (i32.const 4) - ) + (i32.const 0) + ) + (call $~lib/array/Array#forEach + (get_global $std/array/arr) + (i32.const 17) ) (if (i32.ne (get_global $std/array/i) - (i32.const 10) + (i32.const 6) ) - (block - (call $abort - (i32.const 0) - (i32.const 96) - (i32.const 322) - (i32.const 0) - ) - (unreachable) - ) - ) - (set_global $std/array/boolVal - (call $~lib/array/Array#reduce - (get_global $std/array/arr) - (i32.const 18) - (i32.const 0) - ) - ) - (if - (i32.ne - (get_global $std/array/boolVal) - (i32.const 1) - ) - (block - (call $abort - (i32.const 0) - (i32.const 96) - (i32.const 325) - (i32.const 0) - ) - (unreachable) - ) - ) - (set_global $std/array/boolVal - (call $~lib/array/Array#reduce - (get_global $std/array/arr) - (i32.const 19) - (i32.const 0) - ) - ) - (if - (get_global $std/array/boolVal) (block (call $abort (i32.const 0) @@ -7871,28 +8378,6 @@ (unreachable) ) ) - (set_global $std/array/i - (call $~lib/array/Array#reduce - (get_global $std/array/arr) - (i32.const 20) - (i32.const 0) - ) - ) - (if - (i32.ne - (get_global $std/array/i) - (i32.const 6) - ) - (block - (call $abort - (i32.const 0) - (i32.const 96) - (i32.const 336) - (i32.const 0) - ) - (unreachable) - ) - ) (if (i32.ne (call $~lib/array/Array#get:length @@ -7904,29 +8389,29 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 337) + (i32.const 329) (i32.const 0) ) (unreachable) ) ) (set_global $std/array/i - (call $~lib/array/Array#reduce - (get_global $std/array/arr) - (i32.const 21) - (i32.const 0) - ) + (i32.const 0) + ) + (call $~lib/array/Array#forEach + (get_global $std/array/arr) + (i32.const 18) ) (if (i32.ne (get_global $std/array/i) - (i32.const 10) + (i32.const 406) ) (block (call $abort (i32.const 0) (i32.const 96) - (i32.const 339) + (i32.const 332) (i32.const 0) ) (unreachable) @@ -7953,11 +8438,11 @@ ) ) (set_global $std/array/i - (call $~lib/array/Array#reduce - (get_global $std/array/arr) - (i32.const 22) - (i32.const 0) - ) + (i32.const 0) + ) + (call $~lib/array/Array#forEach + (get_global $std/array/arr) + (i32.const 19) ) (if (i32.ne @@ -7968,7 +8453,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 352) + (i32.const 346) (i32.const 0) ) (unreachable) @@ -7985,12 +8470,812 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 353) + (i32.const 347) (i32.const 0) ) (unreachable) ) ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 2) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 3) + ) + ) + (set_global $std/array/newArr + (call $~lib/array/Array#map + (get_global $std/array/arr) + (i32.const 20) + ) + ) + (if + (i32.ne + (call $~lib/array/Array#get:length + (get_global $std/array/newArr) + ) + (i32.const 4) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 356) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (f32.ne + (call $~lib/array/Array#__get + (get_global $std/array/newArr) + (i32.const 0) + ) + (f32.convert_s/i32 + (call $~lib/array/Array#__get + (get_global $std/array/arr) + (i32.const 0) + ) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 357) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (i32.const 0) + ) + (drop + (call $~lib/array/Array#map + (get_global $std/array/arr) + (i32.const 21) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 6) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 366) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.ne + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 8) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 367) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (i32.const 0) + ) + (drop + (call $~lib/array/Array#map + (get_global $std/array/arr) + (i32.const 22) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 406) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 374) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (set_global $std/array/i + (i32.const 0) + ) + (drop + (call $~lib/array/Array#map + (get_global $std/array/arr) + (i32.const 23) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 1) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 389) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.ne + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 2) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 390) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 2) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 3) + ) + ) + (set_global $std/array/filteredArr + (call $~lib/array/Array#filter + (get_global $std/array/arr) + (i32.const 24) + ) + ) + (if + (i32.ne + (call $~lib/array/Array#get:length + (get_global $std/array/filteredArr) + ) + (i32.const 2) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 398) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (i32.const 0) + ) + (drop + (call $~lib/array/Array#filter + (get_global $std/array/arr) + (i32.const 25) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 6) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 407) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.ne + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 8) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 408) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (i32.const 0) + ) + (drop + (call $~lib/array/Array#filter + (get_global $std/array/arr) + (i32.const 26) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 406) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 415) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (set_global $std/array/i + (i32.const 0) + ) + (drop + (call $~lib/array/Array#filter + (get_global $std/array/arr) + (i32.const 27) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 1) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 430) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.ne + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 2) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 431) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 2) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 3) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduce + (get_global $std/array/arr) + (i32.const 28) + (i32.const 0) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 6) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 439) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduce + (get_global $std/array/arr) + (i32.const 29) + (i32.const 4) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 10) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 443) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/boolVal + (call $~lib/array/Array#reduce + (get_global $std/array/arr) + (i32.const 30) + (i32.const 0) + ) + ) + (if + (i32.ne + (get_global $std/array/boolVal) + (i32.const 1) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 446) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/boolVal + (call $~lib/array/Array#reduce + (get_global $std/array/arr) + (i32.const 31) + (i32.const 0) + ) + ) + (if + (get_global $std/array/boolVal) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 449) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduce + (get_global $std/array/arr) + (i32.const 32) + (i32.const 0) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 6) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 457) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.ne + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 8) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 458) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduce + (get_global $std/array/arr) + (i32.const 33) + (i32.const 0) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 10) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 460) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduce + (get_global $std/array/arr) + (i32.const 34) + (i32.const 0) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 1) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 473) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.ne + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 2) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 474) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 2) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 3) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduceRight + (get_global $std/array/arr) + (i32.const 35) + (i32.const 0) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 6) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 482) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduceRight + (get_global $std/array/arr) + (i32.const 36) + (i32.const 4) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 10) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 486) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/boolVal + (call $~lib/array/Array#reduceRight + (get_global $std/array/arr) + (i32.const 37) + (i32.const 0) + ) + ) + (if + (i32.ne + (get_global $std/array/boolVal) + (i32.const 1) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 489) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/boolVal + (call $~lib/array/Array#reduceRight + (get_global $std/array/arr) + (i32.const 38) + (i32.const 0) + ) + ) + (if + (get_global $std/array/boolVal) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 492) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduceRight + (get_global $std/array/arr) + (i32.const 39) + (i32.const 0) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 6) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 500) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.ne + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 8) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 501) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduceRight + (get_global $std/array/arr) + (i32.const 40) + (i32.const 0) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 10) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 503) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduceRight + (get_global $std/array/arr) + (i32.const 41) + (i32.const 0) + ) + ) + (if + (i32.ne + (get_global $std/array/i) + (i32.const 6) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 516) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 517) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 0) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 1) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 2) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 3) + ) + ) (call $~lib/math/NativeMath.seedRandom (i64.reinterpret/f64 (call $~lib/math/JSMath.random) @@ -8044,7 +9329,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 462) + (i32.const 631) (i32.const 0) ) (unreachable) @@ -8070,7 +9355,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 465) + (i32.const 634) (i32.const 0) ) (unreachable) @@ -8096,7 +9381,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 468) + (i32.const 637) (i32.const 0) ) (unreachable) @@ -8117,7 +9402,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 471) + (i32.const 640) (i32.const 0) ) (unreachable) @@ -8138,7 +9423,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 474) + (i32.const 643) (i32.const 0) ) (unreachable) @@ -8159,7 +9444,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 477) + (i32.const 646) (i32.const 0) ) (unreachable) @@ -8180,7 +9465,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 480) + (i32.const 649) (i32.const 0) ) (unreachable) @@ -8201,19 +9486,19 @@ ) (call $std/array/assertSorted (get_global $std/array/randomized64) - (i32.const 24) + (i32.const 43) ) (call $std/array/assertSorted (get_global $std/array/randomized64) - (i32.const 25) + (i32.const 44) ) (call $std/array/assertSorted (get_global $std/array/randomized257) - (i32.const 26) + (i32.const 45) ) (call $std/array/assertSorted (get_global $std/array/randomized257) - (i32.const 27) + (i32.const 46) ) (set_global $std/array/reversedNested512 (call $std/array/createReverseOrderedNestedArray @@ -8222,7 +9507,7 @@ ) (call $std/array/assertSorted (get_global $std/array/reversedNested512) - (i32.const 28) + (i32.const 47) ) (set_global $std/array/reversedElements512 (call $std/array/createReverseOrderedElementsArray @@ -8231,11 +9516,11 @@ ) (call $std/array/assertSorted (get_global $std/array/reversedElements512) - (i32.const 29) + (i32.const 48) ) (call $std/array/assertSorted (get_global $std/array/randomStringsActual) - (i32.const 30) + (i32.const 49) ) (if (block (result i32) @@ -8254,7 +9539,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 509) + (i32.const 678) (i32.const 0) ) (unreachable) @@ -8267,7 +9552,7 @@ ) (call $std/array/assertSorted (get_global $std/array/randomStrings400) - (i32.const 31) + (i32.const 50) ) ) ) diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index 17411e18..2f16f4f7 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -312,6 +312,127 @@ assert(arr.length == 2); arr.push(2); arr.push(3); +// Array#forEach /////////////////////////////////////////////////////////////////////////////////// + +i = 0; +arr.forEach((value: i32, index: i32, array: Array): void => { i += value; }); +assert(i == 6); + +// Test side effect push +i = 0; +arr.forEach((value: i32, index: i32, array: Array): void => { + array.push(100); //push side effect should not affect this method by spec + i += value; +}); +// array should be changed, but this method result should be calculated for old array length +assert(i == 6); +assert(arr.length == 8); +i = 0; +arr.forEach((value: i32, index: i32, array: Array): void => { i += value; }); +assert(i == 406); + +arr.pop(); +arr.pop(); +arr.pop(); +arr.pop(); + +// Test side effect pop +i = 0; +arr.forEach((value: i32, index: i32, array: Array): void => { + array.pop(); //poped items shouldn't be looked up, and we shouldn't go out of bounds + i += value; +}); +// only 2 first items was looked up, since last 2 was removed by .pop() +assert(i == 1); +assert(arr.length == 2); + +arr.push(2); +arr.push(3); + + +// Array#map /////////////////////////////////////////////////////////////////////////////////////// + +var newArr: f32[] = arr.map((value: i32, index: i32, array: Array): f32 => value); +assert(newArr.length == 4); +assert(newArr[0] == arr[0]); + +// Test side effect push +i = 0; +arr.map((value: i32, index: i32, array: Array): i32 => { + array.push(100); //push side effect should not affect this method by spec + i += value; + return value; +}); +assert(i == 6); +assert(arr.length == 8); + +i = 0; +arr.map((value: i32, index: i32, array: Array): i32 => { + i += value; + return value; +}); +assert(i == 406); + +arr.pop(); +arr.pop(); +arr.pop(); +arr.pop(); + +// Test side effect pop +i = 0; +arr.map((value: i32, index: i32, array: Array): i32 => { + array.pop(); //poped items shouldn't be looked up, and we shouldn't go out of bounds + i += value; + return value; +}); +// only 2 first items was looked up, since last 2 was removed by .pop() +assert(i == 1); +assert(arr.length == 2); + +arr.push(2); +arr.push(3); + +// Array#filter //////////////////////////////////////////////////////////////////////////////////// + +var filteredArr: i32[] = arr.filter((value: i32, index: i32, array: Array): bool => value >= 2); +assert(filteredArr.length == 2); + +// Test side effect push +i = 0; +arr.filter((value: i32, index: i32, array: Array): bool => { + array.push(100); //push side effect should not affect this method by spec + i += value; + return value >= 2; +}); +assert(i == 6); +assert(arr.length == 8); + +i = 0; +arr.filter((value: i32, index: i32, array: Array): bool => { + i += value; + return value >= 2; +}); +assert(i == 406); + +arr.pop(); +arr.pop(); +arr.pop(); +arr.pop(); + +// Test side effect pop +i = 0; +arr.filter((value: i32, index: i32, array: Array): bool => { + array.pop(); //poped items shouldn't be looked up, and we shouldn't go out of bounds + i += value; + return value >= 2; +}); +// only 2 first items was looked up, since last 2 was removed by .pop() +assert(i == 1); +assert(arr.length == 2); + +arr.push(2); +arr.push(3); + // Array#reduce //////////////////////////////////////////////////////////////////////////////////// i = arr.reduce(((prev: i32, current: i32, index: i32, array: Array): i32 => prev + current), 0); @@ -352,6 +473,54 @@ i = arr.reduce(((prev: i32, current: i32, index: i32, array: Array): i assert(i == 1); assert(arr.length == 2); +arr.push(2); +arr.push(3); + +// Array#reduceRight /////////////////////////////////////////////////////////////////////////////// + +i = arr.reduceRight(((prev: i32, current: i32, index: i32, array: Array): i32 => prev + current), 0); +assert(i == 6); + +// init value +i = arr.reduceRight(((prev: i32, current: i32, index: i32, array: Array): i32 => prev + current), 4); +assert(i == 10); + +boolVal = arr.reduceRight(((prev: bool, current: i32, index: i32, array: Array): bool => prev || current > 2), false); +assert(boolVal == true); + +boolVal = arr.reduceRight(((prev: bool, current: i32, index: i32, array: Array): bool => prev || current > 100), false); +assert(boolVal == false); + +// Test side effect push +i = arr.reduceRight(((prev: i32, current: i32, index: i32, array: Array): i32 => { + array.push(1); // push side effect should not affect this method by spec + return prev + current; +}), 0); +// array should be changed, but this method result should be calculated for old array length +assert(i == 6); +assert(arr.length == 8); +i = arr.reduceRight(((prev: i32, current: i32, index: i32, array: Array): i32 => prev + current), 0); +assert(i == 10); + +arr.pop(); +arr.pop(); +arr.pop(); +arr.pop(); + +// Test side effect pop +i = arr.reduceRight(((prev: i32, current: i32, index: i32, array: Array): i32 => { + array.pop(); // poped items should be reduced + return prev + current; +}), 0); + +assert(i == 6); +assert(arr.length == 0); + +arr.push(0); +arr.push(1); +arr.push(2); +arr.push(3); + // Array#sort ////////////////////////////////////////////////////////////////////////////////////// // Checks if an array is properly sorted diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index e92db7c5..bbbc0771 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -5,12 +5,14 @@ (type $ii (func (param i32) (result i32))) (type $iiiv (func (param i32 i32 i32))) (type $iiii (func (param i32 i32 i32) (result i32))) + (type $iiv (func (param i32 i32))) + (type $iiif (func (param i32 i32 i32) (result f32))) + (type $iif (func (param i32 i32) (result f32))) (type $iiiii (func (param i32 i32 i32 i32) (result i32))) (type $F (func (result f64))) (type $Iv (func (param i64))) (type $II (func (param i64) (result i64))) (type $iv (func (param i32))) - (type $iiv (func (param i32 i32))) (type $v (func)) (import "env" "abort" (func $abort (param i32 i32 i32 i32))) (import "JSMath" "random" (func $~lib/math/JSMath.random (result f64))) @@ -28,6 +30,8 @@ (global $std/array/includes (mut i32) (i32.const 0)) (global $std/array/every (mut i32) (i32.const 0)) (global $std/array/some (mut i32) (i32.const 0)) + (global $std/array/newArr (mut i32) (i32.const 0)) + (global $std/array/filteredArr (mut i32) (i32.const 0)) (global $std/array/boolVal (mut i32) (i32.const 0)) (global $~lib/math/random_seeded (mut i32) (i32.const 0)) (global $~lib/math/random_state0 (mut i64) (i64.const 0)) @@ -54,8 +58,8 @@ (global $~lib/internal/string/MAX_LENGTH i32 (i32.const 536870910)) (global $std/array/randomStrings400 (mut i32) (i32.const 0)) (global $HEAP_BASE i32 (i32.const 800)) - (table 32 32 anyfunc) - (elem (i32.const 0) $start~anonymous|0 $start~anonymous|1 $start~anonymous|2 $start~anonymous|3 $start~anonymous|4 $start~anonymous|5 $start~anonymous|6 $start~anonymous|7 $start~anonymous|8 $start~anonymous|9 $start~anonymous|10 $start~anonymous|11 $start~anonymous|12 $start~anonymous|13 $start~anonymous|14 $start~anonymous|15 $start~anonymous|16 $start~anonymous|17 $start~anonymous|18 $start~anonymous|19 $start~anonymous|20 $start~anonymous|21 $start~anonymous|22 $std/array/assertSortedDefault~anonymous|23 $start~anonymous|24 $start~anonymous|25 $start~anonymous|26 $start~anonymous|27 $start~anonymous|28 $start~anonymous|29 $start~anonymous|30 $start~anonymous|31) + (table 51 51 anyfunc) + (elem (i32.const 0) $start~anonymous|0 $start~anonymous|1 $start~anonymous|2 $start~anonymous|3 $start~anonymous|4 $start~anonymous|5 $start~anonymous|6 $start~anonymous|7 $start~anonymous|8 $start~anonymous|9 $start~anonymous|10 $start~anonymous|11 $start~anonymous|12 $start~anonymous|13 $start~anonymous|14 $start~anonymous|15 $start~anonymous|16 $start~anonymous|17 $start~anonymous|18 $start~anonymous|19 $start~anonymous|20 $start~anonymous|21 $start~anonymous|22 $start~anonymous|23 $start~anonymous|24 $start~anonymous|25 $start~anonymous|26 $start~anonymous|27 $start~anonymous|28 $start~anonymous|29 $start~anonymous|30 $start~anonymous|31 $start~anonymous|32 $start~anonymous|33 $start~anonymous|34 $start~anonymous|35 $start~anonymous|36 $start~anonymous|37 $start~anonymous|38 $start~anonymous|39 $start~anonymous|40 $start~anonymous|41 $std/array/assertSortedDefault~anonymous|42 $start~anonymous|43 $start~anonymous|44 $start~anonymous|45 $start~anonymous|46 $start~anonymous|47 $start~anonymous|48 $start~anonymous|49 $start~anonymous|50) (memory $0 1) (data (i32.const 4) "\0d\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") (data (i32.const 36) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") @@ -3214,7 +3218,7 @@ (call $abort (i32.const 0) (i32.const 4) - (i32.const 188) + (i32.const 229) (i32.const 42) ) (unreachable) @@ -3314,7 +3318,7 @@ (call $abort (i32.const 0) (i32.const 4) - (i32.const 159) + (i32.const 200) (i32.const 20) ) (unreachable) @@ -4427,13 +4431,726 @@ ) ) ) - (func $start~anonymous|16 (; 44 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start~anonymous|16 (; 44 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + ) + (func $~lib/array/Array#forEach (; 45 ;) (type $iiv) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (set_local $2 + (i32.load + (get_local $0) + ) + ) + (block $break|0 + (block + (set_local $3 + (i32.const 0) + ) + (set_local $4 + (i32.load offset=4 + (get_local $0) + ) + ) + ) + (loop $continue|0 + (if + (i32.and + (if (result i32) + (tee_local $5 + (i32.lt_s + (get_local $3) + (get_local $4) + ) + ) + (i32.lt_s + (get_local $3) + (i32.load offset=4 + (get_local $0) + ) + ) + (get_local $5) + ) + (i32.const 1) + ) + (block + (block + (block + (set_global $~argc + (i32.const 3) + ) + (call_indirect (type $iiiv) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.10 (result i32) + (set_local $5 + (get_local $2) + ) + (set_local $6 + (get_local $3) + ) + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.10 + (i32.load offset=8 + (i32.add + (get_local $5) + (i32.shl + (get_local $6) + (i32.const 2) + ) + ) + ) + ) + ) + (get_local $3) + (get_local $0) + (get_local $1) + ) + ) + ) + (set_local $3 + (i32.add + (get_local $3) + (i32.const 1) + ) + ) + (br $continue|0) + ) + ) + ) + ) + ) + (func $start~anonymous|17 (; 46 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (drop + (call $~lib/array/Array#push + (get_local $2) + (i32.const 100) + ) + ) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + ) + (func $start~anonymous|18 (; 47 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + ) + (func $start~anonymous|19 (; 48 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (drop + (call $~lib/array/Array#pop + (get_local $2) + ) + ) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + ) + (func $start~anonymous|20 (; 49 ;) (type $iiif) (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + (f32.convert_s/i32 + (get_local $0) + ) + ) + (func $~lib/array/Array#constructor (; 50 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (block + (nop) + (if + (i32.gt_u + (get_local $1) + (i32.const 268435454) + ) + (block + (call $abort + (i32.const 0) + (i32.const 4) + (i32.const 23) + (i32.const 39) + ) + (unreachable) + ) + ) + (i32.store + (tee_local $0 + (if (result i32) + (get_local $0) + (get_local $0) + (tee_local $0 + (block (result i32) + (set_local $2 + (call $~lib/allocator/arena/allocate_memory + (i32.const 8) + ) + ) + (i32.store + (get_local $2) + (i32.const 0) + ) + (i32.store offset=4 + (get_local $2) + (i32.const 0) + ) + (get_local $2) + ) + ) + ) + ) + (call $~lib/internal/arraybuffer/allocUnsafe + (i32.shl + (get_local $1) + (i32.const 2) + ) + ) + ) + (i32.store offset=4 + (get_local $0) + (get_local $1) + ) + ) + (get_local $0) + ) + (func $~lib/array/Array#map (; 51 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f32) + (local $10 i32) + (local $11 i32) + (set_local $2 + (i32.load + (get_local $0) + ) + ) + (set_local $3 + (i32.load offset=4 + (get_local $0) + ) + ) + (set_local $4 + (call $~lib/array/Array#constructor + (i32.const 0) + (get_local $3) + ) + ) + (set_local $5 + (i32.load + (get_local $4) + ) + ) + (block $break|0 + (set_local $6 + (i32.const 0) + ) + (loop $continue|0 + (if + (i32.and + (if (result i32) + (tee_local $7 + (i32.lt_s + (get_local $6) + (get_local $3) + ) + ) + (i32.lt_s + (get_local $6) + (i32.load offset=4 + (get_local $0) + ) + ) + (get_local $7) + ) + (i32.const 1) + ) + (block + (block + (block $~lib/internal/arraybuffer/storeUnsafe|inlined.0 + (set_local $7 + (get_local $5) + ) + (set_local $8 + (get_local $6) + ) + (set_local $9 + (block (result f32) + (set_global $~argc + (i32.const 3) + ) + (call_indirect (type $iiif) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.11 (result i32) + (set_local $10 + (get_local $2) + ) + (set_local $11 + (get_local $6) + ) + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.11 + (i32.load offset=8 + (i32.add + (get_local $10) + (i32.shl + (get_local $11) + (i32.const 2) + ) + ) + ) + ) + ) + (get_local $6) + (get_local $0) + (get_local $1) + ) + ) + ) + (f32.store offset=8 + (i32.add + (get_local $7) + (i32.shl + (get_local $8) + (i32.const 2) + ) + ) + (get_local $9) + ) + ) + ) + (set_local $6 + (i32.add + (get_local $6) + (i32.const 1) + ) + ) + (br $continue|0) + ) + ) + ) + ) + (return + (get_local $4) + ) + ) + (func $~lib/array/Array#get:length (; 52 ;) (type $ii) (param $0 i32) (result i32) + (return + (i32.load offset=4 + (get_local $0) + ) + ) + ) + (func $~lib/array/Array#__get (; 53 ;) (type $iif) (param $0 i32) (param $1 i32) (result f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (set_local $2 + (i32.load + (get_local $0) + ) + ) + (set_local $3 + (i32.shr_u + (i32.load + (get_local $2) + ) + (i32.const 2) + ) + ) + (if + (i32.ge_u + (get_local $1) + (get_local $3) + ) + (block + (call $abort + (i32.const 0) + (i32.const 4) + (i32.const 64) + (i32.const 37) + ) + (unreachable) + ) + ) + (return + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.0 (result f32) + (set_local $4 + (get_local $2) + ) + (set_local $5 + (get_local $1) + ) + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.0 + (f32.load offset=8 + (i32.add + (get_local $4) + (i32.shl + (get_local $5) + (i32.const 2) + ) + ) + ) + ) + ) + ) + ) + (func $start~anonymous|21 (; 54 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (drop + (call $~lib/array/Array#push + (get_local $2) + (i32.const 100) + ) + ) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + (return + (get_local $0) + ) + ) + (func $~lib/array/Array#map (; 55 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (set_local $2 + (i32.load + (get_local $0) + ) + ) + (set_local $3 + (i32.load offset=4 + (get_local $0) + ) + ) + (set_local $4 + (call $~lib/array/Array#constructor + (i32.const 0) + (get_local $3) + ) + ) + (set_local $5 + (i32.load + (get_local $4) + ) + ) + (block $break|0 + (set_local $6 + (i32.const 0) + ) + (loop $continue|0 + (if + (i32.and + (if (result i32) + (tee_local $7 + (i32.lt_s + (get_local $6) + (get_local $3) + ) + ) + (i32.lt_s + (get_local $6) + (i32.load offset=4 + (get_local $0) + ) + ) + (get_local $7) + ) + (i32.const 1) + ) + (block + (block + (block $~lib/internal/arraybuffer/storeUnsafe|inlined.6 + (set_local $7 + (get_local $5) + ) + (set_local $8 + (get_local $6) + ) + (set_local $9 + (block (result i32) + (set_global $~argc + (i32.const 3) + ) + (call_indirect (type $iiii) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.12 (result i32) + (set_local $10 + (get_local $2) + ) + (set_local $11 + (get_local $6) + ) + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.12 + (i32.load offset=8 + (i32.add + (get_local $10) + (i32.shl + (get_local $11) + (i32.const 2) + ) + ) + ) + ) + ) + (get_local $6) + (get_local $0) + (get_local $1) + ) + ) + ) + (i32.store offset=8 + (i32.add + (get_local $7) + (i32.shl + (get_local $8) + (i32.const 2) + ) + ) + (get_local $9) + ) + ) + ) + (set_local $6 + (i32.add + (get_local $6) + (i32.const 1) + ) + ) + (br $continue|0) + ) + ) + ) + ) + (return + (get_local $4) + ) + ) + (func $start~anonymous|22 (; 56 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + (return + (get_local $0) + ) + ) + (func $start~anonymous|23 (; 57 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (drop + (call $~lib/array/Array#pop + (get_local $2) + ) + ) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + (return + (get_local $0) + ) + ) + (func $start~anonymous|24 (; 58 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (i32.ge_s + (get_local $0) + (i32.const 2) + ) + ) + (func $~lib/array/Array#filter (; 59 ;) (type $iii) (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) + (set_local $2 + (i32.load + (get_local $0) + ) + ) + (set_local $3 + (i32.load offset=4 + (get_local $0) + ) + ) + (set_local $4 + (block (result i32) + (set_global $~argc + (i32.const 0) + ) + (call $~lib/array/Array#constructor|trampoline + (i32.const 0) + (i32.const 0) + ) + ) + ) + (block $break|0 + (set_local $5 + (i32.const 0) + ) + (loop $continue|0 + (if + (i32.and + (if (result i32) + (tee_local $6 + (i32.lt_s + (get_local $5) + (get_local $3) + ) + ) + (i32.lt_s + (get_local $5) + (i32.load offset=4 + (get_local $0) + ) + ) + (get_local $6) + ) + (i32.const 1) + ) + (block + (block + (set_local $7 + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.13 (result i32) + (set_local $6 + (get_local $2) + ) + (set_local $7 + (get_local $5) + ) + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.13 + (i32.load offset=8 + (i32.add + (get_local $6) + (i32.shl + (get_local $7) + (i32.const 2) + ) + ) + ) + ) + ) + ) + (if + (block (result i32) + (set_global $~argc + (i32.const 3) + ) + (call_indirect (type $iiii) + (get_local $7) + (get_local $5) + (get_local $0) + (get_local $1) + ) + ) + (drop + (call $~lib/array/Array#push + (get_local $4) + (get_local $7) + ) + ) + ) + ) + (set_local $5 + (i32.add + (get_local $5) + (i32.const 1) + ) + ) + (br $continue|0) + ) + ) + ) + ) + (return + (get_local $4) + ) + ) + (func $start~anonymous|25 (; 60 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (drop + (call $~lib/array/Array#push + (get_local $2) + (i32.const 100) + ) + ) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + (return + (i32.ge_s + (get_local $0) + (i32.const 2) + ) + ) + ) + (func $start~anonymous|26 (; 61 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + (return + (i32.ge_s + (get_local $0) + (i32.const 2) + ) + ) + ) + (func $start~anonymous|27 (; 62 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (drop + (call $~lib/array/Array#pop + (get_local $2) + ) + ) + (set_global $std/array/i + (i32.add + (get_global $std/array/i) + (get_local $0) + ) + ) + (return + (i32.ge_s + (get_local $0) + (i32.const 2) + ) + ) + ) + (func $start~anonymous|28 (; 63 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (i32.add (get_local $0) (get_local $1) ) ) - (func $~lib/array/Array#reduce (; 45 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 64 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4488,14 +5205,14 @@ ) (call_indirect (type $iiiii) (get_local $3) - (block $~lib/internal/arraybuffer/loadUnsafe|inlined.10 (result i32) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.14 (result i32) (set_local $7 (get_local $4) ) (set_local $8 (get_local $5) ) - (br $~lib/internal/arraybuffer/loadUnsafe|inlined.10 + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.14 (i32.load offset=8 (i32.add (get_local $7) @@ -4529,13 +5246,13 @@ (get_local $3) ) ) - (func $start~anonymous|17 (; 46 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start~anonymous|29 (; 65 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (i32.add (get_local $0) (get_local $1) ) ) - (func $start~anonymous|18 (; 47 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start~anonymous|30 (; 66 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (i32.and (if (result i32) (get_local $0) @@ -4548,7 +5265,7 @@ (i32.const 1) ) ) - (func $~lib/array/Array#reduce (; 48 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 67 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4603,14 +5320,14 @@ ) (call_indirect (type $iiiii) (get_local $3) - (block $~lib/internal/arraybuffer/loadUnsafe|inlined.11 (result i32) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.15 (result i32) (set_local $7 (get_local $4) ) (set_local $8 (get_local $5) ) - (br $~lib/internal/arraybuffer/loadUnsafe|inlined.11 + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.15 (i32.load offset=8 (i32.add (get_local $7) @@ -4644,7 +5361,7 @@ (get_local $3) ) ) - (func $start~anonymous|19 (; 49 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start~anonymous|31 (; 68 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (i32.and (if (result i32) (get_local $0) @@ -4657,7 +5374,7 @@ (i32.const 1) ) ) - (func $start~anonymous|20 (; 50 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start~anonymous|32 (; 69 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (drop (call $~lib/array/Array#push (get_local $3) @@ -4671,13 +5388,13 @@ ) ) ) - (func $start~anonymous|21 (; 51 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start~anonymous|33 (; 70 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (i32.add (get_local $0) (get_local $1) ) ) - (func $start~anonymous|22 (; 52 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start~anonymous|34 (; 71 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (drop (call $~lib/array/Array#pop (get_local $3) @@ -4690,7 +5407,236 @@ ) ) ) - (func $~lib/math/murmurHash3 (; 53 ;) (type $II) (param $0 i64) (result i64) + (func $start~anonymous|35 (; 72 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (func $~lib/array/Array#reduceRight (; 73 ;) (type $iiii) (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) + (set_local $3 + (get_local $2) + ) + (set_local $4 + (i32.load + (get_local $0) + ) + ) + (block $break|0 + (set_local $5 + (i32.sub + (i32.load offset=4 + (get_local $0) + ) + (i32.const 1) + ) + ) + (loop $continue|0 + (if + (i32.ge_s + (get_local $5) + (i32.const 0) + ) + (block + (block + (set_local $3 + (block (result i32) + (set_global $~argc + (i32.const 4) + ) + (call_indirect (type $iiiii) + (get_local $3) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.16 (result i32) + (set_local $6 + (get_local $4) + ) + (set_local $7 + (get_local $5) + ) + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.16 + (i32.load offset=8 + (i32.add + (get_local $6) + (i32.shl + (get_local $7) + (i32.const 2) + ) + ) + ) + ) + ) + (get_local $5) + (get_local $0) + (get_local $1) + ) + ) + ) + ) + (set_local $5 + (i32.sub + (get_local $5) + (i32.const 1) + ) + ) + (br $continue|0) + ) + ) + ) + ) + (return + (get_local $3) + ) + ) + (func $start~anonymous|36 (; 74 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (func $start~anonymous|37 (; 75 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (i32.and + (if (result i32) + (get_local $0) + (get_local $0) + (i32.gt_s + (get_local $1) + (i32.const 2) + ) + ) + (i32.const 1) + ) + ) + (func $~lib/array/Array#reduceRight (; 76 ;) (type $iiii) (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) + (set_local $3 + (get_local $2) + ) + (set_local $4 + (i32.load + (get_local $0) + ) + ) + (block $break|0 + (set_local $5 + (i32.sub + (i32.load offset=4 + (get_local $0) + ) + (i32.const 1) + ) + ) + (loop $continue|0 + (if + (i32.ge_s + (get_local $5) + (i32.const 0) + ) + (block + (block + (set_local $3 + (block (result i32) + (set_global $~argc + (i32.const 4) + ) + (call_indirect (type $iiiii) + (get_local $3) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.17 (result i32) + (set_local $6 + (get_local $4) + ) + (set_local $7 + (get_local $5) + ) + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.17 + (i32.load offset=8 + (i32.add + (get_local $6) + (i32.shl + (get_local $7) + (i32.const 2) + ) + ) + ) + ) + ) + (get_local $5) + (get_local $0) + (get_local $1) + ) + ) + ) + ) + (set_local $5 + (i32.sub + (get_local $5) + (i32.const 1) + ) + ) + (br $continue|0) + ) + ) + ) + ) + (return + (get_local $3) + ) + ) + (func $start~anonymous|38 (; 77 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (i32.and + (if (result i32) + (get_local $0) + (get_local $0) + (i32.gt_s + (get_local $1) + (i32.const 100) + ) + ) + (i32.const 1) + ) + ) + (func $start~anonymous|39 (; 78 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (drop + (call $~lib/array/Array#push + (get_local $3) + (i32.const 1) + ) + ) + (return + (i32.add + (get_local $0) + (get_local $1) + ) + ) + ) + (func $start~anonymous|40 (; 79 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (i32.add + (get_local $0) + (get_local $1) + ) + ) + (func $start~anonymous|41 (; 80 ;) (type $iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (drop + (call $~lib/array/Array#pop + (get_local $3) + ) + ) + (return + (i32.add + (get_local $0) + (get_local $1) + ) + ) + ) + (func $~lib/math/murmurHash3 (; 81 ;) (type $II) (param $0 i64) (result i64) (set_local $0 (i64.xor (get_local $0) @@ -4734,7 +5680,7 @@ (get_local $0) ) ) - (func $~lib/math/NativeMath.seedRandom (; 54 ;) (type $Iv) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 82 ;) (type $Iv) (param $0 i64) (if (i64.eqz (get_local $0) @@ -4763,7 +5709,7 @@ ) ) ) - (func $std/array/createReverseOrderedArray (; 55 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedArray (; 83 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (set_local $1 @@ -4815,7 +5761,7 @@ (get_local $1) ) ) - (func $~lib/math/NativeMath.random (; 56 ;) (type $F) (result f64) + (func $~lib/math/NativeMath.random (; 84 ;) (type $F) (result f64) (local $0 i64) (local $1 i64) (local $2 i64) @@ -4899,7 +5845,7 @@ ) ) ) - (func $std/array/createRandomOrderedArray (; 57 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createRandomOrderedArray (; 85 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (set_local $1 @@ -4952,7 +5898,7 @@ (get_local $1) ) ) - (func $std/array/assertSortedDefault~anonymous|23 (; 58 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/assertSortedDefault~anonymous|42 (; 86 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (i32.gt_s (get_local $0) @@ -4964,7 +5910,7 @@ ) ) ) - (func $~lib/internal/array/insertionSort (; 59 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/internal/array/insertionSort (; 87 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4999,14 +5945,14 @@ (block (block (set_local $6 - (block $~lib/internal/arraybuffer/loadUnsafe|inlined.14 (result i32) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.20 (result i32) (set_local $5 (get_local $2) ) (set_local $6 (get_local $3) ) - (br $~lib/internal/arraybuffer/loadUnsafe|inlined.14 + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.20 (i32.load offset=8 (i32.add (get_local $5) @@ -5035,14 +5981,14 @@ (block (block (set_local $8 - (block $~lib/internal/arraybuffer/loadUnsafe|inlined.15 (result i32) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.21 (result i32) (set_local $7 (get_local $2) ) (set_local $8 (get_local $5) ) - (br $~lib/internal/arraybuffer/loadUnsafe|inlined.15 + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.21 (i32.load offset=8 (i32.add (get_local $7) @@ -5069,7 +6015,7 @@ ) (i32.const 0) ) - (block $~lib/internal/arraybuffer/storeUnsafe|inlined.8 + (block $~lib/internal/arraybuffer/storeUnsafe|inlined.9 (set_local $7 (get_local $2) ) @@ -5112,7 +6058,7 @@ ) ) ) - (block $~lib/internal/arraybuffer/storeUnsafe|inlined.9 + (block $~lib/internal/arraybuffer/storeUnsafe|inlined.10 (set_local $8 (get_local $2) ) @@ -5152,9 +6098,9 @@ (get_local $0) ) ) - (func $~lib/allocator/arena/free_memory (; 60 ;) (type $iv) (param $0 i32) + (func $~lib/allocator/arena/free_memory (; 88 ;) (type $iv) (param $0 i32) ) - (func $~lib/internal/array/weakHeapSort (; 61 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/internal/array/weakHeapSort (; 89 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5271,14 +6217,14 @@ ) ) (set_local $10 - (block $~lib/internal/arraybuffer/loadUnsafe|inlined.16 (result i32) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.22 (result i32) (set_local $9 (get_local $5) ) (set_local $10 (get_local $8) ) - (br $~lib/internal/arraybuffer/loadUnsafe|inlined.16 + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.22 (i32.load offset=8 (i32.add (get_local $9) @@ -5292,14 +6238,14 @@ ) ) (set_local $11 - (block $~lib/internal/arraybuffer/loadUnsafe|inlined.17 (result i32) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.23 (result i32) (set_local $9 (get_local $5) ) (set_local $11 (get_local $6) ) - (br $~lib/internal/arraybuffer/loadUnsafe|inlined.17 + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.23 (i32.load offset=8 (i32.add (get_local $9) @@ -5360,7 +6306,7 @@ ) ) ) - (block $~lib/internal/arraybuffer/storeUnsafe|inlined.10 + (block $~lib/internal/arraybuffer/storeUnsafe|inlined.11 (set_local $9 (get_local $5) ) @@ -5381,7 +6327,7 @@ (get_local $13) ) ) - (block $~lib/internal/arraybuffer/storeUnsafe|inlined.11 + (block $~lib/internal/arraybuffer/storeUnsafe|inlined.12 (set_local $13 (get_local $5) ) @@ -5432,14 +6378,14 @@ (block (block (set_local $10 - (block $~lib/internal/arraybuffer/loadUnsafe|inlined.18 (result i32) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.24 (result i32) (set_local $11 (get_local $5) ) (set_local $10 (i32.const 0) ) - (br $~lib/internal/arraybuffer/loadUnsafe|inlined.18 + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.24 (i32.load offset=8 (i32.add (get_local $11) @@ -5452,7 +6398,7 @@ ) ) ) - (block $~lib/internal/arraybuffer/storeUnsafe|inlined.12 + (block $~lib/internal/arraybuffer/storeUnsafe|inlined.13 (set_local $11 (get_local $5) ) @@ -5460,14 +6406,14 @@ (i32.const 0) ) (set_local $7 - (block $~lib/internal/arraybuffer/loadUnsafe|inlined.19 (result i32) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.25 (result i32) (set_local $9 (get_local $5) ) (set_local $12 (get_local $6) ) - (br $~lib/internal/arraybuffer/loadUnsafe|inlined.19 + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.25 (i32.load offset=8 (i32.add (get_local $9) @@ -5491,7 +6437,7 @@ (get_local $7) ) ) - (block $~lib/internal/arraybuffer/storeUnsafe|inlined.13 + (block $~lib/internal/arraybuffer/storeUnsafe|inlined.14 (set_local $7 (get_local $5) ) @@ -5569,14 +6515,14 @@ (block (block (set_local $10 - (block $~lib/internal/arraybuffer/loadUnsafe|inlined.20 (result i32) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.26 (result i32) (set_local $7 (get_local $5) ) (set_local $12 (i32.const 0) ) - (br $~lib/internal/arraybuffer/loadUnsafe|inlined.20 + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.26 (i32.load offset=8 (i32.add (get_local $7) @@ -5590,14 +6536,14 @@ ) ) (set_local $7 - (block $~lib/internal/arraybuffer/loadUnsafe|inlined.21 (result i32) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.27 (result i32) (set_local $12 (get_local $5) ) (set_local $7 (get_local $11) ) - (br $~lib/internal/arraybuffer/loadUnsafe|inlined.21 + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.27 (i32.load offset=8 (i32.add (get_local $12) @@ -5658,7 +6604,7 @@ ) ) ) - (block $~lib/internal/arraybuffer/storeUnsafe|inlined.14 + (block $~lib/internal/arraybuffer/storeUnsafe|inlined.15 (set_local $12 (get_local $5) ) @@ -5679,7 +6625,7 @@ (get_local $13) ) ) - (block $~lib/internal/arraybuffer/storeUnsafe|inlined.15 + (block $~lib/internal/arraybuffer/storeUnsafe|inlined.16 (set_local $13 (get_local $5) ) @@ -5730,14 +6676,14 @@ (get_local $4) ) (set_local $14 - (block $~lib/internal/arraybuffer/loadUnsafe|inlined.22 (result i32) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.28 (result i32) (set_local $6 (get_local $5) ) (set_local $8 (i32.const 1) ) - (br $~lib/internal/arraybuffer/loadUnsafe|inlined.22 + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.28 (i32.load offset=8 (i32.add (get_local $6) @@ -5750,7 +6696,7 @@ ) ) ) - (block $~lib/internal/arraybuffer/storeUnsafe|inlined.16 + (block $~lib/internal/arraybuffer/storeUnsafe|inlined.17 (set_local $8 (get_local $5) ) @@ -5758,14 +6704,14 @@ (i32.const 1) ) (set_local $11 - (block $~lib/internal/arraybuffer/loadUnsafe|inlined.23 (result i32) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.29 (result i32) (set_local $10 (get_local $5) ) (set_local $7 (i32.const 0) ) - (br $~lib/internal/arraybuffer/loadUnsafe|inlined.23 + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.29 (i32.load offset=8 (i32.add (get_local $10) @@ -5789,7 +6735,7 @@ (get_local $11) ) ) - (block $~lib/internal/arraybuffer/storeUnsafe|inlined.17 + (block $~lib/internal/arraybuffer/storeUnsafe|inlined.18 (set_local $11 (get_local $5) ) @@ -5814,7 +6760,7 @@ (get_local $0) ) ) - (func $~lib/array/Array#sort (; 62 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 90 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5848,14 +6794,14 @@ ) (block (set_local $5 - (block $~lib/internal/arraybuffer/loadUnsafe|inlined.12 (result i32) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.18 (result i32) (set_local $4 (get_local $3) ) (set_local $5 (i32.const 1) ) - (br $~lib/internal/arraybuffer/loadUnsafe|inlined.12 + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.18 (i32.load offset=8 (i32.add (get_local $4) @@ -5869,14 +6815,14 @@ ) ) (set_local $6 - (block $~lib/internal/arraybuffer/loadUnsafe|inlined.13 (result i32) + (block $~lib/internal/arraybuffer/loadUnsafe|inlined.19 (result i32) (set_local $4 (get_local $3) ) (set_local $6 (i32.const 0) ) - (br $~lib/internal/arraybuffer/loadUnsafe|inlined.13 + (br $~lib/internal/arraybuffer/loadUnsafe|inlined.19 (i32.load offset=8 (i32.add (get_local $4) @@ -5904,7 +6850,7 @@ (i32.const 0) ) (block - (block $~lib/internal/arraybuffer/storeUnsafe|inlined.6 + (block $~lib/internal/arraybuffer/storeUnsafe|inlined.7 (set_local $4 (get_local $3) ) @@ -5925,7 +6871,7 @@ (get_local $8) ) ) - (block $~lib/internal/arraybuffer/storeUnsafe|inlined.7 + (block $~lib/internal/arraybuffer/storeUnsafe|inlined.8 (set_local $8 (get_local $3) ) @@ -5970,7 +6916,7 @@ ) ) ) - (func $std/array/isSorted (; 63 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted (; 91 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (block $break|0 @@ -6035,7 +6981,7 @@ (i32.const 1) ) ) - (func $std/array/assertSorted (; 64 ;) (type $iiv) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 92 ;) (type $iiv) (param $0 i32) (param $1 i32) (if (i32.eqz (call $std/array/isSorted @@ -6050,24 +6996,24 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 436) + (i32.const 605) (i32.const 2) ) (unreachable) ) ) ) - (func $std/array/assertSortedDefault (; 65 ;) (type $iv) (param $0 i32) + (func $std/array/assertSortedDefault (; 93 ;) (type $iv) (param $0 i32) (call $std/array/assertSorted (get_local $0) (block $~lib/internal/array/defaultComparator|inlined.0 (result i32) (br $~lib/internal/array/defaultComparator|inlined.0 - (i32.const 23) + (i32.const 42) ) ) ) ) - (func $std/array/isArraysEqual (; 66 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 94 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (if (i32.eqz @@ -6137,7 +7083,7 @@ (i32.const 1) ) ) - (func $std/array/isArraysEqual|trampoline (; 67 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual|trampoline (; 95 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (block $1of1 (block $0of1 (block $oob @@ -6160,31 +7106,31 @@ (get_local $2) ) ) - (func $start~anonymous|24 (; 68 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|43 (; 96 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (get_local $0) (get_local $1) ) ) - (func $start~anonymous|25 (; 69 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|44 (; 97 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (get_local $1) (get_local $0) ) ) - (func $start~anonymous|26 (; 70 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|45 (; 98 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (get_local $0) (get_local $1) ) ) - (func $start~anonymous|27 (; 71 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|46 (; 99 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (get_local $1) (get_local $0) ) ) - (func $~lib/array/Array>#constructor (; 72 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#constructor (; 100 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (block (nop) @@ -6242,14 +7188,14 @@ ) (get_local $0) ) - (func $~lib/array/Array>#get:length (; 73 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#get:length (; 101 ;) (type $ii) (param $0 i32) (result i32) (return (i32.load offset=4 (get_local $0) ) ) ) - (func $~lib/array/Array>#__set (; 74 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array>#__set (; 102 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6337,7 +7283,7 @@ ) ) ) - (func $~lib/array/Array>#__get (; 75 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#__get (; 103 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6392,7 +7338,7 @@ ) ) ) - (func $std/array/createReverseOrderedNestedArray (; 76 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedNestedArray (; 104 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (set_local $1 @@ -6455,7 +7401,7 @@ (get_local $1) ) ) - (func $start~anonymous|28 (; 77 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|47 (; 105 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (call $~lib/array/Array#__get (get_local $0) @@ -6467,7 +7413,7 @@ ) ) ) - (func $~lib/internal/array/insertionSort> (; 78 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/internal/array/insertionSort> (; 106 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6655,7 +7601,7 @@ (get_local $0) ) ) - (func $~lib/internal/array/weakHeapSort> (; 79 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/internal/array/weakHeapSort> (; 107 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7315,7 +8261,7 @@ (get_local $0) ) ) - (func $~lib/array/Array>#sort (; 80 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#sort (; 108 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7471,7 +8417,7 @@ ) ) ) - (func $std/array/isSorted> (; 81 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted> (; 109 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (block $break|0 @@ -7536,7 +8482,7 @@ (i32.const 1) ) ) - (func $std/array/assertSorted> (; 82 ;) (type $iiv) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted> (; 110 ;) (type $iiv) (param $0 i32) (param $1 i32) (if (i32.eqz (call $std/array/isSorted> @@ -7551,14 +8497,14 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 436) + (i32.const 605) (i32.const 2) ) (unreachable) ) ) ) - (func $~lib/array/Array>#constructor (; 83 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#constructor (; 111 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (block (nop) @@ -7616,14 +8562,14 @@ ) (get_local $0) ) - (func $~lib/array/Array>#get:length (; 84 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#get:length (; 112 ;) (type $ii) (param $0 i32) (result i32) (return (i32.load offset=4 (get_local $0) ) ) ) - (func $std/array/Proxy#constructor (; 85 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/Proxy#constructor (; 113 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (block ) @@ -7648,7 +8594,7 @@ ) ) ) - (func $~lib/array/Array>#__set (; 86 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array>#__set (; 114 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7736,7 +8682,7 @@ ) ) ) - (func $std/array/createReverseOrderedElementsArray (; 87 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedElementsArray (; 115 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (set_local $1 @@ -7791,7 +8737,7 @@ (get_local $1) ) ) - (func $start~anonymous|29 (; 88 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|48 (; 116 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (i32.load (get_local $0) @@ -7801,7 +8747,7 @@ ) ) ) - (func $~lib/internal/array/insertionSort> (; 89 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/internal/array/insertionSort> (; 117 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7989,7 +8935,7 @@ (get_local $0) ) ) - (func $~lib/internal/array/weakHeapSort> (; 90 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/internal/array/weakHeapSort> (; 118 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8649,7 +9595,7 @@ (get_local $0) ) ) - (func $~lib/array/Array>#sort (; 91 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#sort (; 119 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8805,7 +9751,7 @@ ) ) ) - (func $~lib/array/Array>#__get (; 92 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#__get (; 120 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8860,7 +9806,7 @@ ) ) ) - (func $std/array/isSorted> (; 93 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted> (; 121 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (block $break|0 @@ -8925,7 +9871,7 @@ (i32.const 1) ) ) - (func $std/array/assertSorted> (; 94 ;) (type $iiv) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted> (; 122 ;) (type $iiv) (param $0 i32) (param $1 i32) (if (i32.eqz (call $std/array/isSorted> @@ -8940,14 +9886,14 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 436) + (i32.const 605) (i32.const 2) ) (unreachable) ) ) ) - (func $~lib/memory/compare_memory (; 95 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/memory/compare_memory (; 123 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (if (i32.eq (get_local $0) @@ -9013,7 +9959,7 @@ ) ) ) - (func $~lib/string/String.__gt (; 96 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__gt (; 124 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9112,7 +10058,7 @@ ) ) ) - (func $~lib/string/String.__lt (; 97 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__lt (; 125 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9211,7 +10157,7 @@ ) ) ) - (func $start~anonymous|30 (; 98 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|49 (; 126 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (call $~lib/string/String.__gt (get_local $0) @@ -9223,14 +10169,14 @@ ) ) ) - (func $~lib/array/Array#get:length (; 99 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 127 ;) (type $ii) (param $0 i32) (result i32) (return (i32.load offset=4 (get_local $0) ) ) ) - (func $~lib/internal/array/insertionSort (; 100 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/internal/array/insertionSort (; 128 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9418,7 +10364,7 @@ (get_local $0) ) ) - (func $~lib/internal/array/weakHeapSort (; 101 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/internal/array/weakHeapSort (; 129 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10078,7 +11024,7 @@ (get_local $0) ) ) - (func $~lib/array/Array#sort (; 102 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 130 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10234,7 +11180,7 @@ ) ) ) - (func $~lib/array/Array#__get (; 103 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 131 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10289,7 +11235,7 @@ ) ) ) - (func $std/array/isSorted (; 104 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted (; 132 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (block $break|0 @@ -10354,7 +11300,7 @@ (i32.const 1) ) ) - (func $std/array/assertSorted (; 105 ;) (type $iiv) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 133 ;) (type $iiv) (param $0 i32) (param $1 i32) (if (i32.eqz (call $std/array/isSorted @@ -10369,14 +11315,14 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 436) + (i32.const 605) (i32.const 2) ) (unreachable) ) ) ) - (func $~lib/string/String.__eq (; 106 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 134 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (if @@ -10444,7 +11390,7 @@ ) ) ) - (func $~lib/string/String.__ne (; 107 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__ne (; 135 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (return (i32.eqz (call $~lib/string/String.__eq @@ -10454,7 +11400,7 @@ ) ) ) - (func $std/array/isArraysEqual (; 108 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 136 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (if (i32.eqz @@ -10524,7 +11470,7 @@ (i32.const 1) ) ) - (func $std/array/isArraysEqual|trampoline (; 109 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual|trampoline (; 137 ;) (type $iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (block $1of1 (block $0of1 (block $oob @@ -10547,7 +11493,7 @@ (get_local $2) ) ) - (func $~lib/array/Array#constructor (; 110 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#constructor (; 138 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (block (nop) @@ -10605,7 +11551,7 @@ ) (get_local $0) ) - (func $~lib/internal/string/allocate (; 111 ;) (type $ii) (param $0 i32) (result i32) + (func $~lib/internal/string/allocate (; 139 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (if @@ -10656,7 +11602,7 @@ (get_local $2) ) ) - (func $~lib/string/String#charAt (; 112 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#charAt (; 140 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (if (i32.eqz @@ -10707,7 +11653,7 @@ (get_local $2) ) ) - (func $~lib/string/String#concat (; 113 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 141 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10806,7 +11752,7 @@ (get_local $5) ) ) - (func $~lib/string/String.__concat (; 114 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 142 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (if (i32.eqz (get_local $0) @@ -10822,7 +11768,7 @@ ) ) ) - (func $std/array/createRandomString (; 115 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 143 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 f64) @@ -10884,7 +11830,7 @@ (get_local $1) ) ) - (func $~lib/array/Array#__set (; 116 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__set (; 144 ;) (type $iiiv) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10972,7 +11918,7 @@ ) ) ) - (func $std/array/createRandomStringArray (; 117 ;) (type $ii) (param $0 i32) (result i32) + (func $std/array/createRandomStringArray (; 145 ;) (type $ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (set_local $1 @@ -11023,7 +11969,7 @@ (get_local $1) ) ) - (func $start~anonymous|31 (; 118 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) + (func $start~anonymous|50 (; 146 ;) (type $iii) (param $0 i32) (param $1 i32) (result i32) (i32.sub (call $~lib/string/String.__gt (get_local $0) @@ -11035,7 +11981,7 @@ ) ) ) - (func $start (; 119 ;) (type $v) + (func $start (; 147 ;) (type $v) (set_global $~lib/allocator/arena/startOffset (i32.and (i32.add @@ -13311,11 +14257,11 @@ ) ) (set_global $std/array/i - (call $~lib/array/Array#reduce - (get_global $std/array/arr) - (i32.const 16) - (i32.const 0) - ) + (i32.const 0) + ) + (call $~lib/array/Array#forEach + (get_global $std/array/arr) + (i32.const 16) ) (if (i32.eqz @@ -13328,72 +14274,24 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 318) + (i32.const 319) (i32.const 0) ) (unreachable) ) ) (set_global $std/array/i - (call $~lib/array/Array#reduce - (get_global $std/array/arr) - (i32.const 17) - (i32.const 4) - ) + (i32.const 0) + ) + (call $~lib/array/Array#forEach + (get_global $std/array/arr) + (i32.const 17) ) (if (i32.eqz (i32.eq (get_global $std/array/i) - (i32.const 10) - ) - ) - (block - (call $abort - (i32.const 0) - (i32.const 96) - (i32.const 322) - (i32.const 0) - ) - (unreachable) - ) - ) - (set_global $std/array/boolVal - (call $~lib/array/Array#reduce - (get_global $std/array/arr) - (i32.const 18) - (i32.const 0) - ) - ) - (if - (i32.eqz - (i32.eq - (get_global $std/array/boolVal) - (i32.const 1) - ) - ) - (block - (call $abort - (i32.const 0) - (i32.const 96) - (i32.const 325) - (i32.const 0) - ) - (unreachable) - ) - ) - (set_global $std/array/boolVal - (call $~lib/array/Array#reduce - (get_global $std/array/arr) - (i32.const 19) - (i32.const 0) - ) - ) - (if - (i32.eqz - (i32.eq - (get_global $std/array/boolVal) - (i32.const 0) + (i32.const 6) ) ) (block @@ -13406,30 +14304,6 @@ (unreachable) ) ) - (set_global $std/array/i - (call $~lib/array/Array#reduce - (get_global $std/array/arr) - (i32.const 20) - (i32.const 0) - ) - ) - (if - (i32.eqz - (i32.eq - (get_global $std/array/i) - (i32.const 6) - ) - ) - (block - (call $abort - (i32.const 0) - (i32.const 96) - (i32.const 336) - (i32.const 0) - ) - (unreachable) - ) - ) (if (i32.eqz (i32.eq @@ -13443,31 +14317,31 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 337) + (i32.const 329) (i32.const 0) ) (unreachable) ) ) (set_global $std/array/i - (call $~lib/array/Array#reduce - (get_global $std/array/arr) - (i32.const 21) - (i32.const 0) - ) + (i32.const 0) + ) + (call $~lib/array/Array#forEach + (get_global $std/array/arr) + (i32.const 18) ) (if (i32.eqz (i32.eq (get_global $std/array/i) - (i32.const 10) + (i32.const 406) ) ) (block (call $abort (i32.const 0) (i32.const 96) - (i32.const 339) + (i32.const 332) (i32.const 0) ) (unreachable) @@ -13494,11 +14368,11 @@ ) ) (set_global $std/array/i - (call $~lib/array/Array#reduce - (get_global $std/array/arr) - (i32.const 22) - (i32.const 0) - ) + (i32.const 0) + ) + (call $~lib/array/Array#forEach + (get_global $std/array/arr) + (i32.const 19) ) (if (i32.eqz @@ -13511,7 +14385,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 352) + (i32.const 346) (i32.const 0) ) (unreachable) @@ -13530,12 +14404,883 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 353) + (i32.const 347) (i32.const 0) ) (unreachable) ) ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 2) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 3) + ) + ) + (set_global $std/array/newArr + (call $~lib/array/Array#map + (get_global $std/array/arr) + (i32.const 20) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/array/Array#get:length + (get_global $std/array/newArr) + ) + (i32.const 4) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 356) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (f32.eq + (call $~lib/array/Array#__get + (get_global $std/array/newArr) + (i32.const 0) + ) + (f32.convert_s/i32 + (call $~lib/array/Array#__get + (get_global $std/array/arr) + (i32.const 0) + ) + ) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 357) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (i32.const 0) + ) + (drop + (call $~lib/array/Array#map + (get_global $std/array/arr) + (i32.const 21) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 6) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 366) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 8) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 367) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (i32.const 0) + ) + (drop + (call $~lib/array/Array#map + (get_global $std/array/arr) + (i32.const 22) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 406) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 374) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (set_global $std/array/i + (i32.const 0) + ) + (drop + (call $~lib/array/Array#map + (get_global $std/array/arr) + (i32.const 23) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 1) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 389) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 2) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 390) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 2) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 3) + ) + ) + (set_global $std/array/filteredArr + (call $~lib/array/Array#filter + (get_global $std/array/arr) + (i32.const 24) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/array/Array#get:length + (get_global $std/array/filteredArr) + ) + (i32.const 2) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 398) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (i32.const 0) + ) + (drop + (call $~lib/array/Array#filter + (get_global $std/array/arr) + (i32.const 25) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 6) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 407) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 8) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 408) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (i32.const 0) + ) + (drop + (call $~lib/array/Array#filter + (get_global $std/array/arr) + (i32.const 26) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 406) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 415) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (set_global $std/array/i + (i32.const 0) + ) + (drop + (call $~lib/array/Array#filter + (get_global $std/array/arr) + (i32.const 27) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 1) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 430) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 2) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 431) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 2) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 3) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduce + (get_global $std/array/arr) + (i32.const 28) + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 6) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 439) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduce + (get_global $std/array/arr) + (i32.const 29) + (i32.const 4) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 10) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 443) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/boolVal + (call $~lib/array/Array#reduce + (get_global $std/array/arr) + (i32.const 30) + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/boolVal) + (i32.const 1) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 446) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/boolVal + (call $~lib/array/Array#reduce + (get_global $std/array/arr) + (i32.const 31) + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/boolVal) + (i32.const 0) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 449) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduce + (get_global $std/array/arr) + (i32.const 32) + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 6) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 457) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 8) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 458) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduce + (get_global $std/array/arr) + (i32.const 33) + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 10) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 460) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduce + (get_global $std/array/arr) + (i32.const 34) + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 1) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 473) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 2) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 474) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 2) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 3) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduceRight + (get_global $std/array/arr) + (i32.const 35) + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 6) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 482) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduceRight + (get_global $std/array/arr) + (i32.const 36) + (i32.const 4) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 10) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 486) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/boolVal + (call $~lib/array/Array#reduceRight + (get_global $std/array/arr) + (i32.const 37) + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/boolVal) + (i32.const 1) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 489) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/boolVal + (call $~lib/array/Array#reduceRight + (get_global $std/array/arr) + (i32.const 38) + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/boolVal) + (i32.const 0) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 492) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduceRight + (get_global $std/array/arr) + (i32.const 39) + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 6) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 500) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 8) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 501) + (i32.const 0) + ) + (unreachable) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduceRight + (get_global $std/array/arr) + (i32.const 40) + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 10) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 503) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (drop + (call $~lib/array/Array#pop + (get_global $std/array/arr) + ) + ) + (set_global $std/array/i + (call $~lib/array/Array#reduceRight + (get_global $std/array/arr) + (i32.const 41) + (i32.const 0) + ) + ) + (if + (i32.eqz + (i32.eq + (get_global $std/array/i) + (i32.const 6) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 516) + (i32.const 0) + ) + (unreachable) + ) + ) + (if + (i32.eqz + (i32.eq + (call $~lib/array/Array#get:length + (get_global $std/array/arr) + ) + (i32.const 0) + ) + ) + (block + (call $abort + (i32.const 0) + (i32.const 96) + (i32.const 517) + (i32.const 0) + ) + (unreachable) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 0) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 1) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 2) + ) + ) + (drop + (call $~lib/array/Array#push + (get_global $std/array/arr) + (i32.const 3) + ) + ) (call $~lib/math/NativeMath.seedRandom (i64.reinterpret/f64 (call $~lib/math/JSMath.random) @@ -13589,7 +15334,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 462) + (i32.const 631) (i32.const 0) ) (unreachable) @@ -13615,7 +15360,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 465) + (i32.const 634) (i32.const 0) ) (unreachable) @@ -13641,7 +15386,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 468) + (i32.const 637) (i32.const 0) ) (unreachable) @@ -13662,7 +15407,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 471) + (i32.const 640) (i32.const 0) ) (unreachable) @@ -13683,7 +15428,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 474) + (i32.const 643) (i32.const 0) ) (unreachable) @@ -13704,7 +15449,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 477) + (i32.const 646) (i32.const 0) ) (unreachable) @@ -13725,7 +15470,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 480) + (i32.const 649) (i32.const 0) ) (unreachable) @@ -13746,19 +15491,19 @@ ) (call $std/array/assertSorted (get_global $std/array/randomized64) - (i32.const 24) + (i32.const 43) ) (call $std/array/assertSorted (get_global $std/array/randomized64) - (i32.const 25) + (i32.const 44) ) (call $std/array/assertSorted (get_global $std/array/randomized257) - (i32.const 26) + (i32.const 45) ) (call $std/array/assertSorted (get_global $std/array/randomized257) - (i32.const 27) + (i32.const 46) ) (set_global $std/array/reversedNested512 (call $std/array/createReverseOrderedNestedArray @@ -13767,7 +15512,7 @@ ) (call $std/array/assertSorted> (get_global $std/array/reversedNested512) - (i32.const 28) + (i32.const 47) ) (set_global $std/array/reversedElements512 (call $std/array/createReverseOrderedElementsArray @@ -13776,11 +15521,11 @@ ) (call $std/array/assertSorted> (get_global $std/array/reversedElements512) - (i32.const 29) + (i32.const 48) ) (call $std/array/assertSorted (get_global $std/array/randomStringsActual) - (i32.const 30) + (i32.const 49) ) (if (i32.eqz @@ -13799,7 +15544,7 @@ (call $abort (i32.const 0) (i32.const 96) - (i32.const 509) + (i32.const 678) (i32.const 0) ) (unreachable) @@ -13812,7 +15557,7 @@ ) (call $std/array/assertSorted (get_global $std/array/randomStrings400) - (i32.const 31) + (i32.const 50) ) ) )