diff --git a/std/assembly/array.ts b/std/assembly/array.ts index 5df5fd5327..b373436a61 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -431,7 +431,7 @@ export class Array { return result; } - reverse(): Array { + reverse(): this { REVERSE(this.dataStart, this.length_); return this; } diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index b95e61b2ee..e3989d3691 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1691,9 +1691,8 @@ declare class Array { constructor(length?: i32); at(index: i32): T; fill(value: T, start?: i32, end?: i32): this; - every(callbackfn: (element: T, index: i32, array?: Array) => bool): bool; - findIndex(callbackfn: (element: T, index: i32, array?: Array) => bool): i32; - findLastIndex(callbackfn: (element: T, index: i32, array?: Array) => bool): i32; + findIndex(callbackfn: (value: T, index: i32, array: Array) => bool): i32; + findLastIndex(callbackfn: (value: T, index: i32, array: Array) => bool): i32; includes(searchElement: T, fromIndex?: i32): bool; indexOf(searchElement: T, fromIndex?: i32): i32; lastIndexOf(searchElement: T, fromIndex?: i32): i32; @@ -1706,14 +1705,15 @@ declare class 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; + every(callbackfn: (value: T, index: i32, array: Array) => bool): bool; + some(callbackfn: (value: T, index: i32, array: Array) => bool): bool; shift(): T; - some(callbackfn: (element: T, index: i32, array?: Array) => bool): bool; unshift(element: T): i32; slice(from: i32, to?: i32): Array; splice(start: i32, deleteCount?: i32): Array; sort(comparator?: (a: T, b: T) => i32): this; join(separator?: string): string; - reverse(): T[]; + reverse(): this; /** Flattens an array of arrays. If any null entries exist in the array, they are ignored, unlike JavaScript's version of Array#flat(). */ flat(): T extends unknown[] ? T : never; toString(): string; @@ -1728,13 +1728,25 @@ declare class StaticArray { readonly length: i32; constructor(length?: i32); at(index: i32): T; + fill(value: T, start?: i32, end?: i32): this; + findIndex(callbackfn: (value: T, index: i32, array: StaticArray) => bool): i32; + findLastIndex(callbackfn: (value: T, index: i32, array: StaticArray) => bool): i32; + copyWithin(target: i32, start: i32, end?: i32): this; includes(searchElement: T, fromIndex?: i32): bool; indexOf(searchElement: T, fromIndex?: i32): i32; lastIndexOf(searchElement: T, fromIndex?: i32): i32; + forEach(callbackfn: (value: T, index: i32, array: StaticArray) => void): void; + map(callbackfn: (value: T, index: i32, array: StaticArray) => U): Array; + filter(callbackfn: (value: T, index: i32, array: StaticArray) => bool): Array; + reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: StaticArray) => U, initialValue: U): U; + reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: StaticArray) => U, initialValue: U): U; + every(callbackfn: (value: T, index: i32, array: StaticArray) => bool): bool; + some(callbackfn: (value: T, index: i32, array: StaticArray) => bool): bool; concat(items: Array): Array; slice(from: i32, to?: i32): Array; sort(comparator?: (a: T, b: T) => i32): this; join(separator?: string): string; + reverse(): this; toString(): string; } diff --git a/std/assembly/staticarray.ts b/std/assembly/staticarray.ts index fc41380a3f..e08009ee3c 100644 --- a/std/assembly/staticarray.ts +++ b/std/assembly/staticarray.ts @@ -2,6 +2,7 @@ import { OBJECT, BLOCK_MAXSIZE, TOTAL_OVERHEAD } from "./rt/common"; import { COMPARATOR, SORT } from "./util/sort"; +import { REVERSE } from "./util/bytes"; import { idof } from "./builtins"; import { Array } from "./array"; import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error"; @@ -137,6 +138,51 @@ export class StaticArray { } } + fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): this { + var ptr = changetype(this); + var len = this.length; + start = start < 0 ? max(len + start, 0) : min(start, len); + end = end < 0 ? max(len + end, 0) : min(end, len); + if (isManaged()) { + for (; start < end; ++start) { + store(ptr + (start << alignof()), changetype(value)); + __link(changetype(this), changetype(value), true); + } + } else if (sizeof() == 1) { + if (start < end) { + memory.fill( + ptr + start, + u8(value), + (end - start) + ); + } + } else { + for (; start < end; ++start) { + store(ptr + (start << alignof()), value); + } + } + return this; + } + + copyWithin(target: i32, start: i32, end: i32 = i32.MAX_VALUE): this { + var ptr = changetype(this); + var len = this.length; + + end = min(end, len); + + var to = target < 0 ? max(len + target, 0) : min(target, len); + var from = start < 0 ? max(len + start, 0) : min(start, len); + var last = end < 0 ? max(len + end, 0) : min(end, len); + var count = min(last - from, len - to); + + memory.copy( // is memmove + ptr + (to << alignof()), + ptr + (from << alignof()), + count << alignof() + ); + return this; + } + includes(value: T, fromIndex: i32 = 0): bool { if (isFloat()) { let length = this.length; @@ -230,6 +276,85 @@ export class StaticArray { return slice; } + findIndex(fn: (value: T, index: i32, array: StaticArray) => bool): i32 { + for (let i = 0, len = this.length; i < len; ++i) { + if (fn(load(changetype(this) + (i << alignof())), i, this)) return i; + } + return -1; + } + + findLastIndex(fn: (value: T, index: i32, array: StaticArray) => bool): i32 { + for (let i = this.length - 1; i >= 0; --i) { + if (fn(load(changetype(this) + (i << alignof())), i, this)) return i; + } + return -1; + } + + forEach(fn: (value: T, index: i32, array: StaticArray) => void): void { + for (let i = 0, len = this.length; i < len; ++i) { + fn(load(changetype(this) + (i << alignof())), i, this); + } + } + + map(fn: (value: T, index: i32, array: StaticArray) => U): Array { + var len = this.length; + var out = changetype>(__newArray(len, alignof(), idof>())); + var outStart = out.dataStart; + for (let i = 0; i < len; ++i) { + let result = fn(load(changetype(this) + (i << alignof())), i, this); + store(outStart + (i << alignof()), result); + if (isManaged()) { + __link(changetype(out), changetype(result), true); + } + } + return out; + } + + filter(fn: (value: T, index: i32, array: StaticArray) => bool): Array { + var result = changetype>(__newArray(0, alignof(), idof>())); + for (let i = 0, len = this.length; i < len; ++i) { + let value = load(changetype(this) + (i << alignof())); + if (fn(value, i, this)) result.push(value); + } + return result; + } + + reduce( + fn: (previousValue: U, currentValue: T, currentIndex: i32, array: StaticArray) => U, + initialValue: U + ): U { + var acc = initialValue; + for (let i = 0, len = this.length; i < len; ++i) { + acc = fn(acc, load(changetype(this) + (i << alignof())), i, this); + } + return acc; + } + + reduceRight( + fn: (previousValue: U, currentValue: T, currentIndex: i32, array: StaticArray) => U, + initialValue: U + ): U { + var acc = initialValue; + for (let i = this.length - 1; i >= 0; --i) { + acc = fn(acc, load(changetype(this) + (i << alignof())), i, this); + } + return acc; + } + + every(fn: (value: T, index: i32, array: StaticArray) => bool): bool { + for (let i = 0, len = this.length; i < len; ++i) { + if (!fn(load(changetype(this) + (i << alignof())), i, this)) return false; + } + return true; + } + + some(fn: (value: T, index: i32, array: StaticArray) => bool): bool { + for (let i = 0, len = this.length; i < len; ++i) { + if (fn(load(changetype(this) + (i << alignof())), i, this)) return true; + } + return false; + } + sort(comparator: (a: T, b: T) => i32 = COMPARATOR()): this { SORT(changetype(this), this.length, comparator); return this; @@ -247,6 +372,11 @@ export class StaticArray { return unreachable(); } + reverse(): this { + REVERSE(changetype(this), this.length); + return this; + } + toString(): string { return this.join(); } diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index add6ebad38..c065279b3b 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -1,15 +1,15 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) @@ -25,7 +25,8 @@ (global $std/staticarray/arr3 (mut i32) (i32.const 0)) (global $std/staticarray/arr4 (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19660)) + (global $std/staticarray/maxVal (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 20252)) (memory $0 1) (data (i32.const 1036) "\1c") (data (i32.const 1048) "\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") @@ -90,40 +91,74 @@ (data (i32.const 2520) "\0b\00\00\00\04\00\00\00\00\00\c0\7f") (data (i32.const 2540) "\1c") (data (i32.const 2552) "\03\00\00\00\0c\00\00\00\02\00\00\00\t\00\00\00\t") - (data (i32.const 2572) "\1c") - (data (i32.const 2584) "\01\00\00\00\08\00\00\00F\00i\00r\00e") - (data (i32.const 2604) "\1c") - (data (i32.const 2616) "\01\00\00\00\06\00\00\00A\00i\00r") - (data (i32.const 2636) "\1c") - (data (i32.const 2648) "\01\00\00\00\n\00\00\00W\00a\00t\00e\00r") - (data (i32.const 2668) "\1c") - (data (i32.const 2680) "\08\00\00\00\0c\00\00\00 \n\00\00@\n\00\00`\n") - (data (i32.const 2700) "\1c") - (data (i32.const 2712) "\01") - (data (i32.const 2732) "\1c") - (data (i32.const 2744) "\01\00\00\00\02\00\00\00,") - (data (i32.const 2764) ",") - (data (i32.const 2776) "\01\00\00\00\1c\00\00\00F\00i\00r\00e\00,\00A\00i\00r\00,\00W\00a\00t\00e\00r") + (data (i32.const 2572) ",") + (data (i32.const 2584) "\03\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02") + (data (i32.const 2620) "\1c") + (data (i32.const 2632) "\01\00\00\00\08\00\00\00F\00i\00r\00e") + (data (i32.const 2652) "\1c") + (data (i32.const 2664) "\01\00\00\00\06\00\00\00A\00i\00r") + (data (i32.const 2684) "\1c") + (data (i32.const 2696) "\01\00\00\00\n\00\00\00W\00a\00t\00e\00r") + (data (i32.const 2716) "\1c") + (data (i32.const 2728) "\08\00\00\00\0c\00\00\00P\n\00\00p\n\00\00\90\n") + (data (i32.const 2748) "\1c") + (data (i32.const 2760) "\01") + (data (i32.const 2780) "\1c") + (data (i32.const 2792) "\01\00\00\00\02\00\00\00,") (data (i32.const 2812) ",") - (data (i32.const 2824) "\01\00\00\00\18\00\00\00F\00i\00r\00e\00A\00i\00r\00W\00a\00t\00e\00r") - (data (i32.const 2860) "\1c") - (data (i32.const 2872) "\01\00\00\00\02\00\00\00-") - (data (i32.const 2892) ",") - (data (i32.const 2904) "\01\00\00\00\1c\00\00\00F\00i\00r\00e\00-\00A\00i\00r\00-\00W\00a\00t\00e\00r") - (data (i32.const 2940) "\1c") - (data (i32.const 2952) "\01\00\00\00\06\00\00\00 \00+\00 ") - (data (i32.const 2972) "<") - (data (i32.const 2984) "\01\00\00\00$\00\00\00F\00i\00r\00e\00 \00+\00 \00A\00i\00r\00 \00+\00 \00W\00a\00t\00e\00r") - (data (i32.const 3036) ",") - (data (i32.const 3048) "\03\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02") - (data (i32.const 3084) ",") - (data (i32.const 3096) "\03\00\00\00\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01") - (data (i32.const 3132) "\1c") - (data (i32.const 3144) "\0c\00\00\00\08\00\00\00\01") - (data (i32.const 3168) "\0d\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 3196) "$\t\00\00\00\00\00\00 \00\00\00\00\00\00\00\04A\00\00\00\00\00\00\02\t\00\00\00\00\00\00\02\01\00\00\00\00\00\00\04A\00\00\00\00\00\00\02A\00\00\00\00\00\00$\1a\00\00\00\00\00\00$\19") - (table $0 2 funcref) - (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0) + (data (i32.const 2824) "\01\00\00\00\1c\00\00\00F\00i\00r\00e\00,\00A\00i\00r\00,\00W\00a\00t\00e\00r") + (data (i32.const 2860) ",") + (data (i32.const 2872) "\01\00\00\00\18\00\00\00F\00i\00r\00e\00A\00i\00r\00W\00a\00t\00e\00r") + (data (i32.const 2908) "\1c") + (data (i32.const 2920) "\01\00\00\00\02\00\00\00-") + (data (i32.const 2940) ",") + (data (i32.const 2952) "\01\00\00\00\1c\00\00\00F\00i\00r\00e\00-\00A\00i\00r\00-\00W\00a\00t\00e\00r") + (data (i32.const 2988) "\1c") + (data (i32.const 3000) "\01\00\00\00\06\00\00\00 \00+\00 ") + (data (i32.const 3020) "<") + (data (i32.const 3032) "\01\00\00\00$\00\00\00F\00i\00r\00e\00 \00+\00 \00A\00i\00r\00 \00+\00 \00W\00a\00t\00e\00r") + (data (i32.const 3084) "\1c") + (data (i32.const 3096) "\03\00\00\00\08") + (data (i32.const 3116) "\1c") + (data (i32.const 3128) "\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 3148) ",") + (data (i32.const 3160) "\03\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3196) "\1c") + (data (i32.const 3208) "\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 3228) "\1c") + (data (i32.const 3240) "\0c\00\00\00\08\00\00\00\01") + (data (i32.const 3260) "\1c") + (data (i32.const 3272) "\0d\00\00\00\08\00\00\00\02") + (data (i32.const 3292) "\1c") + (data (i32.const 3304) "\0e\00\00\00\08\00\00\00\03") + (data (i32.const 3324) "\1c") + (data (i32.const 3336) "\0f\00\00\00\08\00\00\00\04") + (data (i32.const 3356) "\1c") + (data (i32.const 3368) "\0f\00\00\00\08\00\00\00\05") + (data (i32.const 3388) "\1c") + (data (i32.const 3400) "\0e\00\00\00\08\00\00\00\06") + (data (i32.const 3420) "\1c") + (data (i32.const 3432) "\0e\00\00\00\08\00\00\00\07") + (data (i32.const 3452) "\1c") + (data (i32.const 3464) "\0e\00\00\00\08\00\00\00\08") + (data (i32.const 3484) "\1c") + (data (i32.const 3496) "\0e\00\00\00\08\00\00\00\t") + (data (i32.const 3516) "\1c") + (data (i32.const 3528) "\0e\00\00\00\08\00\00\00\n") + (data (i32.const 3548) "\1c") + (data (i32.const 3560) "\0e\00\00\00\08\00\00\00\0b") + (data (i32.const 3580) "\1c") + (data (i32.const 3592) "\0e\00\00\00\08\00\00\00\0c") + (data (i32.const 3612) "\1c") + (data (i32.const 3624) "\0e\00\00\00\08\00\00\00\0d") + (data (i32.const 3644) ",") + (data (i32.const 3656) "\03\00\00\00\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01") + (data (i32.const 3692) "\1c") + (data (i32.const 3704) "\10\00\00\00\08\00\00\00\0e") + (data (i32.const 3728) "\11\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 3756) "$\t\00\00\00\00\00\00 \00\00\00\00\00\00\00\04A\00\00\00\00\00\00\02\t\00\00\00\00\00\00\02\01\00\00\00\00\00\00\04A\00\00\00\00\00\00\02A\00\00\00\00\00\00$\1a\00\00\00\00\00\00$\19") + (table $0 15 funcref) + (elem $0 (i32.const 1) $start:std/staticarray~anonymous|0 $start:std/staticarray~anonymous|1 $start:std/staticarray~anonymous|2 $start:std/staticarray~anonymous|3 $start:std/staticarray~anonymous|3 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $start:std/staticarray~anonymous|7 $start:std/staticarray~anonymous|8 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $~lib/util/sort/COMPARATOR~anonymous|0) (export "memory" (memory $0)) (start $~start) (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) @@ -138,7 +173,7 @@ if i32.const 1088 i32.const 1152 - i32.const 114 + i32.const 115 i32.const 41 call $~lib/builtins/abort unreachable @@ -162,7 +197,7 @@ if i32.const 1088 i32.const 1152 - i32.const 129 + i32.const 130 i32.const 41 call $~lib/builtins/abort unreachable @@ -269,7 +304,7 @@ if i32.const 0 local.get $0 - i32.const 19660 + i32.const 20252 i32.lt_u local.get $0 i32.load offset=8 @@ -319,7 +354,7 @@ if (result i32) i32.const 1 else - i32.const 3168 + i32.const 3728 i32.load local.get $1 i32.lt_u @@ -334,7 +369,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 3172 + i32.const 3732 i32.add i32.load i32.const 32 @@ -930,10 +965,10 @@ if unreachable end - i32.const 19664 + i32.const 20256 i32.const 0 i32.store - i32.const 21232 + i32.const 21824 i32.const 0 i32.store loop $for-loop|0 @@ -944,7 +979,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 19664 + i32.const 20256 i32.add i32.const 0 i32.store offset=4 @@ -962,7 +997,7 @@ i32.add i32.const 2 i32.shl - i32.const 19664 + i32.const 20256 i32.add i32.const 0 i32.store offset=96 @@ -980,20 +1015,20 @@ br $for-loop|0 end end - i32.const 19664 - i32.const 21236 + i32.const 20256 + i32.const 21828 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 19664 + i32.const 20256 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/__free (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 19660 + i32.const 20252 i32.lt_u if return @@ -1120,7 +1155,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 19660 + i32.const 20252 i32.lt_u if local.get $0 @@ -1215,7 +1250,7 @@ unreachable end local.get $0 - i32.const 19660 + i32.const 20252 i32.lt_u if local.get $0 @@ -2841,6 +2876,27 @@ end end ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + i32.const 1088 + i32.const 1776 + i32.const 107 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2965,11 +3021,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3868 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3077,11 +3133,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3868 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3106,7 +3162,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - i32.const 2720 + i32.const 2768 local.set $0 br $__inlined_func$~lib/util/string/joinStringArray end @@ -3120,7 +3176,7 @@ local.tee $0 i32.store local.get $0 - i32.const 2720 + i32.const 2768 local.get $0 select local.set $0 @@ -3278,6 +3334,51 @@ end local.get $0 ) + (func $start:std/staticarray~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 1 + i32.add + ) + (func $start:std/staticarray~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $std/staticarray/maxVal + local.tee $1 + local.get $0 + local.get $0 + local.get $1 + i32.lt_s + select + global.set $std/staticarray/maxVal + ) + (func $start:std/staticarray~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/staticarray~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $start:std/staticarray~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.eq + ) + (func $start:std/staticarray~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 4 + i32.eq + ) + (func $start:std/staticarray~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.le_s + ) + (func $start:std/staticarray~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.gt_s + ) (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) @@ -4107,8 +4208,8 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $invalid - block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $folding-inner0 + block $invalid block $~lib/staticarray/StaticArray block $~lib/staticarray/StaticArray block $~lib/array/Array<~lib/string/String> @@ -4125,7 +4226,7 @@ i32.const 8 i32.sub i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/function/Function<%28i32%2Ci32%29=>i32> $invalid + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $invalid end return end @@ -4200,12 +4301,11 @@ end return end - local.get $0 - i32.load offset=4 - call $~lib/rt/itcms/__visit - return + unreachable end - unreachable + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit ) (func $~start call $start:std/staticarray @@ -4214,30 +4314,43 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) - (local $4 f64) + (local $3 i32) + (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 f64) + (local $8 f32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 32 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $1 i64.const 0 i64.store - local.get $6 + local.get $1 i64.const 0 i64.store offset=8 - local.get $6 + local.get $1 i64.const 0 i64.store offset=16 - local.get $6 + local.get $1 + i64.const 0 + i64.store offset=24 + local.get $1 i32.const 1056 i32.store i32.const 1056 @@ -4362,7 +4475,7 @@ memory.size i32.const 16 i32.shl - i32.const 19660 + i32.const 20252 i32.sub i32.const 1 i32.shr_u @@ -4394,17 +4507,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $6 + local.get $1 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $6 + local.tee $1 i32.store - local.get $6 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -4419,9 +4532,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $6 + local.tee $1 i32.store - local.get $6 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4436,9 +4549,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $6 + local.tee $1 i32.store - local.get $6 + local.get $1 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 7 @@ -4453,9 +4566,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $6 + local.tee $1 i32.store - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4473,16 +4586,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $6 + local.tee $1 i32.store - local.get $6 + local.get $1 i32.const 8 call $~lib/staticarray/StaticArray#__set global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $6 + local.tee $1 i32.store - local.get $6 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 8 @@ -4498,17 +4611,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $6 + local.get $1 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $6 + local.tee $1 i32.store - local.get $6 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4525,60 +4638,60 @@ i32.const 8 i32.const 5 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.store offset=4 - local.get $6 + local.get $1 call $std/staticarray/Ref#constructor - local.tee $0 + local.tee $3 i32.store - local.get $6 - local.get $0 + local.get $1 + local.get $3 i32.const 1 call $~lib/rt/itcms/__link - local.get $6 + local.get $1 call $std/staticarray/Ref#constructor - local.tee $0 + local.tee $3 i32.store offset=4 - local.get $6 - local.get $0 + local.get $1 + local.get $3 i32.const 1 call $~lib/rt/itcms/__link - local.get $6 + local.get $1 global.set $std/staticarray/arr4 i32.const 0 global.set $std/staticarray/arr3 i32.const 0 global.set $std/staticarray/arr4 global.get $~lib/memory/__stack_pointer - local.tee $6 - local.get $6 + local.tee $1 + local.get $1 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $1 i32.const 0 i32.store - local.get $6 + local.get $1 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.store - local.get $6 + local.get $1 i32.const 12 call $~lib/memory/memory.fill global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store offset=4 - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4595,17 +4708,17 @@ unreachable end loop $for-loop|0 - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $1 + local.get $0 i32.gt_s if - local.get $6 local.get $1 + local.get $0 call $~lib/staticarray/StaticArray#__get if i32.const 0 @@ -4615,10 +4728,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end @@ -4627,14 +4740,14 @@ i32.const 6 i32.const 1728 call $~lib/rt/__newArray - local.tee $6 + local.tee $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 call $~lib/staticarray/StaticArray.fromArray local.tee $0 i32.store offset=4 - local.get $6 + local.get $1 i32.load offset=12 local.get $0 i32.const 20 @@ -4651,38 +4764,18 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $1 loop $for-loop|1 - local.get $6 - i32.load offset=12 local.get $1 + i32.load offset=12 + local.get $2 i32.gt_s if local.get $0 - local.get $1 + local.get $2 call $~lib/staticarray/StaticArray#__get - local.set $2 - local.get $6 - i32.load offset=12 - local.get $1 - i32.le_u - if - i32.const 1088 - i32.const 1776 - i32.const 107 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load local.get $2 + call $~lib/array/Array#__get i32.ne if i32.const 0 @@ -4692,10 +4785,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|1 end end @@ -4704,15 +4797,15 @@ i32.const 6 i32.const 1824 call $~lib/rt/__newArray - local.set $6 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store - local.get $6 + local.get $1 call $~lib/staticarray/StaticArray.fromArray - local.tee $6 + local.tee $1 i32.store offset=4 - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4730,29 +4823,29 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.const 1856 i32.const 8 call $~lib/memory/memory.copy - local.get $6 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 1888 i32.const 4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=12 - local.get $6 local.get $1 + local.get $0 call $~lib/staticarray/StaticArray.concat - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4772,25 +4865,25 @@ i32.const 0 i32.const 3 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 1920 i32.const 0 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=12 - local.get $6 local.get $1 + local.get $0 call $~lib/staticarray/StaticArray.concat - local.tee $1 + local.tee $0 i32.store offset=8 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4809,26 +4902,26 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.const 2128 i32.const 20 call $~lib/memory/memory.copy - local.get $6 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const 0 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 + local.tee $2 i32.store offset=4 - local.get $0 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4844,33 +4937,33 @@ unreachable end i32.const 0 - local.set $1 + local.set $0 loop $for-loop|2 - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $1 + local.get $0 i32.gt_s if - local.get $6 local.get $1 + local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store + local.get $2 local.get $0 - local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=12 - local.get $2 - local.get $5 + local.get $3 + local.get $4 call $~lib/string/String.__eq i32.eqz if @@ -4881,21 +4974,21 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|2 end end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const 1 i32.const 3 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4911,18 +5004,18 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $0 + local.set $2 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 - i32.store + local.tee $3 local.get $2 + i32.store + local.get $3 i32.const 1984 i32.store offset=12 - local.get $0 + local.get $2 i32.const 1984 call $~lib/string/String.__eq i32.eqz @@ -4934,18 +5027,18 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store + local.tee $2 local.get $0 + i32.store + local.get $2 i32.const 2016 i32.store offset=12 - local.get $1 + local.get $0 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -4958,13 +5051,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const 1 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4972,7 +5065,7 @@ i32.shr_u i32.const 1 i32.sub - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4988,19 +5081,19 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const 0 i32.const 50 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5016,13 +5109,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const 100 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5037,13 +5130,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const -1 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5059,18 +5152,18 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $0 - local.get $1 - i32.store + local.tee $2 local.get $0 + i32.store + local.get $2 i32.const 2080 i32.store offset=12 - local.get $1 + local.get $0 i32.const 2080 call $~lib/string/String.__eq i32.eqz @@ -5083,13 +5176,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const -2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5104,13 +5197,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const 2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $6 + local.tee $1 i32.store offset=4 - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5126,18 +5219,18 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $6 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $6 - i32.store + local.tee $0 local.get $1 + i32.store + local.get $0 i32.const 2016 i32.store offset=12 - local.get $6 + local.get $1 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -5153,29 +5246,29 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.const 2304 i32.const 20 call $~lib/memory/memory.copy - local.get $6 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 9 i32.const 2352 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=12 - local.get $6 local.get $1 + local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#concat - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.load offset=12 - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5195,18 +5288,18 @@ i32.const 9 i32.const 2416 call $~lib/rt/__newArray - local.set $1 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=12 - local.get $6 local.get $1 + local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#concat - local.tee $1 + local.tee $0 i32.store offset=16 - local.get $1 + local.get $0 i32.load offset=12 - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5227,16 +5320,16 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.const 2448 i32.const 20 call $~lib/memory/memory.copy - local.get $6 + local.get $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 1984 i32.store offset=12 - local.get $6 + local.get $1 i32.const 1984 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5253,7 +5346,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2384 i32.store offset=12 - local.get $6 + local.get $1 i32.const 2384 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5268,7 +5361,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $6 + local.get $1 i32.const 2080 i32.const 5 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5283,7 +5376,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $6 + local.get $1 i32.const 2080 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5300,18 +5393,16 @@ i32.const 8 i32.const 10 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.const 2496 i32.const 8 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) i32.const 0 - local.set $1 - i32.const 0 - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5325,31 +5416,31 @@ br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|0 - local.get $1 local.get $2 - i32.lt_s + local.get $16 + i32.gt_s if i32.const 1 i32.const 1 - local.get $1 + local.get $16 i32.const 3 i32.shl - local.get $6 + local.get $1 i32.add f64.load - local.tee $4 - local.get $4 + local.tee $7 + local.get $7 f64.ne - local.get $4 + local.get $7 f64.const nan:0x8000000000000 f64.eq select br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $1 + local.get $16 i32.const 1 i32.add - local.set $1 + local.set $16 br $while-continue|0 end end @@ -5367,18 +5458,18 @@ i32.const 4 i32.const 11 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $1 i32.const 2528 i32.const 4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) i32.const 0 - local.set $1 + local.set $16 i32.const 0 - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5392,31 +5483,31 @@ br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|07 - local.get $1 local.get $2 - i32.lt_s + local.get $16 + i32.gt_s if i32.const 1 i32.const 1 - local.get $1 + local.get $16 i32.const 2 i32.shl - local.get $6 + local.get $1 i32.add f32.load - local.tee $3 - local.get $3 + local.tee $8 + local.get $8 f32.ne - local.get $3 + local.get $8 f32.const nan:0x400000 f32.eq select br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $1 + local.get $16 i32.const 1 i32.add - local.set $1 + local.set $16 br $while-continue|07 end end @@ -5435,24 +5526,24 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $0 i32.const 2560 i32.const 12 call $~lib/memory/memory.copy - local.get $6 + local.get $0 i32.store offset=16 i32.const 0 local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf - local.get $6 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $2 i32.const 0 - local.get $0 + local.get $2 select i32.eqz if @@ -5461,14 +5552,14 @@ br $__inlined_func$~lib/staticarray/StaticArray#indexOf end loop $while-continue|013 - local.get $0 local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $0 i32.add i32.load i32.const 2 @@ -5496,15 +5587,15 @@ i32.const 0 local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf14 - local.get $6 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $2 i32.const 0 - local.get $0 + local.get $2 select i32.eqz if @@ -5513,14 +5604,14 @@ br $__inlined_func$~lib/staticarray/StaticArray#indexOf14 end loop $while-continue|015 - local.get $0 local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $0 i32.add i32.load i32.const 7 @@ -5550,17 +5641,17 @@ i32.const 2 local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf16 - local.get $6 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $2 i32.const 2 i32.le_u i32.const 1 - local.get $0 + local.get $2 select if i32.const -1 @@ -5568,14 +5659,14 @@ br $__inlined_func$~lib/staticarray/StaticArray#indexOf16 end loop $while-continue|017 - local.get $0 local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $0 i32.add i32.load i32.const 9 @@ -5603,24 +5694,24 @@ unreachable end block $__inlined_func$~lib/staticarray/StaticArray#indexOf18 - local.get $6 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $2 i32.const -1 i32.le_s i32.const 1 - local.get $0 + local.get $2 select if i32.const -1 local.set $1 br $__inlined_func$~lib/staticarray/StaticArray#indexOf18 end - local.get $0 + local.get $2 i32.const 1 i32.sub local.tee $1 @@ -5631,14 +5722,14 @@ select local.set $1 loop $while-continue|019 - local.get $0 local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $0 i32.add i32.load i32.const 2 @@ -5665,25 +5756,23 @@ call $~lib/builtins/abort unreachable end + i32.const -1 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $6 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $2 i32.const -3 i32.le_s i32.const 1 - local.get $0 + local.get $2 select - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - end - local.get $0 + br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf20 + local.get $2 i32.const 3 i32.sub local.tee $1 @@ -5694,14 +5783,14 @@ select local.set $1 loop $while-continue|021 - local.get $0 local.get $1 - i32.gt_s + local.get $2 + i32.lt_s if local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $0 i32.add i32.load i32.const 2 @@ -5727,266 +5816,114 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - call $~lib/rt/itcms/__new - local.tee $6 - i32.const 2688 - i32.const 12 - call $~lib/memory/memory.copy - local.get $6 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 2752 - i32.store offset=20 - local.get $6 - i32.const 2752 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2784 - i32.store offset=12 - local.get $1 - i32.const 2784 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 148 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2720 - i32.store offset=20 - local.get $6 - i32.const 2720 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2832 - i32.store offset=12 - local.get $1 - i32.const 2832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 149 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2880 - i32.store offset=20 - local.get $6 - i32.const 2880 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2912 - i32.store offset=12 - local.get $1 - i32.const 2912 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 150 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2960 - i32.store offset=20 - local.get $6 - i32.const 2960 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 2992 - i32.store offset=12 - local.get $1 - i32.const 2992 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 151 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 2752 - i32.store offset=20 - local.get $6 - i32.const 2752 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $1 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3276 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.tee $0 - i32.const 0 - i32.store - local.get $0 - i32.const 2752 - i32.store - local.get $6 - i32.const 2752 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=12 - local.get $1 - local.get $6 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 152 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 - i32.const 3056 + local.tee $1 + i32.const 2592 i32.const 16 call $~lib/memory/memory.copy - local.get $6 + local.get $1 i32.store offset=16 i32.const 1 global.set $~argumentsLength - local.get $6 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 - local.set $1 - i32.const -1 + local.tee $16 local.set $0 + i32.const -1 + local.set $2 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $2 + local.get $16 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $1 - local.get $2 + local.get $0 + local.get $16 i32.add - local.get $2 + local.get $16 i32.const 1 i32.sub - local.get $1 - local.get $1 - local.get $2 + local.get $0 + local.get $0 + local.get $16 i32.ge_s select - local.get $1 + local.get $0 i32.const 0 i32.lt_s select - local.set $1 + local.set $0 loop $while-continue|00 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $2 i32.const 2 i32.shl - local.get $6 + local.get $1 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $0 + local.get $2 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|00 end end i32.const -1 - local.set $0 + local.set $2 end - local.get $0 + local.get $2 i32.const 3 i32.ne if i32.const 0 i32.const 1216 - i32.const 158 + i32.const 148 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 1 global.set $~argumentsLength - local.get $6 + local.get $1 + local.tee $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 local.set $1 i32.const -1 - local.set $0 + local.set $2 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 - local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $16 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 local.get $1 - local.get $2 + local.get $16 i32.add - local.get $2 + local.get $16 i32.const 1 i32.sub local.get $1 local.get $1 - local.get $2 + local.get $16 i32.ge_s select local.get $1 @@ -6000,169 +5937,1544 @@ i32.ge_s if local.get $1 - local.tee $0 + local.tee $2 i32.const 2 i32.shl - local.get $6 + local.get $0 i32.add i32.load i32.const 7 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 + local.get $2 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|06 + end + end + i32.const -1 + local.set $2 + end + local.get $2 + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $1 + i32.eqz + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 + end + local.get $1 + i32.const 1 + i32.sub + i32.const 3 + local.get $1 + i32.const 3 + i32.le_u + select + local.set $1 + loop $while-continue|023 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|023 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $1 + i32.eqz + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 + end + local.get $1 + i32.const 1 + i32.sub + i32.const 2 + local.get $1 + i32.const 2 + i32.le_u + select + local.set $1 + loop $while-continue|025 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|025 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1216 + i32.const 151 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $1 + i32.eqz + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 + end + local.get $1 + i32.const 2 + i32.sub + local.set $1 + loop $while-continue|027 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|027 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + if + i32.const 0 + i32.const 1216 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const -1 + local.set $1 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $2 + i32.eqz + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 + local.get $2 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|029 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + i32.const 2 + i32.eq + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|029 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 153 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 2736 + i32.const 12 + call $~lib/memory/memory.copy + local.get $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 2800 + i32.store offset=20 + local.get $1 + i32.const 2800 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2832 + i32.store offset=12 + local.get $0 + i32.const 2832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 159 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2768 + i32.store offset=20 + local.get $1 + i32.const 2768 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2880 + i32.store offset=12 + local.get $0 + i32.const 2880 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 160 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2928 + i32.store offset=20 + local.get $1 + i32.const 2928 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2960 + i32.store offset=12 + local.get $0 + i32.const 2960 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 161 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3008 + i32.store offset=20 + local.get $1 + i32.const 3008 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3040 + i32.store offset=12 + local.get $0 + i32.const 3040 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 162 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2800 + i32.store offset=20 + local.get $1 + i32.const 2800 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3868 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 0 + i32.store + local.get $2 + i32.const 2800 + i32.store + local.get $1 + i32.const 2800 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 163 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 3104 + i32.const 8 + call $~lib/memory/memory.copy + local.get $1 + i32.store offset=16 + i32.const 1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $0 + local.get $0 + i32.const 1 + i32.gt_u + select + local.set $16 + loop $for-loop|024 + local.get $0 + local.get $16 + i32.gt_s + if + local.get $16 + i32.const 2 + i32.shl + local.get $1 + i32.add + i32.const 1 + i32.store + local.get $16 + i32.const 1 + i32.add + local.set $16 + br $for-loop|024 + end + end + local.get $1 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + if + i32.const 0 + i32.const 1216 + i32.const 171 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 172 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 3136 + i32.const 12 + call $~lib/memory/memory.copy + local.get $1 + i32.store offset=16 + i32.const 0 + local.set $16 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $0 + i32.const 1 + i32.gt_u + if + local.get $0 + i32.const 1 + i32.shr_u + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + loop $while-continue|026 + local.get $2 + local.get $16 + i32.gt_u + if + local.get $16 + i32.const 2 + i32.shl + local.get $1 + i32.add + local.tee $3 + i32.load + local.set $4 + local.get $3 + local.get $0 + local.get $16 + i32.sub + i32.const 2 + i32.shl + local.get $1 + i32.add + local.tee $3 + i32.load + i32.store + local.get $3 + local.get $4 + i32.store + local.get $16 + i32.const 1 + i32.add + local.set $16 + br $while-continue|026 + end + end + end + local.get $1 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 180 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 181 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 182 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 3168 + i32.const 20 + call $~lib/memory/memory.copy + local.get $1 + i32.store offset=16 + i32.const 0 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $0 + local.get $0 + select + local.set $2 + local.get $0 + i32.const 3 + local.get $0 + local.get $0 + i32.const 3 + i32.gt_u + select + local.tee $3 + i32.sub + local.set $16 + local.get $2 + i32.const 2 + i32.shl + local.get $1 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $1 + i32.add + local.get $16 + local.get $0 + local.get $2 + i32.sub + local.tee $0 + local.get $0 + local.get $16 + i32.gt_s + select + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $1 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 190 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 191 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 192 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 194 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 3216 + i32.const 12 + call $~lib/memory/memory.copy + local.get $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.tee $2 + i32.const 3248 + i32.store offset=12 + i32.const 0 + local.set $16 + local.get $2 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3868 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $3 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + loop $for-loop|027 + local.get $3 + local.get $16 + i32.gt_s + if + local.get $1 + local.get $16 + i32.const 2 + i32.shl + local.tee $5 + i32.add + i32.load + local.set $6 + i32.const 3 + global.set $~argumentsLength + local.get $4 + local.get $5 + i32.add + local.get $6 + local.get $16 + local.get $1 + i32.const 3248 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.store + local.get $16 + i32.const 1 + i32.add + local.set $16 + br $for-loop|027 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 203 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 204 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 205 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3280 + i32.store offset=12 + i32.const 0 + local.set $16 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $0 + loop $for-loop|030 + local.get $0 + local.get $16 + i32.gt_s + if + local.get $16 + i32.const 2 + i32.shl + local.get $1 + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $16 + local.get $1 + i32.const 3280 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $16 + i32.const 1 + i32.add + local.set $16 + br $for-loop|030 + end + end + global.get $std/staticarray/maxVal + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 209 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.tee $0 + local.get $0 + i32.const 3312 + i32.store offset=12 + i32.const 0 + local.set $16 + local.get $0 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3868 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.tee $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $12 + loop $for-loop|028 + local.get $12 + local.get $16 + i32.gt_s + if + local.get $16 + i32.const 2 + i32.shl + local.get $1 + i32.add + i32.load + local.set $9 + i32.const 3 + global.set $~argumentsLength + local.get $9 + local.get $16 + local.get $1 + i32.const 3312 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $3 + i32.load offset=12 + local.tee $13 + i32.const 1 + i32.add + local.tee $14 + local.tee $0 + local.get $3 + i32.load offset=8 + local.tee $5 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $0 + i32.const 268435455 + i32.gt_u + if + i32.const 1680 + i32.const 1776 + i32.const 18 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$~lib/rt/itcms/__renew + local.get $5 + i32.const 1 + i32.shl + local.tee $4 + i32.const 1073741820 + local.get $4 + i32.const 1073741820 + i32.lt_u + select + local.tee $4 + local.get $0 + i32.const 8 + local.get $0 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $0 + local.get $0 + local.get $4 + i32.lt_u + select + local.tee $10 + local.tee $4 + local.get $3 + i32.load + local.tee $15 + local.tee $2 + i32.const 20 + i32.sub + local.tee $6 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $6 + local.get $4 + i32.store offset=16 + local.get $2 + local.set $0 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $4 + local.get $6 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $0 + local.get $2 + local.get $4 + local.get $6 + i32.load offset=16 + local.tee $2 + local.get $2 + local.get $4 + i32.gt_u + select + call $~lib/memory/memory.copy + end + local.get $0 + local.get $5 + i32.add + local.get $10 + local.get $5 + i32.sub + call $~lib/memory/memory.fill + local.get $0 + local.get $15 + i32.ne + if + local.get $3 + local.get $0 + i32.store + local.get $3 + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $3 + local.get $10 + i32.store offset=8 + end + local.get $3 + i32.load offset=4 + local.get $13 + i32.const 2 + i32.shl + i32.add + local.get $9 + i32.store + local.get $3 + local.get $14 + i32.store offset=12 + end + local.get $16 + i32.const 1 + i32.add + local.set $16 + br $for-loop|028 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=24 + local.get $3 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 213 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + call $~lib/array/Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 214 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + call $~lib/array/Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 215 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3344 + i32.store offset=12 + i32.const 0 + local.set $16 + i32.const 0 + local.set $2 + local.get $1 + local.tee $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $1 + loop $for-loop|033 + local.get $1 + local.get $16 + i32.gt_s + if + local.get $16 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.set $3 + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $3 + local.get $16 + local.get $0 + i32.const 3344 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $2 + local.get $16 + i32.const 1 + i32.add + local.set $16 + br $for-loop|033 + end + end + local.get $2 + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 219 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3376 + i32.store offset=12 + i32.const 0 + local.set $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $16 + loop $for-loop|035 + local.get $16 + i32.const 0 + i32.ge_s + if + local.get $16 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.set $1 + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $1 + local.get $16 + local.get $0 + i32.const 3376 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $2 + local.get $16 + i32.const 1 + i32.sub + local.set $16 + br $for-loop|035 + end + end + local.get $2 + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 223 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store offset=12 + block $__inlined_func$~lib/staticarray/StaticArray#some (result i32) + i32.const 0 + local.set $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $16 + loop $for-loop|038 + local.get $2 + local.get $16 + i32.lt_s + if + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.set $3 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $3 + local.get $2 + local.get $0 + i32.const 3408 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/staticarray/StaticArray#some + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|038 + end + end + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 226 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3440 + i32.store offset=12 + block $__inlined_func$~lib/staticarray/StaticArray#some39 (result i32) + i32.const 0 + local.set $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $16 + loop $for-loop|040 + local.get $2 + local.get $16 + i32.lt_s + if + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.set $3 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $3 + local.get $2 + local.get $0 + i32.const 3440 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/staticarray/StaticArray#some39 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|040 + end + end + i32.const 0 + end + if + i32.const 0 + i32.const 1216 + i32.const 227 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.store offset=12 + block $__inlined_func$~lib/staticarray/StaticArray#every (result i32) + i32.const 0 + local.set $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $16 + loop $for-loop|041 + local.get $2 + local.get $16 + i32.lt_s + if + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.set $3 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $3 + local.get $2 local.get $0 + i32.const 3472 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $__inlined_func$~lib/staticarray/StaticArray#every + drop + local.get $2 i32.const 1 - i32.sub - local.set $1 - br $while-continue|06 + i32.add + local.set $2 + br $for-loop|041 end end - i32.const -1 - local.set $0 + i32.const 1 end - local.get $0 - i32.const -1 - i32.ne + i32.eqz if i32.const 0 i32.const 1216 - i32.const 159 + i32.const 230 i32.const 3 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 - local.get $6 + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.store offset=12 + block $__inlined_func$~lib/staticarray/StaticArray#every42 (result i32) + i32.const 0 + local.set $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 - i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 + local.set $16 + loop $for-loop|043 + local.get $2 + local.get $16 + i32.lt_s + if + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + i32.load + local.set $3 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $3 + local.get $2 + local.get $0 + i32.const 3504 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $__inlined_func$~lib/staticarray/StaticArray#every42 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|043 + end end - local.get $1 i32.const 1 - i32.sub - i32.const 3 - local.get $1 + end + if + i32.const 0 + i32.const 1216 + i32.const 231 i32.const 3 - i32.le_u - select - local.set $1 - loop $while-continue|025 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store offset=12 + i32.const 0 + local.set $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $2 + block $__inlined_func$~lib/staticarray/StaticArray#findIndex + loop $for-loop|044 local.get $1 - i32.const 0 - i32.ge_s + local.get $2 + i32.lt_s if local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $0 i32.add i32.load - i32.const 2 - i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $0 + i32.const 3536 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex local.get $1 i32.const 1 - i32.sub + i32.add local.set $1 - br $while-continue|025 + br $for-loop|044 end end i32.const -1 local.set $1 end local.get $1 - i32.const 3 + i32.const 1 i32.ne if i32.const 0 i32.const 1216 - i32.const 160 + i32.const 234 i32.const 3 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 - local.get $6 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.tee $1 - i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 - end - local.get $1 - i32.const 1 - i32.sub - i32.const 2 - local.get $1 - i32.const 2 - i32.le_u - select - local.set $1 - loop $while-continue|027 + global.get $~lib/memory/__stack_pointer + i32.const 3568 + i32.store offset=12 + i32.const 0 + local.set $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $2 + block $__inlined_func$~lib/staticarray/StaticArray#findIndex45 + loop $for-loop|046 local.get $1 - i32.const 0 - i32.ge_s + local.get $2 + i32.lt_s if local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $0 i32.add i32.load - i32.const 2 - i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $0 + i32.const 3568 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex45 local.get $1 i32.const 1 - i32.sub + i32.add local.set $1 - br $while-continue|027 + br $for-loop|046 end end i32.const -1 local.set $1 end local.get $1 + i32.const -1 + i32.ne if i32.const 0 i32.const 1216 - i32.const 161 + i32.const 235 i32.const 3 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - local.get $6 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.tee $1 - i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - end - local.get $1 - i32.const 2 - i32.sub - local.set $1 - loop $while-continue|029 + global.get $~lib/memory/__stack_pointer + i32.const 3600 + i32.store offset=12 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex + loop $for-loop|047 local.get $1 i32.const 0 i32.ge_s @@ -6170,50 +7482,52 @@ local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $0 i32.add i32.load - i32.const 2 - i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $0 + i32.const 3600 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex local.get $1 i32.const 1 i32.sub local.set $1 - br $while-continue|029 + br $for-loop|047 end end i32.const -1 local.set $1 end local.get $1 + i32.const 1 + i32.ne if i32.const 0 i32.const 1216 - i32.const 162 + i32.const 238 i32.const 3 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf30 - local.get $6 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - local.tee $1 - i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf30 - end - local.get $1 - i32.const 1 - i32.sub - local.set $1 - loop $while-continue|031 + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.store offset=12 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex48 + loop $for-loop|049 local.get $1 i32.const 0 i32.ge_s @@ -6221,29 +7535,34 @@ local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $0 i32.add i32.load - i32.const 2 - i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf30 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $0 + i32.const 3632 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex48 local.get $1 i32.const 1 i32.sub local.set $1 - br $while-continue|031 + br $for-loop|049 end end i32.const -1 local.set $1 end local.get $1 - i32.const 3 + i32.const -1 i32.ne if i32.const 0 i32.const 1216 - i32.const 163 + i32.const 239 i32.const 3 call $~lib/builtins/abort unreachable @@ -6252,22 +7571,22 @@ i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 - i32.const 3104 + local.tee $1 + i32.const 3664 i32.const 16 call $~lib/memory/memory.copy - local.get $6 - i32.store offset=16 + local.get $1 + i32.store offset=28 i32.const 0 global.set $~argumentsLength i32.const 0 - local.set $1 + local.set $16 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6281,37 +7600,37 @@ end unreachable end - i32.const 3152 - local.set $1 + i32.const 3712 + local.set $16 global.get $~lib/memory/__stack_pointer - i32.const 3152 + i32.const 3712 i32.store end - local.get $6 - local.get $6 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $1 + local.get $16 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray#__get if i32.const 0 i32.const 1216 - i32.const 171 + i32.const 248 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6319,12 +7638,12 @@ if i32.const 0 i32.const 1216 - i32.const 172 + i32.const 249 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $1 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -6332,12 +7651,12 @@ if i32.const 0 i32.const 1216 - i32.const 173 + i32.const 250 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $1 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6345,23 +7664,23 @@ if i32.const 0 i32.const 1216 - i32.const 174 + i32.const 251 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 19660 + i32.const 20252 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 i32.gt_s if - loop $while-continue|024 + loop $while-continue|037 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|024 + br $while-continue|037 end end end @@ -6386,13 +7705,13 @@ i32.add global.set $~lib/rt/itcms/threshold global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 32 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 19680 - i32.const 19728 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6405,11 +7724,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3868 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6441,11 +7760,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3868 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6507,11 +7826,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3868 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6551,11 +7870,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3868 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6588,7 +7907,7 @@ if i32.const 1680 i32.const 1152 - i32.const 42 + i32.const 43 i32.const 60 call $~lib/builtins/abort unreachable @@ -6630,11 +7949,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3868 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6754,11 +8073,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3868 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6778,7 +8097,7 @@ if i32.const 1088 i32.const 1152 - i32.const 114 + i32.const 115 i32.const 41 call $~lib/builtins/abort unreachable @@ -6797,7 +8116,7 @@ if i32.const 2176 i32.const 1152 - i32.const 118 + i32.const 119 i32.const 40 call $~lib/builtins/abort unreachable @@ -6820,11 +8139,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3868 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6853,7 +8172,7 @@ if i32.const 1680 i32.const 1152 - i32.const 184 + i32.const 230 i32.const 60 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/staticarray.ts b/tests/compiler/std/staticarray.ts index 6ce5f5af42..0a8919d6d6 100644 --- a/tests/compiler/std/staticarray.ts +++ b/tests/compiler/std/staticarray.ts @@ -142,6 +142,17 @@ arr4 = changetype>(0); assert(array.indexOf(2, -3) == 0); } +// lastIndexOf +{ + const numbers: StaticArray = [2, 5, 9, 2]; + assert(numbers.lastIndexOf(2) == 3); + assert(numbers.lastIndexOf(7) == -1); + assert(numbers.lastIndexOf(2, 3) == 3); + assert(numbers.lastIndexOf(2, 2) == 0); + assert(numbers.lastIndexOf(2, -2) == 0); + assert(numbers.lastIndexOf(2, -1) == 3); +} + // join + toString { const elements: StaticArray = ['Fire', 'Air', 'Water']; @@ -152,17 +163,83 @@ arr4 = changetype>(0); assert(elements.join() == elements.toString()); } -// lastIndexOf +// fill { - const numbers: StaticArray = [2, 5, 9, 2]; - assert(numbers.lastIndexOf(2) == 3); - assert(numbers.lastIndexOf(7) == -1); - assert(numbers.lastIndexOf(2, 3) == 3); - assert(numbers.lastIndexOf(2, 2) == 0); - assert(numbers.lastIndexOf(2, -2) == 0); - assert(numbers.lastIndexOf(2, -1) == 3); + const numbers: StaticArray = [0, 0]; + numbers.fill(1, 1); + + assert(numbers[0] == 0); + assert(numbers[1] == 1); +} + +// reverse +{ + const numbers: StaticArray = [1, 2, 3]; + numbers.reverse(); + + assert(numbers[0] == 3); + assert(numbers[1] == 2); + assert(numbers[2] == 1); } +// copyWithin +{ + const numbers: StaticArray = [1, 2, 3, 4, 5]; + numbers.copyWithin(0, 3); + + assert(numbers[0] == 4); + assert(numbers[1] == 5); + assert(numbers[2] == 3); + assert(numbers[3] == 4); + assert(numbers[4] == 5); +} + +let maxVal = 0; +{ + const numbers: StaticArray = [1, 2, 3]; + + // map + const incNums = numbers.map(x => x + 1); + assert(incNums[0] == 2); + assert(incNums[1] == 3); + assert(incNums[2] == 4); + + // forEach + numbers.forEach(x => { maxVal = max(maxVal, x); } ); + assert(maxVal == 3); + + // filter + const filtered = numbers.filter(x => x >= 2); + assert(filtered.length == 2); + assert(filtered[0] == 2); + assert(filtered[1] == 3); + + // reduce + const sum1 = numbers.reduce((x, y) => x + y, 0); + assert(sum1 == 6); + + // reduceRight + const sum2 = numbers.reduceRight((x, y) => x + y, 0); + assert(sum2 == 6); + + // some + assert(numbers.some(x => x == 2)); + assert(!numbers.some(x => x == 4)); + + // every + assert(numbers.every(x => x <= 3)); + assert(!numbers.every(x => x > 3)); + + // findIndex + assert(numbers.findIndex(x => x == 2) == 1); + assert(numbers.findIndex(x => x == 4) == -1); + + // findLastIndex + assert(numbers.findLastIndex(x => x == 2) == 1); + assert(numbers.findLastIndex(x => x == 4) == -1); +} + + // sort { const array: StaticArray = [0, 3, 2, 1]; diff --git a/tests/compiler/std/staticarray.untouched.wat b/tests/compiler/std/staticarray.untouched.wat index b699aafabf..d60707ed56 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.untouched.wat @@ -1,15 +1,15 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) @@ -33,11 +33,12 @@ (global $std/staticarray/arr4 (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $std/staticarray/maxVal (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/rt/__rtti_base i32 (i32.const 2144)) - (global $~lib/memory/__data_end i32 (i32.const 2252)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18636)) - (global $~lib/memory/__heap_base i32 (i32.const 18636)) + (global $~lib/rt/__rtti_base i32 (i32.const 2704)) + (global $~lib/memory/__data_end i32 (i32.const 2844)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19228)) + (global $~lib/memory/__heap_base i32 (i32.const 19228)) (memory $0 1) (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") (data (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") @@ -74,24 +75,41 @@ (data (i32.const 1452) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f\00\00\00\00") (data (i32.const 1484) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\04\00\00\00\00\00\c0\7f\00\00\00\00\00\00\00\00") (data (i32.const 1516) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\02\00\00\00\t\00\00\00\t\00\00\00") - (data (i32.const 1548) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00F\00i\00r\00e\00\00\00\00\00") - (data (i32.const 1580) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00i\00r\00\00\00\00\00\00\00") - (data (i32.const 1612) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00W\00a\00t\00e\00r\00\00\00") - (data (i32.const 1644) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\0c\00\00\00 \06\00\00@\06\00\00`\06\00\00") - (data (i32.const 1676) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1708) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1740) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00F\00i\00r\00e\00,\00A\00i\00r\00,\00W\00a\00t\00e\00r\00") - (data (i32.const 1788) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00F\00i\00r\00e\00A\00i\00r\00W\00a\00t\00e\00r\00\00\00\00\00") - (data (i32.const 1836) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1868) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00F\00i\00r\00e\00-\00A\00i\00r\00-\00W\00a\00t\00e\00r\00") - (data (i32.const 1916) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00+\00 \00\00\00\00\00\00\00") - (data (i32.const 1948) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00F\00i\00r\00e\00 \00+\00 \00A\00i\00r\00 \00+\00 \00W\00a\00t\00e\00r\00\00\00\00\00\00\00\00\00") - (data (i32.const 2012) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2060) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2108) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2144) "\0d\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$\t\00\00\00\00\00\00 \00\00\00\00\00\00\00\04A\00\00\00\00\00\00\02\t\00\00\00\00\00\00\02\01\00\00\00\00\00\00\04A\00\00\00\00\00\00\02A\00\00\00\00\00\00$\1a\00\00\00\00\00\00$\19\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (table $0 2 funcref) - (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0) + (data (i32.const 1548) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00\02\00\00\00\05\00\00\00\t\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1596) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00F\00i\00r\00e\00\00\00\00\00") + (data (i32.const 1628) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00i\00r\00\00\00\00\00\00\00") + (data (i32.const 1660) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00W\00a\00t\00e\00r\00\00\00") + (data (i32.const 1692) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\0c\00\00\00P\06\00\00p\06\00\00\90\06\00\00") + (data (i32.const 1724) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1756) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1788) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00F\00i\00r\00e\00,\00A\00i\00r\00,\00W\00a\00t\00e\00r\00") + (data (i32.const 1836) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00F\00i\00r\00e\00A\00i\00r\00W\00a\00t\00e\00r\00\00\00\00\00") + (data (i32.const 1884) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1916) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00F\00i\00r\00e\00-\00A\00i\00r\00-\00W\00a\00t\00e\00r\00") + (data (i32.const 1964) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00+\00 \00\00\00\00\00\00\00") + (data (i32.const 1996) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00F\00i\00r\00e\00 \00+\00 \00A\00i\00r\00 \00+\00 \00W\00a\00t\00e\00r\00\00\00\00\00\00\00\00\00") + (data (i32.const 2060) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2092) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 2124) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2172) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") + (data (i32.const 2204) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2236) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2268) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2300) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2332) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2620) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2704) "\11\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$\t\00\00\00\00\00\00 \00\00\00\00\00\00\00\04A\00\00\00\00\00\00\02\t\00\00\00\00\00\00\02\01\00\00\00\00\00\00\04A\00\00\00\00\00\00\02A\00\00\00\00\00\00$\1a\00\00\00\00\00\00$\19\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (table $0 15 funcref) + (elem $0 (i32.const 1) $start:std/staticarray~anonymous|0 $start:std/staticarray~anonymous|1 $start:std/staticarray~anonymous|2 $start:std/staticarray~anonymous|3 $start:std/staticarray~anonymous|4 $start:std/staticarray~anonymous|5 $start:std/staticarray~anonymous|6 $start:std/staticarray~anonymous|7 $start:std/staticarray~anonymous|8 $start:std/staticarray~anonymous|9 $start:std/staticarray~anonymous|10 $start:std/staticarray~anonymous|11 $start:std/staticarray~anonymous|12 $~lib/util/sort/COMPARATOR~anonymous|0) (export "memory" (memory $0)) (start $~start) (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) @@ -111,7 +129,7 @@ if i32.const 64 i32.const 128 - i32.const 114 + i32.const 115 i32.const 41 call $~lib/builtins/abort unreachable @@ -146,7 +164,7 @@ if i32.const 64 i32.const 128 - i32.const 129 + i32.const 130 i32.const 41 call $~lib/builtins/abort unreachable @@ -4269,26 +4287,6 @@ end i32.const -1 ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (param $1 i32) (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 1 - drop - local.get $0 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length - local.get $1 - call $~lib/util/string/joinStringArray - return - ) (func $~lib/staticarray/StaticArray#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -4369,2500 +4367,3939 @@ local.get $2 call $~lib/staticarray/StaticArray#lastIndexOf ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) + (func $~lib/staticarray/StaticArray<~lib/string/String>#join (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop i32.const 0 i32.const 1 - i32.ge_s + i32.lt_s drop - local.get $2 - local.get $1 - i32.sub i32.const 1 - i32.add - local.set $5 + drop + local.get $0 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length local.get $1 - local.get $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 - local.get $3 - i32.sub - i32.const 1 - i32.and - i32.sub + call $~lib/util/string/joinStringArray + return + ) + (func $~lib/staticarray/StaticArray#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + local.set $4 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.set $5 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $5 + local.get $2 + i32.add + local.tee $6 + i32.const 0 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + else + local.get $2 + local.tee $7 + local.get $5 + local.tee $6 + local.get $7 + local.get $6 + i32.lt_s + select + end + local.set $2 local.get $3 i32.const 0 + i32.lt_s + if (result i32) + local.get $5 + local.get $3 + i32.add + local.tee $6 + i32.const 0 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_s + select + else + local.get $3 + local.tee $7 + local.get $5 + local.tee $6 + local.get $7 + local.get $6 + i32.lt_s + select + end + local.set $3 + i32.const 0 + drop + i32.const 4 + i32.const 1 i32.eq - select - i32.add - local.set $6 + drop loop $for-loop|0 - local.get $6 local.get $2 - i32.le_s + local.get $3 + i32.lt_s local.set $7 local.get $7 if - local.get $0 - local.get $6 + local.get $4 + local.get $2 i32.const 2 i32.shl i32.add - i32.load - local.set $8 - local.get $0 - local.get $6 - i32.const 2 - i32.shl + local.get $1 + i32.store + local.get $2 + i32.const 1 i32.add - i32.load offset=4 - local.set $9 - local.get $9 - local.set $10 - local.get $8 - local.set $11 - local.get $8 - local.get $9 - i32.const 2 - global.set $~argumentsLength + local.set $2 + br $for-loop|0 + end + end + local.get $0 + ) + (func $~lib/util/bytes/REVERSE (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 1 + i32.gt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $4 + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + local.get $1 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|0 + local.get $2 local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.le_s + i32.lt_u + local.set $5 + local.get $5 if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $0 + local.get $3 + local.get $2 + i32.sub + i32.const 2 + i32.shl + i32.add + local.set $7 + local.get $6 + i32.load + local.set $8 + local.get $6 + local.get $7 + i32.load + i32.store + local.get $7 local.get $8 - local.set $10 - local.get $9 - local.set $11 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 end - local.get $6 - i32.const 1 - i32.sub - local.set $12 - block $while-break|1 - loop $while-continue|1 - local.get $12 - local.get $1 - i32.ge_s - local.set $13 - local.get $13 - if - local.get $0 - local.get $12 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - local.get $8 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - local.get $0 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=8 - local.get $12 - i32.const 1 - i32.sub - local.set $12 - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $0 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $11 - i32.store offset=8 - block $while-break|2 - loop $while-continue|2 - local.get $12 - local.get $1 - i32.ge_s - local.set $13 - local.get $13 - if - local.get $0 - local.get $12 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - local.get $8 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - local.get $0 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store offset=4 - local.get $12 - i32.const 1 - i32.sub - local.set $12 - else - br $while-break|2 - end - br $while-continue|2 - end - end - end - local.get $0 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $for-loop|0 end end ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/staticarray/StaticArray#reverse (param $0 i32) (result i32) + local.get $0 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + call $~lib/util/bytes/REVERSE + local.get $0 + ) + (func $~lib/staticarray/StaticArray#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $0 + local.set $4 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.set $5 + local.get $3 + local.tee $6 + local.get $5 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + local.set $3 local.get $1 - local.get $2 - i32.eq - if + i32.const 0 + i32.lt_s + if (result i32) + local.get $5 local.get $1 - return + i32.add + local.tee $7 + i32.const 0 + local.tee $6 + local.get $7 + local.get $6 + i32.gt_s + select + else + local.get $1 + local.tee $6 + local.get $5 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select end - local.get $1 - local.set $4 - local.get $0 + local.set $8 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $5 + local.get $2 + i32.add + local.tee $7 + i32.const 0 + local.tee $6 + local.get $7 + local.get $6 + i32.gt_s + select + else + local.get $2 + local.tee $6 + local.get $5 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $9 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $5 + local.get $3 + i32.add + local.tee $7 + i32.const 0 + local.tee $6 + local.get $7 + local.get $6 + i32.gt_s + select + else + local.get $3 + local.tee $6 + local.get $5 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + end + local.set $10 + local.get $10 + local.get $9 + i32.sub + local.tee $7 + local.get $5 + local.get $8 + i32.sub + local.tee $6 + local.get $7 + local.get $6 + i32.lt_s + select + local.set $11 local.get $4 + local.get $8 i32.const 2 i32.shl i32.add - i32.load - local.get $0 local.get $4 - i32.const 1 - i32.add - local.tee $4 + local.get $9 i32.const 2 i32.shl i32.add - i32.load + local.get $11 i32.const 2 - global.set $~argumentsLength + i32.shl + call $~lib/memory/memory.copy + local.get $0 + ) + (func $start:std/staticarray~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 1 + i32.add + ) + (func $start:std/staticarray~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + global.get $std/staticarray/maxVal + local.tee $3 + local.get $0 + local.tee $4 local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 + local.get $4 i32.gt_s - if - loop $while-continue|0 - local.get $4 - local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end + select + global.set $std/staticarray/maxVal + ) + (func $~lib/staticarray/StaticArray#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + i32.const 0 + local.set $2 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $4 local.get $4 - local.set $5 - loop $while-continue|1 + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $2 + local.get $0 + i32.const 3 + global.set $~argumentsLength local.get $1 - local.get $5 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $4 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) local.get $2 - i32.lt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - local.set $5 - local.get $5 - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $4 ) - (func $~lib/util/sort/nodePower (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i64) - local.get $1 + (func $start:std/staticarray~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 + i32.const 20 i32.sub - i32.const 1 - i32.add - i64.extend_i32_u - local.set $5 + local.set $2 + local.get $1 + local.get $2 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtSize + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $3 local.get $3 local.get $0 - i32.const 1 - i32.shl - i32.sub - local.set $6 + local.get $1 + local.tee $4 local.get $2 - local.get $6 - i32.add - local.set $7 + i32.load offset=16 + local.tee $5 local.get $4 - local.get $6 - i32.add - i32.const 1 - i32.add - local.set $8 - local.get $7 - i64.extend_i32_u - i64.const 30 - i64.shl - local.get $5 - i64.div_u - local.set $9 - local.get $8 - i64.extend_i32_u - i64.const 30 - i64.shl local.get $5 - i64.div_u - local.set $10 - local.get $9 - local.get $10 - i64.xor - i32.wrap_i64 - i32.clz + i32.lt_u + select + call $~lib/memory/memory.copy + local.get $3 ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - local.get $2 - i32.add - local.set $8 + local.get $0 + i32.load offset=8 + local.set $4 + local.get $1 + local.get $4 local.get $2 - i32.const 1 - i32.add - local.set $6 - loop $for-loop|0 - local.get $6 + i32.shr_u + i32.gt_u + if local.get $1 - i32.gt_s - local.set $9 - local.get $9 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u if - local.get $4 - local.get $6 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 2 + i32.const 656 + i32.const 752 + i32.const 18 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.set $5 + local.get $1 + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $2 + i32.shl + local.set $6 + local.get $3 + if + local.get $4 + i32.const 1 i32.shl - i32.add - i32.load - i32.store + local.tee $7 + i32.const 1073741820 + local.tee $8 + local.get $7 + local.get $8 + i32.lt_u + select + local.tee $8 local.get $6 - i32.const 1 - i32.sub + local.tee $7 + local.get $8 + local.get $7 + i32.gt_u + select local.set $6 - br $for-loop|0 end + local.get $5 + local.get $6 + call $~lib/rt/itcms/__renew + local.set $8 + local.get $8 + local.get $4 + i32.add + i32.const 0 + local.get $6 + local.get $4 + i32.sub + call $~lib/memory/memory.fill + local.get $8 + local.get $5 + i32.ne + if + local.get $0 + local.get $8 + i32.store + local.get $0 + local.get $8 + i32.store offset=4 + local.get $0 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $6 + i32.store offset=8 end + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $2 local.get $2 - local.set $7 - loop $for-loop|1 - local.get $7 - local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $0 + local.get $3 + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 0 + drop + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $3 + call $~lib/array/Array#set:length_ + local.get $3 + ) + (func $start:std/staticarray~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $~lib/staticarray/StaticArray#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $2 + local.set $3 + i32.const 0 + local.set $4 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.set $5 + loop $for-loop|0 + local.get $4 + local.get $5 i32.lt_s - local.set $9 - local.get $9 + local.set $6 + local.get $6 if + local.get $3 + local.get $0 local.get $4 - local.get $8 - local.get $7 - i32.sub i32.const 2 i32.shl i32.add + i32.load + local.get $4 local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.store - local.get $7 + i32.const 4 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $4 i32.const 1 i32.add - local.set $7 - br $for-loop|1 + local.set $4 + br $for-loop|0 end end + local.get $3 + ) + (func $start:std/staticarray~anonymous|4 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 local.get $1 - local.set $9 - loop $for-loop|2 - local.get $9 - local.get $3 - i32.le_s - local.set $10 - local.get $10 + i32.add + ) + (func $~lib/staticarray/StaticArray#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.set $3 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $4 + i32.const 0 + i32.ge_s + local.set $5 + local.get $5 if + local.get $3 + local.get $0 local.get $4 - local.get $7 i32.const 2 i32.shl i32.add i32.load - local.set $11 local.get $4 - local.get $6 + local.get $0 + i32.const 4 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 + end + end + local.get $3 + ) + (func $start:std/staticarray~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.eq + ) + (func $~lib/staticarray/StaticArray#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + i32.const 0 + local.set $2 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $0 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $12 - local.get $11 - local.get $12 - i32.const 2 + local.get $2 + local.get $0 + i32.const 3 global.set $~argumentsLength - local.get $5 + local.get $1 i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - i32.store - local.get $7 - i32.const 1 - i32.sub - local.set $7 - else - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $12 - i32.store - local.get $6 i32.const 1 - i32.add - local.set $6 + return end - local.get $9 + local.get $2 i32.const 1 i32.add - local.set $9 - br $for-loop|2 + local.set $2 + br $for-loop|0 end end + i32.const 0 ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/staticarray~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 4 + i32.eq + ) + (func $start:std/staticarray~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.le_s + ) + (func $~lib/staticarray/StaticArray#every (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) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 1 - i32.le_s - if - return - end - i32.const 0 - i32.const 1 + i32.const 0 + local.set $2 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 i32.lt_s - drop - block $break|0 - block $case1|0 - block $case0|0 - local.get $1 - local.set $3 - local.get $3 - i32.const 3 - i32.eq - br_if $case0|0 - local.get $3 - i32.const 2 - i32.eq - br_if $case1|0 - br $break|0 - end - local.get $0 - i32.load - local.set $3 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.set $5 - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store - local.get $3 - local.get $4 - local.get $5 - select - local.set $3 - local.get $0 - i32.load offset=8 - local.set $4 - local.get $3 - local.get $4 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.set $5 - local.get $0 - local.get $4 - local.get $3 - local.get $5 - select - i32.store offset=4 - local.get $0 - local.get $3 - local.get $4 - local.get $5 - select - i32.store offset=8 - end + local.set $4 + local.get $4 + if local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load - local.set $5 + local.get $2 local.get $0 - i32.load offset=4 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 + i32.const 3 global.set $~argumentsLength - local.get $2 + local.get $1 i32.load - call_indirect $0 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - local.set $3 - local.get $0 - local.get $4 - local.get $5 - local.get $3 - select - i32.store - local.get $0 - local.get $5 - local.get $4 - local.get $3 - select - i32.store offset=4 - return + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.eqz + if + i32.const 0 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $0 - i32.const 0 - local.get $1 - i32.const 1 - i32.sub - i32.const 0 - local.get $2 - call $~lib/util/sort/insertionSort - return end - local.get $1 - local.set $5 - i32.const 31 - local.get $5 - i32.clz - i32.sub - i32.const 2 - i32.add - local.set $6 - local.get $6 - i32.const 2 - i32.shl - local.set $7 - local.get $7 i32.const 1 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 - local.get $7 - i32.add - local.set $9 + ) + (func $start:std/staticarray~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 3 + i32.gt_s + ) + (func $start:std/staticarray~anonymous|9 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.eq + ) + (func $~lib/staticarray/StaticArray#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $6 - i32.lt_u - local.set $3 + local.set $2 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.set $3 + loop $for-loop|0 + local.get $2 local.get $3 + i32.lt_s + local.set $4 + local.get $4 if - local.get $8 - local.get $5 + local.get $0 + local.get $2 i32.const 2 i32.shl i32.add - i32.const -1 - i32.store - local.get $5 + i32.load + local.get $2 + local.get $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $2 + return + end + local.get $2 i32.const 1 i32.add - local.set $5 - br $for-loop|1 + local.set $2 + br $for-loop|0 end end - local.get $1 - i32.const 2 - i32.shl - call $~lib/rt/tlsf/__alloc - local.set $10 - local.get $1 - i32.const 1 - i32.sub - local.set $11 + i32.const -1 + ) + (func $start:std/staticarray~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 0 - local.get $11 - local.get $2 - call $~lib/util/sort/extendRunRight - local.set $12 - local.get $12 + i32.const 4 + i32.eq + ) + (func $start:std/staticarray~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.eq + ) + (func $~lib/staticarray/StaticArray#findLastIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/staticarray/StaticArray#get:length i32.const 1 - i32.add - local.set $13 - local.get $13 - i32.const 32 - i32.lt_s - if - local.get $11 - local.tee $4 - i32.const 32 - i32.const 1 - i32.sub - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - local.set $12 - local.get $0 - i32.const 0 - local.get $12 - local.get $13 + i32.sub + local.set $2 + loop $for-loop|0 local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.set $14 - i32.const 0 - local.set $15 - loop $while-continue|2 - local.get $12 - local.get $11 - i32.lt_s - local.set $4 - local.get $4 + i32.const 0 + i32.ge_s + local.set $3 + local.get $3 if - local.get $12 - i32.const 1 - i32.add - local.set $5 local.get $0 - local.get $5 - local.get $11 local.get $2 - call $~lib/util/sort/extendRunRight - local.set $3 - local.get $3 - local.get $5 - i32.sub - i32.const 1 - i32.add - local.set $16 - local.get $16 - i32.const 32 - i32.lt_s - if - local.get $11 - local.tee $17 - local.get $5 - i32.const 32 - i32.add - i32.const 1 - i32.sub - local.tee $18 - local.get $17 - local.get $18 - i32.lt_s - select - local.set $3 - local.get $0 - local.get $5 - local.get $3 - local.get $16 - local.get $2 - call $~lib/util/sort/insertionSort - end - i32.const 0 - local.get $11 - local.get $15 - local.get $5 - local.get $3 - call $~lib/util/sort/nodePower - local.set $17 - local.get $14 - local.set $18 - loop $for-loop|3 - local.get $18 - local.get $17 - i32.gt_u - local.set $19 - local.get $19 - if - local.get $8 - local.get $18 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $20 - local.get $20 - i32.const -1 - i32.ne - if - local.get $0 - local.get $20 - local.get $9 - local.get $18 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $12 - local.get $10 - local.get $2 - call $~lib/util/sort/mergeRuns - local.get $20 - local.set $15 - local.get $8 - local.get $18 - i32.const 2 - i32.shl - i32.add - i32.const -1 - i32.store - end - local.get $18 - i32.const 1 - i32.sub - local.set $18 - br $for-loop|3 - end - end - local.get $8 - local.get $17 - i32.const 2 - i32.shl - i32.add - local.get $15 - i32.store - local.get $9 - local.get $17 - i32.const 2 - i32.shl - i32.add - local.get $12 - i32.store - local.get $5 - local.set $15 - local.get $3 - local.set $12 - local.get $17 - local.set $14 - br $while-continue|2 - end - end - local.get $14 - local.set $4 - loop $for-loop|4 - local.get $4 - i32.const 0 - i32.ne - local.set $18 - local.get $18 - if - local.get $8 - local.get $4 i32.const 2 i32.shl i32.add i32.load - local.set $19 - local.get $19 - i32.const -1 - i32.ne + local.get $2 + local.get $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $0 - local.get $19 - local.get $9 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - i32.add - local.get $11 - local.get $10 local.get $2 - call $~lib/util/sort/mergeRuns + return end - local.get $4 + local.get $2 i32.const 1 i32.sub - local.set $4 - br $for-loop|4 + local.set $2 + br $for-loop|0 end end - local.get $10 - call $~lib/rt/tlsf/__free - local.get $8 - call $~lib/rt/tlsf/__free - ) - (func $~lib/staticarray/StaticArray#sort (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $0 - call $~lib/staticarray/StaticArray#get:length - local.get $1 - call $~lib/util/sort/SORT - local.get $0 + i32.const -1 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $start:std/staticarray~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - local.get $1 - i32.sub + i32.const 4 + i32.eq ) - (func $~lib/rt/itcms/__collect - (local $0 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) i32.const 0 + i32.const 1 + i32.ge_s drop - global.get $~lib/rt/itcms/state - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - global.get $~lib/rt/itcms/state - i32.const 0 - i32.ne - local.set $0 - local.get $0 - if - call $~lib/rt/itcms/step - drop + local.get $2 + local.get $1 + i32.sub + i32.const 1 + i32.add + local.set $5 + local.get $1 + local.get $5 + i32.const 1 + i32.and + local.get $3 + local.get $5 + local.get $3 + i32.sub + i32.const 1 + i32.and + i32.sub + local.get $3 + i32.const 0 + i32.eq + select + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $2 + i32.le_s + local.set $7 + local.get $7 + if + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $9 + local.set $10 + local.get $8 + local.set $11 + local.get $8 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.le_s + if + local.get $8 + local.set $10 + local.get $9 + local.set $11 + end + local.get $6 + i32.const 1 + i32.sub + local.set $12 + block $while-break|1 + loop $while-continue|1 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + local.get $8 + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=8 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store offset=8 + block $while-break|2 + loop $while-continue|2 + local.get $12 + local.get $1 + i32.ge_s + local.set $13 + local.get $13 + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + local.get $8 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=4 + local.get $12 + i32.const 1 + i32.sub + local.set $12 + else + br $while-break|2 + end + br $while-continue|2 + end + end + end + local.get $0 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $1 + local.set $4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $4 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 br $while-continue|0 end end + local.get $4 + local.set $5 + loop $while-continue|1 + local.get $1 + local.get $5 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $4 + local.get $2 + i32.lt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/nodePower (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i64) + local.get $1 + local.get $0 + i32.sub + i32.const 1 + i32.add + i64.extend_i32_u + local.set $5 + local.get $3 + local.get $0 + i32.const 1 + i32.shl + i32.sub + local.set $6 + local.get $2 + local.get $6 + i32.add + local.set $7 + local.get $4 + local.get $6 + i32.add + i32.const 1 + i32.add + local.set $8 + local.get $7 + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $5 + i64.div_u + local.set $9 + local.get $8 + i64.extend_i32_u + i64.const 30 + i64.shl + local.get $5 + i64.div_u + local.set $10 + local.get $9 + local.get $10 + i64.xor + i32.wrap_i64 + i32.clz + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + local.get $2 + i32.add + local.set $8 + local.get $2 + i32.const 1 + i32.add + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.gt_s + local.set $9 + local.get $9 + if + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 + local.get $3 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $4 + local.get $8 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|1 + end + end + local.get $1 + local.set $9 + loop $for-loop|2 + local.get $9 + local.get $3 + i32.le_s + local.set $10 + local.get $10 + if + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 + local.get $4 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $12 + local.get $11 + local.get $12 + i32.const 2 + global.set $~argumentsLength + local.get $5 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store + local.get $7 + i32.const 1 + i32.sub + local.set $7 + else + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $12 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + end + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|2 + end + end + ) + (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + local.get $1 + i32.const 48 + i32.le_s + if + local.get $1 + i32.const 1 + i32.le_s + if + return + end + i32.const 0 + i32.const 1 + i32.lt_s + drop + block $break|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $3 + local.get $3 + i32.const 3 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + br $break|0 + end + local.get $0 + i32.load + local.set $3 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + local.set $5 + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store + local.get $3 + local.get $4 + local.get $5 + select + local.set $3 + local.get $0 + i32.load offset=8 + local.set $4 + local.get $3 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + local.set $5 + local.get $0 + local.get $4 + local.get $3 + local.get $5 + select + i32.store offset=4 + local.get $0 + local.get $3 + local.get $4 + local.get $5 + select + i32.store offset=8 + end + local.get $0 + i32.load + local.set $5 + local.get $0 + i32.load offset=4 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + local.set $3 + local.get $0 + local.get $4 + local.get $5 + local.get $3 + select + i32.store + local.get $0 + local.get $5 + local.get $4 + local.get $3 + select + i32.store offset=4 + return + end + local.get $0 + i32.const 0 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort + return + end + local.get $1 + local.set $5 + i32.const 31 + local.get $5 + i32.clz + i32.sub + i32.const 2 + i32.add + local.set $6 + local.get $6 + i32.const 2 + i32.shl + local.set $7 + local.get $7 + i32.const 1 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $8 + local.get $8 + local.get $7 + i32.add + local.set $9 + i32.const 0 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $6 + i32.lt_u + local.set $3 + local.get $3 + if + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 + end + end + local.get $1 + i32.const 2 + i32.shl + call $~lib/rt/tlsf/__alloc + local.set $10 + local.get $1 + i32.const 1 + i32.sub + local.set $11 + local.get $0 + i32.const 0 + local.get $11 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $12 + local.get $12 + i32.const 1 + i32.add + local.set $13 + local.get $13 + i32.const 32 + i32.lt_s + if + local.get $11 + local.tee $4 + i32.const 32 + i32.const 1 + i32.sub + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + local.set $12 + local.get $0 + i32.const 0 + local.get $12 + local.get $13 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.set $14 + i32.const 0 + local.set $15 + loop $while-continue|2 + local.get $12 + local.get $11 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $12 + i32.const 1 + i32.add + local.set $5 + local.get $0 + local.get $5 + local.get $11 + local.get $2 + call $~lib/util/sort/extendRunRight + local.set $3 + local.get $3 + local.get $5 + i32.sub + i32.const 1 + i32.add + local.set $16 + local.get $16 + i32.const 32 + i32.lt_s + if + local.get $11 + local.tee $17 + local.get $5 + i32.const 32 + i32.add + i32.const 1 + i32.sub + local.tee $18 + local.get $17 + local.get $18 + i32.lt_s + select + local.set $3 + local.get $0 + local.get $5 + local.get $3 + local.get $16 + local.get $2 + call $~lib/util/sort/insertionSort + end + i32.const 0 + local.get $11 + local.get $15 + local.get $5 + local.get $3 + call $~lib/util/sort/nodePower + local.set $17 + local.get $14 + local.set $18 + loop $for-loop|3 + local.get $18 + local.get $17 + i32.gt_u + local.set $19 + local.get $19 + if + local.get $8 + local.get $18 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $20 + local.get $20 + i32.const -1 + i32.ne + if + local.get $0 + local.get $20 + local.get $9 + local.get $18 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $12 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + local.get $20 + local.set $15 + local.get $8 + local.get $18 + i32.const 2 + i32.shl + i32.add + i32.const -1 + i32.store + end + local.get $18 + i32.const 1 + i32.sub + local.set $18 + br $for-loop|3 + end + end + local.get $8 + local.get $17 + i32.const 2 + i32.shl + i32.add + local.get $15 + i32.store + local.get $9 + local.get $17 + i32.const 2 + i32.shl + i32.add + local.get $12 + i32.store + local.get $5 + local.set $15 + local.get $3 + local.set $12 + local.get $17 + local.set $14 + br $while-continue|2 + end + end + local.get $14 + local.set $4 + loop $for-loop|4 + local.get $4 + i32.const 0 + i32.ne + local.set $18 + local.get $18 + if + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $19 + local.get $19 + i32.const -1 + i32.ne + if + local.get $0 + local.get $19 + local.get $9 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + i32.add + local.get $11 + local.get $10 + local.get $2 + call $~lib/util/sort/mergeRuns + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|4 + end + end + local.get $10 + call $~lib/rt/tlsf/__free + local.get $8 + call $~lib/rt/tlsf/__free + ) + (func $~lib/staticarray/StaticArray#sort (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.get $1 + call $~lib/util/sort/SORT + local.get $0 + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.sub + ) + (func $~lib/rt/itcms/__collect + (local $0 i32) + i32.const 0 + drop + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + local.set $0 + local.get $0 + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + local.set $0 + local.get $0 + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/staticarray/arr1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr4 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 656 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1152 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/staticarray/StaticArray#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + local.set $2 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + ) + (func $~lib/staticarray/StaticArray~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + local.set $2 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__visit + ) + (func $~lib/array/Array<~lib/string/String>#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + i32.const 1 + drop + local.get $0 + i32.load offset=4 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> + block $~lib/staticarray/StaticArray + block $~lib/staticarray/StaticArray + block $~lib/array/Array<~lib/string/String> + block $~lib/staticarray/StaticArray<~lib/string/String> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/staticarray/StaticArray + block $std/staticarray/Ref + block $~lib/staticarray/StaticArray + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void> $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool> $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/staticarray/StaticArray%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/staticarray/StaticArray%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + unreachable + ) + (func $~start + call $start:std/staticarray + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 19248 + i32.const 19296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.set $3 + local.get $3 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $2 + local.get $3 + i32.ge_s + end + if + i32.const -1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $2 + i32.add + local.tee $4 + i32.const 0 + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select + local.set $2 + end + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + call $~lib/string/String.__eq + if + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end end - call $~lib/rt/itcms/step - drop - loop $while-continue|1 - global.get $~lib/rt/itcms/state + i32.const -1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/staticarray/StaticArray<~lib/string/String>#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1776 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:std/staticarray + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=16 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=24 + global.get $std/staticarray/arr1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 2 + i32.eq + i32.eqz + if i32.const 0 - i32.ne - local.set $0 - local.get $0 - if - call $~lib/rt/itcms/step - drop - br $while-continue|1 - end + i32.const 192 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $~lib/rt/itcms/total - i64.extend_i32_u - i64.const 200 - i64.mul - i64.const 100 - i64.div_u - i32.wrap_i64 - i32.const 1024 - i32.add + global.get $std/staticarray/arr1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/staticarray/StaticArray#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/staticarray/StaticArray#__set + global.get $std/staticarray/arr1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr1 + i32.const 20 + i32.sub + i32.load offset=12 + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/staticarray/StaticArray#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + i32.const 4 + call $~lib/staticarray/StaticArray#__set + global.get $std/staticarray/arr2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 16 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u global.set $~lib/rt/itcms/threshold + i32.const 432 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 464 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $std/staticarray/test + global.set $std/staticarray/arr3 + global.get $std/staticarray/arr3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 i32.const 0 - drop - i32.const 0 - drop - ) - (func $~lib/rt/__visit_globals (param $0 i32) - (local $1 i32) - global.get $std/staticarray/arr1 - local.tee $1 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.eq + i32.eqz if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 0 + i32.const 192 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $std/staticarray/arr2 - local.tee $1 + global.get $std/staticarray/arr3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 6 + i32.eq + i32.eqz if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 0 + i32.const 192 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable end global.get $std/staticarray/arr3 - local.tee $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 7 + i32.eq + i32.eqz if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 0 + i32.const 192 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable end - global.get $std/staticarray/arr4 - local.tee $1 + global.get $std/staticarray/arr3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/staticarray/StaticArray#get:length + i32.const 3 + i32.eq + i32.eqz if - local.get $1 - local.get $0 - call $~lib/rt/itcms/__visit + i32.const 0 + i32.const 192 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 64 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 656 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 1152 - local.get $0 - call $~lib/rt/itcms/__visit - i32.const 320 - local.get $0 - call $~lib/rt/itcms/__visit - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.tee $2 + global.get $std/staticarray/arr3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + i32.const 8 + call $~lib/staticarray/StaticArray#__set + global.get $std/staticarray/arr3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 8 + i32.eq + i32.eqz if - local.get $2 - local.get $1 - call $~lib/rt/itcms/__visit + i32.const 0 + i32.const 192 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/staticarray/StaticArray#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + call $std/staticarray/test + global.set $std/staticarray/arr3 + global.get $std/staticarray/arr3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 i32.const 1 - drop - local.get $0 - local.set $2 - local.get $2 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $2 - i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 - end + call $~lib/staticarray/StaticArray#__get + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/staticarray/StaticArray~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + call $~lib/rt/__newBuffer + local.tee $0 + i32.store offset=4 local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.const 0 + call $std/staticarray/Ref#constructor + call $~lib/staticarray/StaticArray#__uset local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) i32.const 1 - drop + i32.const 0 + call $std/staticarray/Ref#constructor + call $~lib/staticarray/StaticArray#__uset local.get $0 - local.set $2 - local.get $2 + global.set $std/staticarray/arr4 + i32.const 0 + global.set $std/staticarray/arr3 + i32.const 0 + global.set $std/staticarray/arr4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/staticarray/StaticArray#constructor + local.tee $0 + i32.store offset=4 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.add - local.set $3 - loop $while-continue|0 + call $~lib/staticarray/StaticArray#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + i32.lt_s + local.set $2 local.get $2 - local.get $3 - i32.lt_u - local.set $4 - local.get $4 if - local.get $2 - i32.load - local.set $5 - local.get $5 + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray#__get + i32.const 0 + i32.eq + i32.eqz if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit + i32.const 0 + i32.const 192 + i32.const 46 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $2 - i32.const 4 + local.get $1 + i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $1 + br $for-loop|0 end end - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 6 + i32.const 2 + i32.const 6 + i32.const 704 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>#__visit - ) - (func $~lib/array/Array<~lib/string/String>#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop + call $~lib/staticarray/StaticArray.fromArray + local.tee $0 + i32.store offset=4 local.get $0 - i32.load offset=4 + call $~lib/staticarray/StaticArray#get:length + local.get $1 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 local.set $2 - local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $while-continue|0 + loop $for-loop|1 local.get $2 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + local.set $3 local.get $3 - i32.lt_u - local.set $4 - local.get $4 if + local.get $0 local.get $2 - i32.load - local.set $5 - local.get $5 + call $~lib/staticarray/StaticArray#__get + local.get $1 + local.get $2 + call $~lib/array/Array#__get + i32.eq + i32.eqz if - local.get $5 - local.get $1 - call $~lib/rt/itcms/__visit + i32.const 0 + i32.const 192 + i32.const 58 + i32.const 5 + call $~lib/builtins/abort + unreachable end local.get $2 - i32.const 4 + i32.const 1 i32.add local.set $2 - br $while-continue|0 + br $for-loop|1 end end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 6 + i32.const 800 + call $~lib/rt/__newArray + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/staticarray/StaticArray.fromArray + local.tee $0 + i32.store offset=4 local.get $0 - i32.load - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/itcms/__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + call $~lib/staticarray/StaticArray#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 61 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 3 + i32.const 832 + call $~lib/rt/__newBuffer + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.const 4 + i32.const 3 + i32.const 864 + call $~lib/rt/__newBuffer + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray.concat + local.tee $1 + i32.store offset=8 local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/function/Function<%28i32%2Ci32%29=>i32> - block $~lib/staticarray/StaticArray - block $~lib/staticarray/StaticArray - block $~lib/array/Array<~lib/string/String> - block $~lib/staticarray/StaticArray<~lib/string/String> - block $~lib/array/Array - block $~lib/array/Array - block $~lib/staticarray/StaticArray - block $std/staticarray/Ref - block $~lib/staticarray/StaticArray - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $~lib/array/Array $~lib/array/Array $~lib/staticarray/StaticArray<~lib/string/String> $~lib/array/Array<~lib/string/String> $~lib/staticarray/StaticArray $~lib/staticarray/StaticArray $~lib/function/Function<%28i32%2Ci32%29=>i32> $invalid - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>~visit - return - end - return - end - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit - return + call $~lib/staticarray/StaticArray#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable end - unreachable - ) - (func $~start - call $start:std/staticarray - ) - (func $~stack_check global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s + local.get $0 + i32.const 0 + i32.const 3 + i32.const 896 + call $~lib/rt/__newBuffer + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray.concat + local.tee $1 + i32.store offset=8 + local.get $1 + call $~lib/staticarray/StaticArray#get:length + local.get $0 + call $~lib/staticarray/StaticArray#get:length + i32.eq + i32.eqz if - i32.const 18656 - i32.const 18704 - i32.const 1 - i32.const 1 + i32.const 0 + i32.const 192 + i32.const 71 + i32.const 3 call $~lib/builtins/abort unreachable end - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + i32.const 20 + i32.const 8 + i32.const 1104 + call $~lib/rt/__newBuffer + local.tee $1 + i32.store offset=8 global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 0 - i32.store + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $0 + i32.store offset=4 local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#get:length - local.set $3 - local.get $3 - i32.const 0 + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - local.get $3 - i32.ge_s - end + i32.eqz if - i32.const -1 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return + i32.const 0 + i32.const 192 + i32.const 78 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 i32.const 0 - i32.lt_s - if + local.set $3 + loop $for-loop|2 local.get $3 - local.get $2 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.lt_s local.set $2 - end - loop $while-continue|0 local.get $2 - local.get $3 - i32.lt_s - local.set $4 - local.get $4 if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 + local.get $1 + local.get $3 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store - local.get $6 - local.get $1 + local.get $5 + local.get $0 + local.get $3 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 call $~lib/string/String.__eq + i32.eqz if - local.get $2 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - return + i32.const 0 + i32.const 192 + i32.const 81 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $3 + br $for-loop|2 end end - i32.const -1 - local.set $6 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $6 - ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#toString (param $0 i32) (result i32) - (local $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + local.get $1 + i32.const 1 + i32.const 3 + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $0 + i32.store offset=4 local.get $0 - i32.const 1728 - local.set $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 i32.store - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $1 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - ) - (func $start:std/staticarray - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + local.get $5 + i32.const 960 + local.set $5 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 86 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $5 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + local.get $5 + i32.store + local.get $5 + i32.const 992 + local.set $5 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $std/staticarray/arr1 - local.set $4 + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 87 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 + local.get $1 + i32.const 1 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $0 + i32.store offset=4 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 2 + i32.sub i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 5 - i32.const 1 + i32.const 90 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/staticarray/arr1 - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/staticarray/StaticArray#get:length - i32.const 3 + local.get $1 + i32.const 0 + i32.const 50 + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $0 + i32.store offset=4 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.get $1 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 6 - i32.const 1 + i32.const 93 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/staticarray/arr1 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1 - i32.const 4 - call $~lib/staticarray/StaticArray#__set - global.get $std/staticarray/arr1 - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 4 + local.get $1 + i32.const 100 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $0 + i32.store offset=4 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 8 - i32.const 1 + i32.const 96 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/staticarray/arr1 - i32.const 20 - i32.sub - i32.load offset=12 - i32.const 3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const -1 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $0 + i32.store offset=4 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 9 - i32.const 1 + i32.const 99 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/staticarray/arr2 - local.set $4 + local.get $0 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 2 - i32.eq + local.get $5 + i32.const 1056 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 192 - i32.const 13 - i32.const 1 + i32.const 100 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/staticarray/arr2 - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/staticarray/StaticArray#get:length - i32.const 3 + local.get $1 + i32.const -2 + i32.const -2 + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $0 + i32.store offset=4 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 14 - i32.const 1 + i32.const 103 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/staticarray/arr2 - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1 - i32.const 4 - call $~lib/staticarray/StaticArray#__set - global.get $std/staticarray/arr2 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 + local.get $1 + i32.const 2 + i32.const -2 + call $~lib/staticarray/StaticArray.slice<~lib/string/String> + local.tee $0 + i32.store offset=4 + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 4 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 16 - i32.const 1 + i32.const 106 + i32.const 3 call $~lib/builtins/abort unreachable end - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub - i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 432 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 464 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 544 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace - call $std/staticarray/test - global.set $std/staticarray/arr3 - global.get $std/staticarray/arr3 - local.set $4 + local.get $0 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 + i32.const 992 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 107 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 8 + i32.const 1280 + call $~lib/rt/__newBuffer + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 - call $~lib/staticarray/StaticArray#__get - i32.const 5 + i32.const 2 + i32.const 9 + i32.const 1328 + call $~lib/rt/__newArray + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray<~lib/string/String>#concat + local.tee $3 + i32.store offset=16 + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 23 - i32.const 1 + i32.const 115 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/staticarray/arr3 - local.set $4 + i32.const 1 + drop global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 + local.get $0 i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 6 + i32.const 2 + i32.const 9 + i32.const 1392 + call $~lib/rt/__newArray + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray<~lib/string/String>#concat + local.tee $3 + i32.store offset=16 + local.get $3 + call $~lib/array/Array<~lib/string/String>#get:length + local.get $0 + call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.const 1 + i32.add i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 24 - i32.const 1 + i32.const 119 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/staticarray/arr3 - local.set $4 + i32.const 1 + drop global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 2 - call $~lib/staticarray/StaticArray#__get - i32.const 7 + i32.const 20 + i32.const 8 + i32.const 1424 + call $~lib/rt/__newBuffer + local.tee $3 + i32.store offset=16 + local.get $3 + i32.const 960 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 25 - i32.const 1 + i32.const 126 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/staticarray/arr3 - local.set $4 + local.get $3 + i32.const 1360 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/staticarray/StaticArray#get:length - i32.const 3 + local.get $5 + i32.store offset=12 + local.get $5 + i32.const 0 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 26 - i32.const 1 + i32.const 127 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/staticarray/arr3 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1 - i32.const 8 - call $~lib/staticarray/StaticArray#__set - global.get $std/staticarray/arr3 - local.set $4 + local.get $3 + i32.const 1056 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 8 + local.get $5 + i32.store offset=12 + local.get $5 + i32.const 5 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 28 - i32.const 1 + i32.const 128 + i32.const 3 call $~lib/builtins/abort unreachable end - call $std/staticarray/test - global.set $std/staticarray/arr3 - global.get $std/staticarray/arr3 - local.set $4 + local.get $3 + i32.const 1056 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 + local.get $5 + i32.store offset=12 + local.get $5 + i32.const -1 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 6 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 30 - i32.const 1 + i32.const 129 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 5 - i32.const 0 + i32.const 10 + i32.const 1472 call $~lib/rt/__newBuffer - local.tee $0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 0 - call $std/staticarray/Ref#constructor - call $~lib/staticarray/StaticArray#__uset - local.get $0 - i32.const 1 - i32.const 0 - call $std/staticarray/Ref#constructor - call $~lib/staticarray/StaticArray#__uset - local.get $0 - global.set $std/staticarray/arr4 - i32.const 0 - global.set $std/staticarray/arr3 - i32.const 0 - global.set $std/staticarray/arr4 + local.set $5 global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + f64.const nan:0x8000000000000 i32.const 0 - i32.const 3 - call $~lib/staticarray/StaticArray#constructor - local.tee $0 - i32.store offset=4 - local.get $0 - call $~lib/staticarray/StaticArray#get:length - i32.const 3 + call $~lib/staticarray/StaticArray#includes + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 44 + i32.const 131 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - local.get $0 - call $~lib/staticarray/StaticArray#get:length - i32.lt_s - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray#__get - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 46 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 6 - i32.const 2 - i32.const 6 - i32.const 704 - call $~lib/rt/__newArray - local.tee $1 - i32.store offset=8 + i32.const 4 + i32.const 11 + i32.const 1504 + call $~lib/rt/__newBuffer + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 - call $~lib/staticarray/StaticArray.fromArray - local.tee $0 - i32.store offset=4 - local.get $0 - call $~lib/staticarray/StaticArray#get:length - local.get $1 - call $~lib/array/Array#get:length + local.get $5 + i32.store + local.get $5 + f32.const nan:0x400000 + i32.const 0 + call $~lib/staticarray/StaticArray#includes + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 56 + i32.const 132 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $3 - local.get $3 - if - local.get $0 - local.get $2 - call $~lib/staticarray/StaticArray#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 58 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 2 - i32.const 6 - i32.const 800 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/staticarray/StaticArray.fromArray - local.tee $0 - i32.store offset=4 - local.get $0 - call $~lib/staticarray/StaticArray#get:length + i32.const 12 + i32.const 3 + i32.const 1536 + call $~lib/rt/__newBuffer + local.tee $3 + i32.store offset=16 + local.get $3 + i32.const 2 + i32.const 0 + call $~lib/staticarray/StaticArray#indexOf i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 61 + i32.const 138 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 3 - i32.const 832 - call $~lib/rt/__newBuffer - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 4 - i32.const 3 - i32.const 864 - call $~lib/rt/__newBuffer - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - call $~lib/staticarray/StaticArray.concat - local.tee $1 - i32.store offset=8 - local.get $1 - call $~lib/staticarray/StaticArray#get:length - i32.const 3 + local.get $3 + i32.const 7 + i32.const 0 + call $~lib/staticarray/StaticArray#indexOf + i32.const -1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 69 + i32.const 139 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - i32.const 3 - i32.const 896 - call $~lib/rt/__newBuffer - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - call $~lib/staticarray/StaticArray.concat - local.tee $1 - i32.store offset=8 - local.get $1 - call $~lib/staticarray/StaticArray#get:length - local.get $0 - call $~lib/staticarray/StaticArray#get:length + local.get $3 + i32.const 9 + i32.const 2 + call $~lib/staticarray/StaticArray#indexOf + i32.const 2 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 71 + i32.const 140 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.const 8 - i32.const 1104 - call $~lib/rt/__newBuffer - local.tee $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.get $3 + i32.const 2 + i32.const -1 + call $~lib/staticarray/StaticArray#indexOf + i32.const -1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 78 + i32.const 141 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $3 - loop $for-loop|2 - local.get $3 - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length - i32.lt_s - local.set $2 - local.get $2 - if - local.get $1 - local.get $3 - call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - local.get $0 - local.get $3 - call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 81 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - i32.const 3 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.get $3 i32.const 2 + i32.const -3 + call $~lib/staticarray/StaticArray#indexOf + i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 85 + i32.const 142 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 960 - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - call $~lib/string/String.__eq + i32.const 16 + i32.const 3 + i32.const 1568 + call $~lib/rt/__newBuffer + local.tee $3 + i32.store offset=16 + local.get $3 + i32.const 2 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/staticarray/StaticArray#lastIndexOf@varargs + i32.const 3 + i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 86 + i32.const 148 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 + i32.const 7 i32.const 1 - call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 992 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - call $~lib/string/String.__eq + global.set $~argumentsLength + i32.const 0 + call $~lib/staticarray/StaticArray#lastIndexOf@varargs + i32.const -1 + i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 87 + i32.const 149 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 1 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length - i32.const 1 - i32.sub + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/staticarray/StaticArray#lastIndexOf + i32.const 3 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 90 + i32.const 150 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $3 + i32.const 2 + i32.const 2 + call $~lib/staticarray/StaticArray#lastIndexOf i32.const 0 - i32.const 50 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length - local.get $1 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 93 + i32.const 151 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 100 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + local.get $3 + i32.const 2 + i32.const -2 + call $~lib/staticarray/StaticArray#lastIndexOf i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 96 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 2 + i32.const -1 + call $~lib/staticarray/StaticArray#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 153 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const -1 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length - i32.const 1 - i32.eq + i32.const 12 + i32.const 8 + i32.const 1712 + call $~lib/rt/__newBuffer + local.tee $3 + i32.store offset=16 + local.get $3 + i32.const 1776 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1808 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 192 - i32.const 99 + i32.const 159 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $4 + local.get $3 + i32.const 1744 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 + i32.store offset=20 + local.get $5 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 i32.store - local.get $4 - i32.const 1056 - local.set $4 + local.get $5 + i32.const 1856 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=12 - local.get $4 + local.get $5 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 192 - i32.const 100 + i32.const 160 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $3 + i32.const 1904 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const -2 - i32.const -2 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length - i32.const 0 - i32.eq + local.get $5 + i32.store offset=20 + local.get $5 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1936 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 192 - i32.const 103 + i32.const 161 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $3 + i32.const 1984 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.const 2 - i32.const -2 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 - i32.store offset=4 - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length - i32.const 1 - i32.eq + local.get $5 + i32.store offset=20 + local.get $5 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 2016 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 192 - i32.const 106 + i32.const 162 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 0 - call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $4 + local.get $3 + i32.const 1776 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 + i32.store offset=20 + local.get $5 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 i32.store - local.get $4 - i32.const 992 - local.set $4 + local.get $5 + local.get $3 + call $~lib/staticarray/StaticArray<~lib/string/String>#toString + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=12 - local.get $4 + local.get $5 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 192 - i32.const 107 + i32.const 163 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 20 i32.const 8 - i32.const 1280 + i32.const 3 + i32.const 2080 call $~lib/rt/__newBuffer - local.tee $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 0 - i32.const 2 - i32.const 9 - i32.const 1328 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - call $~lib/staticarray/StaticArray<~lib/string/String>#concat local.tee $3 i32.store offset=16 local.get $3 - call $~lib/array/Array<~lib/string/String>#get:length - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length + i32.const 1 + i32.const 1 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/staticarray/StaticArray#fill + drop + local.get $3 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 115 + i32.const 171 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - drop - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.const 1 - i32.const 2 - i32.const 9 - i32.const 1392 - call $~lib/rt/__newArray - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - call $~lib/staticarray/StaticArray<~lib/string/String>#concat - local.tee $3 - i32.store offset=16 local.get $3 - call $~lib/array/Array<~lib/string/String>#get:length - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length i32.const 1 - i32.add + call $~lib/staticarray/StaticArray#__get + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 119 + i32.const 172 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - drop global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.const 8 - i32.const 1424 + i32.const 12 + i32.const 3 + i32.const 2112 call $~lib/rt/__newBuffer local.tee $3 i32.store offset=16 local.get $3 - i32.const 960 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 + call $~lib/staticarray/StaticArray#reverse + drop + local.get $3 i32.const 0 - call $~lib/staticarray/StaticArray<~lib/string/String>#includes + call $~lib/staticarray/StaticArray#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 180 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 181 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 2 + call $~lib/staticarray/StaticArray#__get i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 126 + i32.const 182 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1360 - local.set $4 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 + i32.const 20 + i32.const 3 + i32.const 2144 + call $~lib/rt/__newBuffer + local.tee $3 + i32.store offset=16 + local.get $3 i32.const 0 - call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 3 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/staticarray/StaticArray#copyWithin + drop + local.get $3 i32.const 0 + call $~lib/staticarray/StaticArray#__get + i32.const 4 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 127 + i32.const 190 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 1056 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 + i32.const 1 + call $~lib/staticarray/StaticArray#__get i32.const 5 - call $~lib/staticarray/StaticArray<~lib/string/String>#includes - i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 128 + i32.const 191 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 1056 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - i32.const -1 - call $~lib/staticarray/StaticArray<~lib/string/String>#includes - i32.const 1 + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 3 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 129 + i32.const 192 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 8 - i32.const 10 - i32.const 1472 - call $~lib/rt/__newBuffer - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - f64.const nan:0x8000000000000 - i32.const 0 - call $~lib/staticarray/StaticArray#includes - i32.const 1 + local.get $3 + i32.const 3 + call $~lib/staticarray/StaticArray#__get + i32.const 4 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 131 + i32.const 193 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $3 i32.const 4 - i32.const 11 - i32.const 1504 - call $~lib/rt/__newBuffer - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - f32.const nan:0x400000 - i32.const 0 - call $~lib/staticarray/StaticArray#includes - i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 5 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 132 + i32.const 194 i32.const 3 call $~lib/builtins/abort unreachable @@ -6870,335 +8307,321 @@ global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 3 - i32.const 1536 + i32.const 2192 call $~lib/rt/__newBuffer local.tee $3 i32.store offset=16 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 2 - i32.const 0 - call $~lib/staticarray/StaticArray#indexOf + i32.const 2224 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray#map + local.tee $0 + i32.store offset=4 + local.get $0 i32.const 0 + call $~lib/array/Array#__get + i32.const 2 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 138 + i32.const 203 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 7 - i32.const 0 - call $~lib/staticarray/StaticArray#indexOf - i32.const -1 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 3 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 139 + i32.const 204 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 9 - i32.const 2 - call $~lib/staticarray/StaticArray#indexOf + local.get $0 i32.const 2 + call $~lib/array/Array#__get + i32.const 4 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 140 + i32.const 205 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 2 - i32.const -1 - call $~lib/staticarray/StaticArray#indexOf - i32.const -1 + i32.const 2256 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray#forEach + global.get $std/staticarray/maxVal + i32.const 3 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 141 + i32.const 209 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $3 + i32.const 2288 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray#filter + local.tee $2 + i32.store offset=24 + local.get $2 + call $~lib/array/Array#get:length i32.const 2 - i32.const -3 - call $~lib/staticarray/StaticArray#indexOf - i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 142 + i32.const 213 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - i32.const 1664 - call $~lib/rt/__newBuffer - local.tee $3 - i32.store offset=16 - local.get $3 - i32.const 1728 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=20 - local.get $4 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1760 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - call $~lib/string/String.__eq + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.const 2 + i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 148 + i32.const 214 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1696 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=20 - local.get $4 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1808 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - call $~lib/string/String.__eq + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + i32.const 3 + i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 149 + i32.const 215 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 1856 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=20 - local.get $4 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1888 - local.set $4 + i32.const 2320 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=12 - local.get $4 - call $~lib/string/String.__eq + local.get $5 + i32.const 0 + call $~lib/staticarray/StaticArray#reduce + local.set $1 + local.get $1 + i32.const 6 + i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 150 + i32.const 219 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 1936 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=20 - local.get $4 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1968 - local.set $4 + i32.const 2352 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=12 + local.get $5 + i32.const 0 + call $~lib/staticarray/StaticArray#reduceRight + local.set $4 local.get $4 - call $~lib/string/String.__eq + i32.const 6 + i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 151 + i32.const 223 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 1728 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=20 - local.get $4 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $4 + i32.const 2384 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray#some + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 226 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $3 - call $~lib/staticarray/StaticArray<~lib/string/String>#toString - local.set $4 + i32.const 2416 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=12 - local.get $4 - call $~lib/string/String.__eq + local.get $5 + call $~lib/staticarray/StaticArray#some + i32.eqz i32.eqz if i32.const 0 i32.const 192 - i32.const 152 + i32.const 227 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.const 3 - i32.const 2032 - call $~lib/rt/__newBuffer - local.tee $3 - i32.store offset=16 local.get $3 - i32.const 2 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/staticarray/StaticArray#lastIndexOf@varargs - i32.const 3 - i32.eq + i32.const 2448 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray#every i32.eqz if i32.const 0 i32.const 192 - i32.const 158 + i32.const 230 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 7 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/staticarray/StaticArray#lastIndexOf@varargs - i32.const -1 - i32.eq + i32.const 2480 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray#every + i32.eqz i32.eqz if i32.const 0 i32.const 192 - i32.const 159 + i32.const 231 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 2 - i32.const 3 - call $~lib/staticarray/StaticArray#lastIndexOf - i32.const 3 + i32.const 2512 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray#findIndex + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 160 + i32.const 234 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 2 - i32.const 2 - call $~lib/staticarray/StaticArray#lastIndexOf - i32.const 0 + i32.const 2544 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray#findIndex + i32.const -1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 161 + i32.const 235 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 2 - i32.const -2 - call $~lib/staticarray/StaticArray#lastIndexOf - i32.const 0 + i32.const 2576 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray#findLastIndex + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 162 + i32.const 238 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 2 + i32.const 2608 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray#findLastIndex i32.const -1 - call $~lib/staticarray/StaticArray#lastIndexOf - i32.const 3 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 163 + i32.const 239 i32.const 3 call $~lib/builtins/abort unreachable @@ -7206,17 +8629,17 @@ global.get $~lib/memory/__stack_pointer i32.const 16 i32.const 3 - i32.const 2080 + i32.const 2640 call $~lib/rt/__newBuffer - local.tee $3 - i32.store offset=16 - local.get $3 + local.tee $4 + i32.store offset=28 + local.get $4 i32.const 0 global.set $~argumentsLength i32.const 0 call $~lib/staticarray/StaticArray#sort@varargs drop - local.get $3 + local.get $4 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 0 @@ -7225,12 +8648,12 @@ if i32.const 0 i32.const 192 - i32.const 171 + i32.const 248 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -7239,12 +8662,12 @@ if i32.const 0 i32.const 192 - i32.const 172 + i32.const 249 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -7253,12 +8676,12 @@ if i32.const 0 i32.const 192 - i32.const 173 + i32.const 250 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $4 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -7267,7 +8690,7 @@ if i32.const 0 i32.const 192 - i32.const 174 + i32.const 251 i32.const 3 call $~lib/builtins/abort unreachable @@ -7276,7 +8699,7 @@ global.set $~lib/memory/__stack_pointer call $~lib/rt/itcms/__collect global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 32 i32.add global.set $~lib/memory/__stack_pointer ) @@ -7328,7 +8751,7 @@ if i32.const 656 i32.const 128 - i32.const 89 + i32.const 90 i32.const 60 call $~lib/builtins/abort unreachable @@ -7487,7 +8910,7 @@ if i32.const 656 i32.const 128 - i32.const 42 + i32.const 43 i32.const 60 call $~lib/builtins/abort unreachable @@ -7683,7 +9106,7 @@ if i32.const 64 i32.const 128 - i32.const 114 + i32.const 115 i32.const 41 call $~lib/builtins/abort unreachable @@ -7707,7 +9130,7 @@ if i32.const 1152 i32.const 128 - i32.const 118 + i32.const 119 i32.const 40 call $~lib/builtins/abort unreachable @@ -7765,7 +9188,7 @@ if i32.const 656 i32.const 128 - i32.const 184 + i32.const 230 i32.const 60 call $~lib/builtins/abort unreachable @@ -7898,7 +9321,7 @@ i32.const 0 i32.lt_s if - i32.const 1696 + i32.const 1744 local.set $12 global.get $~lib/memory/__stack_pointer i32.const 12 @@ -7919,7 +9342,7 @@ if (result i32) local.get $4 else - i32.const 1696 + i32.const 1744 end local.set $12 global.get $~lib/memory/__stack_pointer @@ -8080,6 +9503,154 @@ global.set $~lib/memory/__stack_pointer local.get $12 ) + (func $~lib/staticarray/StaticArray#map (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + local.set $7 + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + i32.const 0 + drop + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $~lib/staticarray/StaticArray#filter (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + i32.const 0 + local.set $3 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $6 + local.get $3 + local.get $0 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $2 + local.get $6 + call $~lib/array/Array#push + drop + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) (func $~lib/staticarray/StaticArray#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) global.get $~lib/memory/__stack_pointer @@ -8106,7 +9677,7 @@ i32.const 4 i32.le_u drop - i32.const 2128 + i32.const 2688 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $1