From 7a25c1a7c84abc9c784ec52d3edb96040d8e3976 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sun, 12 Sep 2021 12:16:29 +0300 Subject: [PATCH 1/7] add fill and copyWithin --- std/assembly/staticarray.ts | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/std/assembly/staticarray.ts b/std/assembly/staticarray.ts index fc41380a3f..5ec2e6823d 100644 --- a/std/assembly/staticarray.ts +++ b/std/assembly/staticarray.ts @@ -137,6 +137,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; From 23bda206e990aad383a3615dc0455737f8d96517 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sun, 12 Sep 2021 12:25:35 +0300 Subject: [PATCH 2/7] add reverse. Upd fixtures --- std/assembly/array.ts | 2 +- std/assembly/index.d.ts | 5 ++++- std/assembly/staticarray.ts | 6 ++++++ tests/compiler/std/staticarray.optimized.wat | 12 ++++++------ tests/compiler/std/staticarray.untouched.wat | 14 +++++++------- 5 files changed, 24 insertions(+), 15 deletions(-) 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..5b81b12814 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1713,7 +1713,7 @@ declare class 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,6 +1728,8 @@ declare class StaticArray { readonly length: i32; constructor(length?: i32); at(index: i32): T; + fill(value: T, start?: i32, end?: i32): this; + 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; @@ -1735,6 +1737,7 @@ declare class StaticArray { 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 5ec2e6823d..244c0b7f3b 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"; @@ -292,6 +293,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..363cc0ebb2 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -138,7 +138,7 @@ if i32.const 1088 i32.const 1152 - i32.const 114 + i32.const 115 i32.const 41 call $~lib/builtins/abort unreachable @@ -162,7 +162,7 @@ if i32.const 1088 i32.const 1152 - i32.const 129 + i32.const 130 i32.const 41 call $~lib/builtins/abort unreachable @@ -6588,7 +6588,7 @@ if i32.const 1680 i32.const 1152 - i32.const 42 + i32.const 43 i32.const 60 call $~lib/builtins/abort unreachable @@ -6778,7 +6778,7 @@ if i32.const 1088 i32.const 1152 - i32.const 114 + i32.const 115 i32.const 41 call $~lib/builtins/abort unreachable @@ -6797,7 +6797,7 @@ if i32.const 2176 i32.const 1152 - i32.const 118 + i32.const 119 i32.const 40 call $~lib/builtins/abort unreachable @@ -6853,7 +6853,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.untouched.wat b/tests/compiler/std/staticarray.untouched.wat index b699aafabf..b6e7d5a977 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.untouched.wat @@ -111,7 +111,7 @@ if i32.const 64 i32.const 128 - i32.const 114 + i32.const 115 i32.const 41 call $~lib/builtins/abort unreachable @@ -146,7 +146,7 @@ if i32.const 64 i32.const 128 - i32.const 129 + i32.const 130 i32.const 41 call $~lib/builtins/abort unreachable @@ -7328,7 +7328,7 @@ if i32.const 656 i32.const 128 - i32.const 89 + i32.const 90 i32.const 60 call $~lib/builtins/abort unreachable @@ -7487,7 +7487,7 @@ if i32.const 656 i32.const 128 - i32.const 42 + i32.const 43 i32.const 60 call $~lib/builtins/abort unreachable @@ -7683,7 +7683,7 @@ if i32.const 64 i32.const 128 - i32.const 114 + i32.const 115 i32.const 41 call $~lib/builtins/abort unreachable @@ -7707,7 +7707,7 @@ if i32.const 1152 i32.const 128 - i32.const 118 + i32.const 119 i32.const 40 call $~lib/builtins/abort unreachable @@ -7765,7 +7765,7 @@ if i32.const 656 i32.const 128 - i32.const 184 + i32.const 230 i32.const 60 call $~lib/builtins/abort unreachable From 4a775c79273ec18979a5d578d3f7af45ec801e74 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sun, 12 Sep 2021 12:37:46 +0300 Subject: [PATCH 3/7] add tests --- tests/compiler/std/staticarray.optimized.wat | 727 +++++++++++++------ tests/compiler/std/staticarray.ts | 31 + tests/compiler/std/staticarray.untouched.wat | 508 ++++++++++++- 3 files changed, 1034 insertions(+), 232 deletions(-) diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index 363cc0ebb2..136d89e68b 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -25,7 +25,7 @@ (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 $~lib/memory/__stack_pointer (mut i32) (i32.const 19772)) (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") @@ -116,12 +116,18 @@ (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") + (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) ",") + (data (i32.const 3208) "\03\00\00\00\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01") + (data (i32.const 3244) "\1c") + (data (i32.const 3256) "\0c\00\00\00\08\00\00\00\01") + (data (i32.const 3280) "\0d\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 3308) "$\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) (export "memory" (memory $0)) @@ -269,7 +275,7 @@ if i32.const 0 local.get $0 - i32.const 19660 + i32.const 19772 i32.lt_u local.get $0 i32.load offset=8 @@ -319,7 +325,7 @@ if (result i32) i32.const 1 else - i32.const 3168 + i32.const 3280 i32.load local.get $1 i32.lt_u @@ -334,7 +340,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 3172 + i32.const 3284 i32.add i32.load i32.const 32 @@ -930,10 +936,10 @@ if unreachable end - i32.const 19664 + i32.const 19776 i32.const 0 i32.store - i32.const 21232 + i32.const 21344 i32.const 0 i32.store loop $for-loop|0 @@ -944,7 +950,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 19664 + i32.const 19776 i32.add i32.const 0 i32.store offset=4 @@ -962,7 +968,7 @@ i32.add i32.const 2 i32.shl - i32.const 19664 + i32.const 19776 i32.add i32.const 0 i32.store offset=96 @@ -980,20 +986,20 @@ br $for-loop|0 end end - i32.const 19664 - i32.const 21236 + i32.const 19776 + i32.const 21348 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 19664 + i32.const 19776 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 19772 i32.lt_u if return @@ -1120,7 +1126,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 19660 + i32.const 19772 i32.lt_u if local.get $0 @@ -1215,7 +1221,7 @@ unreachable end local.get $0 - i32.const 19660 + i32.const 19772 i32.lt_u if local.get $0 @@ -2965,11 +2971,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3388 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 19792 + i32.const 19840 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3077,11 +3083,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3388 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 19792 + i32.const 19840 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4214,30 +4220,31 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 f32) - (local $4 f64) - (local $5 i32) + (local $3 i32) + (local $4 f32) + (local $5 f64) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3388 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $7 i64.const 0 i64.store - local.get $6 + local.get $7 i64.const 0 i64.store offset=8 - local.get $6 + local.get $7 i64.const 0 i64.store offset=16 - local.get $6 + local.get $7 i32.const 1056 i32.store i32.const 1056 @@ -4362,7 +4369,7 @@ memory.size i32.const 16 i32.shl - i32.const 19660 + i32.const 19772 i32.sub i32.const 1 i32.shr_u @@ -4394,17 +4401,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $6 + local.get $7 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $6 + local.tee $7 i32.store - local.get $6 + local.get $7 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -4419,9 +4426,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $6 + local.tee $7 i32.store - local.get $6 + local.get $7 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4436,9 +4443,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $6 + local.tee $7 i32.store - local.get $6 + local.get $7 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 7 @@ -4453,9 +4460,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $6 + local.tee $7 i32.store - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -4473,16 +4480,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $6 + local.tee $7 i32.store - local.get $6 + local.get $7 i32.const 8 call $~lib/staticarray/StaticArray#__set global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $6 + local.tee $7 i32.store - local.get $6 + local.get $7 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 8 @@ -4498,17 +4505,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $6 + local.get $7 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $6 + local.tee $7 i32.store - local.get $6 + local.get $7 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4525,60 +4532,60 @@ i32.const 8 i32.const 5 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.store offset=4 - local.get $6 + local.get $7 call $std/staticarray/Ref#constructor local.tee $0 i32.store - local.get $6 + local.get $7 local.get $0 i32.const 1 call $~lib/rt/itcms/__link - local.get $6 + local.get $7 call $std/staticarray/Ref#constructor local.tee $0 i32.store offset=4 - local.get $6 + local.get $7 local.get $0 i32.const 1 call $~lib/rt/itcms/__link - local.get $6 + local.get $7 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 $7 + local.get $7 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3388 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $6 + local.tee $7 i32.const 0 i32.store - local.get $6 + local.get $7 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.store - local.get $6 + local.get $7 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 $7 i32.store offset=4 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -4595,7 +4602,7 @@ unreachable end loop $for-loop|0 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -4604,7 +4611,7 @@ local.get $1 i32.gt_s if - local.get $6 + local.get $7 local.get $1 call $~lib/staticarray/StaticArray#__get if @@ -4627,14 +4634,14 @@ i32.const 6 i32.const 1728 call $~lib/rt/__newArray - local.tee $6 + local.tee $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 call $~lib/staticarray/StaticArray.fromArray local.tee $0 i32.store offset=4 - local.get $6 + local.get $7 i32.load offset=12 local.get $0 i32.const 20 @@ -4654,7 +4661,7 @@ i32.const 0 local.set $1 loop $for-loop|1 - local.get $6 + local.get $7 i32.load offset=12 local.get $1 i32.gt_s @@ -4663,7 +4670,7 @@ local.get $1 call $~lib/staticarray/StaticArray#__get local.set $2 - local.get $6 + local.get $7 i32.load offset=12 local.get $1 i32.le_u @@ -4675,7 +4682,7 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.load offset=4 local.get $1 i32.const 2 @@ -4704,15 +4711,15 @@ i32.const 6 i32.const 1824 call $~lib/rt/__newArray - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 call $~lib/staticarray/StaticArray.fromArray - local.tee $6 + local.tee $7 i32.store offset=4 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -4730,11 +4737,11 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.const 1856 i32.const 8 call $~lib/memory/memory.copy - local.get $6 + local.get $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -4747,7 +4754,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 - local.get $6 + local.get $7 local.get $1 call $~lib/staticarray/StaticArray.concat local.tee $1 @@ -4779,7 +4786,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 - local.get $6 + local.get $7 local.get $1 call $~lib/staticarray/StaticArray.concat local.tee $1 @@ -4790,7 +4797,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -4809,14 +4816,14 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.const 2128 i32.const 20 call $~lib/memory/memory.copy - local.get $6 + local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const 0 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -4828,7 +4835,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -4846,7 +4853,7 @@ i32.const 0 local.set $1 loop $for-loop|2 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -4855,7 +4862,7 @@ local.get $1 i32.gt_s if - local.get $6 + local.get $7 local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get local.set $2 @@ -4865,12 +4872,12 @@ local.get $0 local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store offset=12 local.get $2 - local.get $5 + local.get $6 call $~lib/string/String.__eq i32.eqz if @@ -4889,7 +4896,7 @@ end end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const 1 i32.const 3 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -4958,13 +4965,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const 1 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> local.tee $1 i32.store offset=4 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -4988,7 +4995,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const 0 i32.const 50 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -5000,7 +5007,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5016,7 +5023,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const 100 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -5037,7 +5044,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const -1 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -5083,7 +5090,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const -2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> @@ -5104,13 +5111,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const 2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $6 + local.tee $7 i32.store offset=4 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5126,18 +5133,18 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $6 + local.get $7 i32.store local.get $1 i32.const 2016 i32.store offset=12 - local.get $6 + local.get $7 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -5153,11 +5160,11 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.const 2304 i32.const 20 call $~lib/memory/memory.copy - local.get $6 + local.get $7 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 0 @@ -5168,14 +5175,14 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 - local.get $6 + local.get $7 local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#concat local.tee $1 i32.store offset=16 local.get $1 i32.load offset=12 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5199,14 +5206,14 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 - local.get $6 + local.get $7 local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#concat local.tee $1 i32.store offset=16 local.get $1 i32.load offset=12 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5227,16 +5234,16 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.const 2448 i32.const 20 call $~lib/memory/memory.copy - local.get $6 + local.get $7 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 1984 i32.store offset=12 - local.get $6 + local.get $7 i32.const 1984 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5253,7 +5260,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2384 i32.store offset=12 - local.get $6 + local.get $7 i32.const 2384 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5268,7 +5275,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $6 + local.get $7 i32.const 2080 i32.const 5 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5283,7 +5290,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $6 + local.get $7 i32.const 2080 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5300,18 +5307,18 @@ i32.const 8 i32.const 10 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.const 2496 i32.const 8 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 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 $7 i32.const 20 i32.sub i32.load offset=16 @@ -5334,13 +5341,13 @@ local.get $1 i32.const 3 i32.shl - local.get $6 + local.get $7 i32.add f64.load - local.tee $4 - local.get $4 + local.tee $5 + local.get $5 f64.ne - local.get $4 + local.get $5 f64.const nan:0x8000000000000 f64.eq select @@ -5367,18 +5374,18 @@ i32.const 4 i32.const 11 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.const 2528 i32.const 4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 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 $7 i32.const 20 i32.sub i32.load offset=16 @@ -5401,13 +5408,13 @@ local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $7 i32.add f32.load - local.tee $3 - local.get $3 + local.tee $4 + local.get $4 f32.ne - local.get $3 + local.get $4 f32.const nan:0x400000 f32.eq select @@ -5435,16 +5442,16 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.const 2560 i32.const 12 call $~lib/memory/memory.copy - local.get $6 + local.get $7 i32.store offset=16 i32.const 0 local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5468,7 +5475,7 @@ local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $7 i32.add i32.load i32.const 2 @@ -5496,7 +5503,7 @@ i32.const 0 local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf14 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5520,7 +5527,7 @@ local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $7 i32.add i32.load i32.const 7 @@ -5550,7 +5557,7 @@ i32.const 2 local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf16 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5575,7 +5582,7 @@ local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $7 i32.add i32.load i32.const 9 @@ -5603,7 +5610,7 @@ unreachable end block $__inlined_func$~lib/staticarray/StaticArray#indexOf18 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5638,7 +5645,7 @@ local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $7 i32.add i32.load i32.const 2 @@ -5666,7 +5673,7 @@ unreachable end block $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5701,7 +5708,7 @@ local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $7 i32.add i32.load i32.const 2 @@ -5730,16 +5737,16 @@ i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.const 2688 i32.const 12 call $~lib/memory/memory.copy - local.get $6 + local.get $7 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 2752 i32.store offset=20 - local.get $6 + local.get $7 i32.const 2752 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $1 @@ -5764,7 +5771,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2720 i32.store offset=20 - local.get $6 + local.get $7 i32.const 2720 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $1 @@ -5789,7 +5796,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2880 i32.store offset=20 - local.get $6 + local.get $7 i32.const 2880 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $1 @@ -5814,7 +5821,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2960 i32.store offset=20 - local.get $6 + local.get $7 i32.const 2960 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $1 @@ -5839,7 +5846,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2752 i32.store offset=20 - local.get $6 + local.get $7 i32.const 2752 call $~lib/staticarray/StaticArray<~lib/string/String>#join local.set $1 @@ -5851,7 +5858,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3388 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -5861,19 +5868,19 @@ local.get $0 i32.const 2752 i32.store - local.get $6 + local.get $7 i32.const 2752 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $6 + local.set $7 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 + local.get $7 i32.store offset=12 local.get $1 - local.get $6 + local.get $7 call $~lib/string/String.__eq i32.eqz if @@ -5888,15 +5895,15 @@ i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.const 3056 i32.const 16 call $~lib/memory/memory.copy - local.get $6 + local.get $7 i32.store offset=16 i32.const 1 global.set $~argumentsLength - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -5935,7 +5942,7 @@ local.tee $0 i32.const 2 i32.shl - local.get $6 + local.get $7 i32.add i32.load i32.const 2 @@ -5964,7 +5971,7 @@ end i32.const 1 global.set $~argumentsLength - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -6003,7 +6010,7 @@ local.tee $0 i32.const 2 i32.shl - local.get $6 + local.get $7 i32.add i32.load i32.const 7 @@ -6031,7 +6038,7 @@ unreachable end block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -6061,7 +6068,7 @@ local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $7 i32.add i32.load i32.const 2 @@ -6089,7 +6096,7 @@ unreachable end block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -6119,7 +6126,7 @@ local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $7 i32.add i32.load i32.const 2 @@ -6145,7 +6152,7 @@ unreachable end block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -6170,7 +6177,7 @@ local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $7 i32.add i32.load i32.const 2 @@ -6196,7 +6203,7 @@ unreachable end block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf30 - local.get $6 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -6221,7 +6228,7 @@ local.get $1 i32.const 2 i32.shl - local.get $6 + local.get $7 i32.add i32.load i32.const 2 @@ -6249,14 +6256,302 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $7 i32.const 3104 - i32.const 16 + i32.const 8 + call $~lib/memory/memory.copy + local.get $7 + i32.store offset=16 + i32.const 1 + local.get $7 + 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 $1 + loop $for-loop|024 + local.get $0 + local.get $1 + i32.gt_s + if + local.get $1 + i32.const 2 + i32.shl + local.get $7 + i32.add + i32.const 1 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|024 + end + end + local.get $7 + 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 $7 + 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 $7 + i32.const 3136 + i32.const 12 + call $~lib/memory/memory.copy + local.get $7 + i32.store offset=16 + i32.const 0 + local.set $1 + local.get $7 + 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 $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + local.get $7 + i32.add + local.tee $6 + i32.load + local.set $3 + local.get $6 + local.get $0 + local.get $1 + i32.sub + i32.const 2 + i32.shl + local.get $7 + i32.add + local.tee $6 + i32.load + i32.store + local.get $6 + local.get $3 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|026 + end + end + end + local.get $7 + 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 $7 + 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 $7 + 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 $7 + i32.const 3168 + i32.const 20 call $~lib/memory/memory.copy + local.get $7 + i32.store offset=16 + i32.const 0 + local.get $7 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $1 + local.get $1 + select + local.set $0 + local.get $1 + i32.const 3 + local.get $1 + local.get $1 + i32.const 3 + i32.gt_u + select + local.tee $6 + i32.sub + local.set $2 + local.get $0 + i32.const 2 + i32.shl + local.get $7 + i32.add local.get $6 + i32.const 2 + i32.shl + local.get $7 + i32.add + local.get $2 + local.get $1 + local.get $0 + i32.sub + local.tee $1 + local.get $1 + local.get $2 + i32.gt_s + select + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $7 + 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 $7 + 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 $7 + 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 $7 + 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 $7 + 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 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $7 + i32.const 3216 + i32.const 16 + call $~lib/memory/memory.copy + local.get $7 i32.store offset=16 i32.const 0 global.set $~argumentsLength @@ -6267,7 +6562,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3388 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6281,14 +6576,14 @@ end unreachable end - i32.const 3152 + i32.const 3264 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 3152 + i32.const 3264 i32.store end - local.get $6 - local.get $6 + local.get $7 + local.get $7 i32.const 20 i32.sub i32.load offset=16 @@ -6300,18 +6595,18 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.const 0 call $~lib/staticarray/StaticArray#__get if i32.const 0 i32.const 1216 - i32.const 171 + i32.const 202 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6319,12 +6614,12 @@ if i32.const 0 i32.const 1216 - i32.const 172 + i32.const 203 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -6332,12 +6627,12 @@ if i32.const 0 i32.const 1216 - i32.const 173 + i32.const 204 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 + local.get $7 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6345,23 +6640,23 @@ if i32.const 0 i32.const 1216 - i32.const 174 + i32.const 205 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 19660 + i32.const 19772 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|02937 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|024 + br $while-continue|02937 end end end @@ -6391,8 +6686,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 19680 - i32.const 19728 + i32.const 19792 + i32.const 19840 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6405,11 +6700,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3388 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 19792 + i32.const 19840 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6441,11 +6736,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3388 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 19792 + i32.const 19840 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6507,11 +6802,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3388 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 19792 + i32.const 19840 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6551,11 +6846,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3388 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 19792 + i32.const 19840 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6630,11 +6925,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3388 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 19792 + i32.const 19840 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6754,11 +7049,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3388 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 19792 + i32.const 19840 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6820,11 +7115,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3276 + i32.const 3388 i32.lt_s if - i32.const 19680 - i32.const 19728 + i32.const 19792 + i32.const 19840 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/std/staticarray.ts b/tests/compiler/std/staticarray.ts index 6ce5f5af42..80a17e6379 100644 --- a/tests/compiler/std/staticarray.ts +++ b/tests/compiler/std/staticarray.ts @@ -163,6 +163,37 @@ arr4 = changetype>(0); assert(numbers.lastIndexOf(2, -1) == 3); } +// fill +{ + 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); +} + // 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 b6e7d5a977..bfce305c9b 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.untouched.wat @@ -6,9 +6,9 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result 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))) @@ -34,10 +34,10 @@ (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~argumentsLength (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 2256)) + (global $~lib/memory/__data_end i32 (i32.const 2364)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18748)) + (global $~lib/memory/__heap_base i32 (i32.const 18748)) (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") @@ -87,9 +87,12 @@ (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") + (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) ",\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 2220) "\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 2256) "\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) (export "memory" (memory $0)) @@ -4369,6 +4372,303 @@ local.get $2 call $~lib/staticarray/StaticArray#lastIndexOf ) + (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 + drop + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $2 + i32.const 1 + i32.add + 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.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 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + end + ) + (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 + i32.const 0 + i32.lt_s + if (result i32) + local.get $5 + local.get $1 + 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.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 + local.get $4 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + ) (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) @@ -5692,8 +5992,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 18656 - i32.const 18704 + i32.const 18768 + i32.const 18816 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7204,13 +7504,189 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.const 3 i32.const 2080 call $~lib/rt/__newBuffer local.tee $3 i32.store offset=16 local.get $3 + 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 171 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 172 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + i32.const 2112 + call $~lib/rt/__newBuffer + local.tee $3 + i32.store offset=16 + local.get $3 + call $~lib/staticarray/StaticArray#reverse + drop + local.get $3 + i32.const 0 + 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 182 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + 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 + 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 190 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 191 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 192 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 4 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 194 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 3 + i32.const 2192 + call $~lib/rt/__newBuffer + local.tee $3 + i32.store offset=16 + local.get $3 i32.const 0 global.set $~argumentsLength i32.const 0 @@ -7225,7 +7701,7 @@ if i32.const 0 i32.const 192 - i32.const 171 + i32.const 202 i32.const 3 call $~lib/builtins/abort unreachable @@ -7239,7 +7715,7 @@ if i32.const 0 i32.const 192 - i32.const 172 + i32.const 203 i32.const 3 call $~lib/builtins/abort unreachable @@ -7253,7 +7729,7 @@ if i32.const 0 i32.const 192 - i32.const 173 + i32.const 204 i32.const 3 call $~lib/builtins/abort unreachable @@ -7267,7 +7743,7 @@ if i32.const 0 i32.const 192 - i32.const 174 + i32.const 205 i32.const 3 call $~lib/builtins/abort unreachable @@ -8106,7 +8582,7 @@ i32.const 4 i32.le_u drop - i32.const 2128 + i32.const 2240 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $1 From 273895ee5075c8e1ea8bc34602a5268280ad3aec Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sun, 12 Sep 2021 16:04:48 +0300 Subject: [PATCH 4/7] transducers --- std/assembly/index.d.ts | 25 +++++++++----- std/assembly/staticarray.ts | 65 +++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 9 deletions(-) diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 5b81b12814..33766bbd60 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; @@ -1701,13 +1700,14 @@ declare class Array { concat(items: T[]): T[]; copyWithin(target: i32, start: i32, end?: i32): this; pop(): T; - forEach(callbackfn: (value: T, index: i32, array: Array) => void): void; - map(callbackfn: (value: T, index: i32, array: Array) => U): Array; - filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array; - reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U; - reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U; + forEach(callbackfn: (value: T, index: i32, array?: Array) => void): void; + map(callbackfn: (value: T, index: i32, array?: Array) => U): Array; + filter(callbackfn: (value: T, index: i32, array?: Array) => bool): Array; + reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array?: Array) => U, initialValue: U): U; + reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array?: Array) => U, initialValue: U): U; + 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; @@ -1733,6 +1733,13 @@ declare class StaticArray { 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; diff --git a/std/assembly/staticarray.ts b/std/assembly/staticarray.ts index 244c0b7f3b..252aad1c02 100644 --- a/std/assembly/staticarray.ts +++ b/std/assembly/staticarray.ts @@ -276,6 +276,71 @@ export class StaticArray { return slice; } + 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; From 83c4ae65bff7f9d3ab1543824b4df3896fa747e9 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Sun, 12 Sep 2021 16:16:18 +0300 Subject: [PATCH 5/7] add findIndex and findLastIndex --- std/assembly/index.d.ts | 34 ++++++++++++++++++---------------- std/assembly/staticarray.ts | 14 ++++++++++++++ 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 33766bbd60..e3989d3691 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1691,8 +1691,8 @@ declare class Array { constructor(length?: i32); at(index: i32): T; fill(value: T, start?: i32, end?: i32): this; - findIndex(callbackfn: (value: T, index: i32, array?: Array) => bool): i32; - findLastIndex(callbackfn: (value: 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; @@ -1700,13 +1700,13 @@ declare class Array { concat(items: T[]): T[]; copyWithin(target: i32, start: i32, end?: i32): this; pop(): T; - forEach(callbackfn: (value: T, index: i32, array?: Array) => void): void; - map(callbackfn: (value: T, index: i32, array?: Array) => U): Array; - filter(callbackfn: (value: T, index: i32, array?: Array) => bool): Array; - reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array?: Array) => U, initialValue: U): U; - reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array?: Array) => U, initialValue: U): U; - every(callbackfn: (value: T, index: i32, array?: Array) => bool): bool; - some(callbackfn: (value: T, index: i32, array?: Array) => bool): bool; + forEach(callbackfn: (value: T, index: i32, array: Array) => void): void; + map(callbackfn: (value: T, index: i32, array: Array) => U): Array; + filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array; + reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U; + reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: i32, array: Array) => U, initialValue: U): U; + every(callbackfn: (value: T, index: i32, array: Array) => bool): bool; + some(callbackfn: (value: T, index: i32, array: Array) => bool): bool; shift(): T; unshift(element: T): i32; slice(from: i32, to?: i32): Array; @@ -1729,17 +1729,19 @@ declare class StaticArray { 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; + 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; diff --git a/std/assembly/staticarray.ts b/std/assembly/staticarray.ts index 252aad1c02..e08009ee3c 100644 --- a/std/assembly/staticarray.ts +++ b/std/assembly/staticarray.ts @@ -276,6 +276,20 @@ 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); From 68dc2b9823207823cfccd9cee2ed0566778768cf Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 13 Sep 2021 16:20:25 +0300 Subject: [PATCH 6/7] add more tests --- tests/compiler/std/staticarray.optimized.wat | 2732 ++++++--- tests/compiler/std/staticarray.ts | 66 +- tests/compiler/std/staticarray.untouched.wat | 5548 +++++++++++------- 3 files changed, 5316 insertions(+), 3030 deletions(-) diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index 136d89e68b..14e046f24d 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_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param 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 19772)) + (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,46 +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 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) ",") - (data (i32.const 3208) "\03\00\00\00\10\00\00\00\00\00\00\00\03\00\00\00\02\00\00\00\01") - (data (i32.const 3244) "\1c") - (data (i32.const 3256) "\0c\00\00\00\08\00\00\00\01") - (data (i32.const 3280) "\0d\00\00\00 \00\00\00\00\00\00\00 ") - (data (i32.const 3308) "$\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 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) @@ -275,7 +304,7 @@ if i32.const 0 local.get $0 - i32.const 19772 + i32.const 20252 i32.lt_u local.get $0 i32.load offset=8 @@ -325,7 +354,7 @@ if (result i32) i32.const 1 else - i32.const 3280 + i32.const 3728 i32.load local.get $1 i32.lt_u @@ -340,7 +369,7 @@ local.get $1 i32.const 3 i32.shl - i32.const 3284 + i32.const 3732 i32.add i32.load i32.const 32 @@ -936,10 +965,10 @@ if unreachable end - i32.const 19776 + i32.const 20256 i32.const 0 i32.store - i32.const 21344 + i32.const 21824 i32.const 0 i32.store loop $for-loop|0 @@ -950,7 +979,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 19776 + i32.const 20256 i32.add i32.const 0 i32.store offset=4 @@ -968,7 +997,7 @@ i32.add i32.const 2 i32.shl - i32.const 19776 + i32.const 20256 i32.add i32.const 0 i32.store offset=96 @@ -986,20 +1015,20 @@ br $for-loop|0 end end - i32.const 19776 - i32.const 21348 + i32.const 20256 + i32.const 21828 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 19776 + 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 19772 + i32.const 20252 i32.lt_u if return @@ -1126,7 +1155,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 19772 + i32.const 20252 i32.lt_u if local.get $0 @@ -1221,7 +1250,7 @@ unreachable end local.get $0 - i32.const 19772 + i32.const 20252 i32.lt_u if local.get $0 @@ -2847,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) @@ -2971,11 +3021,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3388 + i32.const 3868 i32.lt_s if - i32.const 19792 - i32.const 19840 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3083,11 +3133,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3388 + i32.const 3868 i32.lt_s if - i32.const 19792 - i32.const 19840 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3112,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 @@ -3126,7 +3176,7 @@ local.tee $0 i32.store local.get $0 - i32.const 2720 + i32.const 2768 local.get $0 select local.set $0 @@ -3284,6 +3334,204 @@ 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 $~lib/array/ensureCapacity (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.get $0 + i32.load offset=8 + local.tee $4 + i32.const 2 + i32.shr_u + local.get $1 + i32.lt_u + if + local.get $1 + 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 (result i32) + local.get $4 + i32.const 1 + i32.shl + local.tee $2 + i32.const 1073741820 + local.get $2 + i32.const 1073741820 + i32.lt_u + select + local.tee $2 + local.get $1 + i32.const 8 + local.get $1 + i32.const 8 + i32.gt_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.tee $1 + local.tee $2 + local.get $0 + i32.load + local.tee $6 + local.tee $5 + i32.const 20 + i32.sub + local.tee $3 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $3 + local.get $2 + i32.store offset=16 + local.get $5 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $2 + local.get $3 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $7 + local.get $5 + local.get $2 + local.get $3 + i32.load offset=16 + local.tee $3 + local.get $2 + local.get $3 + i32.lt_u + select + call $~lib/memory/memory.copy + local.get $7 + end + local.tee $2 + local.get $4 + i32.add + local.get $1 + local.get $4 + i32.sub + call $~lib/memory/memory.fill + local.get $2 + local.get $6 + i32.ne + if + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $1 + i32.store offset=8 + end + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.get $1 + i32.le_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1088 + i32.const 1776 + i32.const 123 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + local.get $0 + local.get $3 + i32.store offset=12 + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + ) + (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) @@ -4113,8 +4361,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> @@ -4131,7 +4379,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 @@ -4206,12 +4454,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 @@ -4221,30 +4468,35 @@ (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 f32) - (local $5 f64) + (local $4 i32) + (local $5 i32) (local $6 i32) - (local $7 i32) + (local $7 f64) + (local $8 f32) + (local $9 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 3388 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $1 i64.const 0 i64.store - local.get $7 + local.get $1 i64.const 0 i64.store offset=8 - local.get $7 + local.get $1 i64.const 0 i64.store offset=16 - local.get $7 + local.get $1 + i64.const 0 + i64.store offset=24 + local.get $1 i32.const 1056 i32.store i32.const 1056 @@ -4369,7 +4621,7 @@ memory.size i32.const 16 i32.shl - i32.const 19772 + i32.const 20252 i32.sub i32.const 1 i32.shr_u @@ -4401,17 +4653,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $1 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $7 + local.get $1 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $7 + local.tee $1 i32.store - local.get $7 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -4426,9 +4678,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $7 + local.tee $1 i32.store - local.get $7 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4443,9 +4695,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $7 + local.tee $1 i32.store - local.get $7 + local.get $1 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 7 @@ -4460,9 +4712,9 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $7 + local.tee $1 i32.store - local.get $7 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4480,16 +4732,16 @@ end global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $7 + local.tee $1 i32.store - local.get $7 + local.get $1 i32.const 8 call $~lib/staticarray/StaticArray#__set global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $7 + local.tee $1 i32.store - local.get $7 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 8 @@ -4505,17 +4757,17 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $1 i32.const 1312 i32.const 12 call $~lib/memory/memory.copy - local.get $7 + local.get $1 global.set $std/staticarray/arr3 global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 - local.tee $7 + local.tee $1 i32.store - local.get $7 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -4532,60 +4784,60 @@ i32.const 8 i32.const 5 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $1 i32.store offset=4 - local.get $7 + local.get $1 call $std/staticarray/Ref#constructor - local.tee $0 + local.tee $3 i32.store - local.get $7 - local.get $0 + local.get $1 + local.get $3 i32.const 1 call $~lib/rt/itcms/__link - local.get $7 + local.get $1 call $std/staticarray/Ref#constructor - local.tee $0 + local.tee $3 i32.store offset=4 - local.get $7 - local.get $0 + local.get $1 + local.get $3 i32.const 1 call $~lib/rt/itcms/__link - local.get $7 + 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 $7 - local.get $7 + 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 3388 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $7 + local.tee $1 i32.const 0 i32.store - local.get $7 + local.get $1 i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $1 i32.store - local.get $7 + 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 $7 + local.get $1 i32.store offset=4 - local.get $7 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4602,17 +4854,17 @@ unreachable end loop $for-loop|0 - local.get $7 + 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 $7 local.get $1 + local.get $0 call $~lib/staticarray/StaticArray#__get if i32.const 0 @@ -4622,10 +4874,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 @@ -4634,16 +4886,16 @@ i32.const 6 i32.const 1728 call $~lib/rt/__newArray - local.tee $7 + local.tee $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $0 call $~lib/staticarray/StaticArray.fromArray - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $7 - i32.load offset=12 local.get $0 + i32.load offset=12 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4658,38 +4910,18 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $1 loop $for-loop|1 - local.get $7 + local.get $0 i32.load offset=12 - local.get $1 + local.get $9 i32.gt_s if - local.get $0 local.get $1 + local.get $9 call $~lib/staticarray/StaticArray#__get - local.set $2 - local.get $7 - 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 $7 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 + local.get $0 + local.get $9 + call $~lib/array/Array#__get i32.ne if i32.const 0 @@ -4699,10 +4931,10 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $9 i32.const 1 i32.add - local.set $1 + local.set $9 br $for-loop|1 end end @@ -4711,15 +4943,15 @@ i32.const 6 i32.const 1824 call $~lib/rt/__newArray - local.set $7 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $0 i32.store - local.get $7 + local.get $0 call $~lib/staticarray/StaticArray.fromArray - local.tee $7 + local.tee $0 i32.store offset=4 - local.get $7 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4737,11 +4969,11 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $0 i32.const 1856 i32.const 8 call $~lib/memory/memory.copy - local.get $7 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 4 @@ -4754,7 +4986,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 - local.get $7 + local.get $0 local.get $1 call $~lib/staticarray/StaticArray.concat local.tee $1 @@ -4786,7 +5018,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 - local.get $7 + local.get $0 local.get $1 call $~lib/staticarray/StaticArray.concat local.tee $1 @@ -4797,7 +5029,7 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.get $7 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4816,26 +5048,26 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $1 i32.const 2128 i32.const 20 call $~lib/memory/memory.copy - local.get $7 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $1 i32.const 0 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 + local.tee $9 i32.store offset=4 - local.get $0 + local.get $9 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $7 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4851,33 +5083,33 @@ unreachable end i32.const 0 - local.set $1 + local.set $0 loop $for-loop|2 - local.get $7 + 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 $7 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 $9 local.get $0 - local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $6 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $4 i32.store offset=12 - local.get $2 - local.get $6 + local.get $3 + local.get $4 call $~lib/string/String.__eq i32.eqz if @@ -4888,21 +5120,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 $7 + 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 @@ -4918,18 +5150,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 $9 global.get $~lib/memory/__stack_pointer - local.tee $2 - local.get $0 + local.tee $3 + local.get $9 i32.store - local.get $2 + local.get $3 i32.const 1984 i32.store offset=12 - local.get $0 + local.get $9 i32.const 1984 call $~lib/string/String.__eq i32.eqz @@ -4941,18 +5173,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 $9 local.get $0 + i32.store + local.get $9 i32.const 2016 i32.store offset=12 - local.get $1 + local.get $0 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -4965,13 +5197,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + 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 $7 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4979,7 +5211,7 @@ i32.shr_u i32.const 1 i32.sub - local.get $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4995,19 +5227,19 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + 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 $7 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5023,13 +5255,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + 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 @@ -5044,13 +5276,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + 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 @@ -5066,18 +5298,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 $9 local.get $0 + i32.store + local.get $9 i32.const 2080 i32.store offset=12 - local.get $1 + local.get $0 i32.const 2080 call $~lib/string/String.__eq i32.eqz @@ -5090,13 +5322,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + 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 @@ -5111,13 +5343,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $1 i32.const 2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $7 + local.tee $0 i32.store offset=4 - local.get $7 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5133,18 +5365,18 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $7 + local.set $0 global.get $~lib/memory/__stack_pointer local.tee $1 - local.get $7 + local.get $0 i32.store local.get $1 i32.const 2016 i32.store offset=12 - local.get $7 + local.get $0 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -5160,11 +5392,11 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $0 i32.const 2304 i32.const 20 call $~lib/memory/memory.copy - local.get $7 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 0 @@ -5175,14 +5407,14 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 - local.get $7 + local.get $0 local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#concat local.tee $1 i32.store offset=16 local.get $1 i32.load offset=12 - local.get $7 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5206,14 +5438,14 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store offset=12 - local.get $7 + local.get $0 local.get $1 call $~lib/staticarray/StaticArray<~lib/string/String>#concat local.tee $1 i32.store offset=16 local.get $1 i32.load offset=12 - local.get $7 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -5234,16 +5466,16 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $0 i32.const 2448 i32.const 20 call $~lib/memory/memory.copy - local.get $7 + local.get $0 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 1984 i32.store offset=12 - local.get $7 + local.get $0 i32.const 1984 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5260,7 +5492,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2384 i32.store offset=12 - local.get $7 + local.get $0 i32.const 2384 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5275,7 +5507,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $7 + local.get $0 i32.const 2080 i32.const 5 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5290,7 +5522,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $7 + local.get $0 i32.const 2080 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5307,56 +5539,54 @@ i32.const 8 i32.const 10 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $0 i32.const 2496 i32.const 8 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $0 i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) i32.const 0 - local.set $1 - i32.const 0 - local.get $7 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 3 i32.shr_u - local.tee $2 + local.tee $9 i32.const 0 - local.get $2 + local.get $9 select i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|0 - local.get $1 local.get $2 + local.get $9 i32.lt_s if i32.const 1 i32.const 1 - local.get $1 + local.get $2 i32.const 3 i32.shl - local.get $7 + local.get $0 i32.add f64.load - local.tee $5 - local.get $5 + local.tee $7 + local.get $7 f64.ne - local.get $5 + local.get $7 f64.const nan:0x8000000000000 f64.eq select br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $while-continue|0 end end @@ -5374,56 +5604,56 @@ i32.const 4 i32.const 11 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $0 i32.const 2528 i32.const 4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $0 i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) i32.const 0 - local.set $1 + local.set $2 i32.const 0 - local.get $7 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 + local.tee $9 i32.const 0 - local.get $2 + local.get $9 select i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|07 - local.get $1 local.get $2 + local.get $9 i32.lt_s if i32.const 1 i32.const 1 - local.get $1 + local.get $2 i32.const 2 i32.shl - local.get $7 + local.get $0 i32.add f32.load - local.tee $4 - local.get $4 + local.tee $8 + local.get $8 f32.ne - local.get $4 + local.get $8 f32.const nan:0x400000 f32.eq select br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $while-continue|07 end end @@ -5442,56 +5672,56 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $2 i32.const 2560 i32.const 12 call $~lib/memory/memory.copy - local.get $7 + local.get $2 i32.store offset=16 i32.const 0 - local.set $1 + local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#indexOf - local.get $7 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 select i32.eqz if i32.const -1 - local.set $1 + local.set $0 br $__inlined_func$~lib/staticarray/StaticArray#indexOf end loop $while-continue|013 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|013 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1216 @@ -5501,49 +5731,49 @@ unreachable end i32.const 0 - local.set $1 + local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#indexOf14 - local.get $7 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 select i32.eqz if i32.const -1 - local.set $1 + local.set $0 br $__inlined_func$~lib/staticarray/StaticArray#indexOf14 end loop $while-continue|015 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load i32.const 7 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf14 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|015 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -5555,50 +5785,50 @@ unreachable end i32.const 2 - local.set $1 + local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#indexOf16 - local.get $7 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.const 2 i32.le_u i32.const 1 - local.get $0 + local.get $1 select if i32.const -1 - local.set $1 + local.set $0 br $__inlined_func$~lib/staticarray/StaticArray#indexOf16 end loop $while-continue|017 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load i32.const 9 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf16 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|017 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 2 i32.ne if @@ -5610,58 +5840,58 @@ unreachable end block $__inlined_func$~lib/staticarray/StaticArray#indexOf18 - local.get $7 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.const -1 i32.le_s i32.const 1 - local.get $0 + local.get $1 select if i32.const -1 - local.set $1 + local.set $0 br $__inlined_func$~lib/staticarray/StaticArray#indexOf18 end - local.get $0 + local.get $1 i32.const 1 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $1 + local.set $0 loop $while-continue|019 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf18 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|019 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const -1 i32.ne if @@ -5672,59 +5902,57 @@ call $~lib/builtins/abort unreachable end + i32.const -1 + local.set $0 block $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $7 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.const -3 i32.le_s i32.const 1 - local.get $0 + local.get $1 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 $1 i32.const 3 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select - local.set $1 + local.set $0 loop $while-continue|021 local.get $0 local.get $1 - i32.gt_s + i32.lt_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $while-continue|021 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1216 @@ -5734,476 +5962,326 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 + i32.const 16 + i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 - i32.const 2688 - i32.const 12 + local.tee $0 + i32.const 2592 + i32.const 16 call $~lib/memory/memory.copy - local.get $7 + local.get $0 i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 2752 - i32.store offset=20 - local.get $7 - i32.const 2752 - call $~lib/staticarray/StaticArray<~lib/string/String>#join + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $9 + local.set $2 + i32.const -1 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 $7 - 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 $7 - 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 $7 - 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 $7 - 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 3388 - 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 $7 - i32.const 2752 - call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $7 - 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 $7 - i32.store offset=12 - local.get $1 - local.get $7 - 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 $7 - i32.const 3056 - i32.const 16 - call $~lib/memory/memory.copy - local.get $7 - i32.store offset=16 - i32.const 1 - global.set $~argumentsLength - local.get $7 - 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 - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $2 - i32.eqz - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $1 - local.get $2 - i32.add - local.get $2 - i32.const 1 - i32.sub - local.get $1 - local.get $1 - local.get $2 - i32.ge_s - select - local.get $1 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf + local.get $9 + i32.eqz + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf + local.get $2 + local.get $9 + i32.add + local.get $9 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $9 + i32.ge_s + select + local.get $2 i32.const 0 i32.lt_s select - local.set $1 + local.set $2 loop $while-continue|00 - local.get $1 + local.get $2 i32.const 0 i32.ge_s if - local.get $1 - local.tee $0 + local.get $2 + local.tee $1 i32.const 2 i32.shl - local.get $7 + local.get $0 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $2 br $while-continue|00 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 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 $7 + local.get $0 + local.tee $2 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 + i32.const -1 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $9 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 - local.get $1 - local.get $2 + local.get $0 + local.get $9 i32.add - local.get $2 + local.get $9 i32.const 1 i32.sub - local.get $1 - local.get $1 - local.get $2 + local.get $0 + local.get $0 + local.get $9 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|06 - local.get $1 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 - local.tee $0 + local.get $0 + local.tee $1 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load i32.const 7 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $1 + local.set $0 br $while-continue|06 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if i32.const 0 i32.const 1216 - i32.const 159 + i32.const 149 i32.const 3 call $~lib/builtins/abort unreachable end block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 - local.get $7 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz if i32.const -1 - local.set $1 + local.set $0 br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 end - local.get $1 + local.get $0 i32.const 1 i32.sub i32.const 3 - local.get $1 + local.get $0 i32.const 3 i32.le_u select - local.set $1 - loop $while-continue|025 - local.get $1 + local.set $0 + loop $while-continue|023 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 - local.get $1 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|025 + local.set $0 + br $while-continue|023 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 i32.const 3 i32.ne if i32.const 0 i32.const 1216 - i32.const 160 + i32.const 150 i32.const 3 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 - local.get $7 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz if i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 + local.set $0 + br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 end - local.get $1 + local.get $0 i32.const 1 i32.sub i32.const 2 - local.get $1 + local.get $0 i32.const 2 i32.le_u select - local.set $1 - loop $while-continue|027 - local.get $1 + local.set $0 + loop $while-continue|025 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|027 + local.set $0 + br $while-continue|025 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1216 - i32.const 161 + i32.const 151 i32.const 3 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - local.get $7 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.eqz if i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 + local.set $0 + br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 end - local.get $1 + local.get $0 i32.const 2 i32.sub - local.set $1 - loop $while-continue|029 - local.get $1 + local.set $0 + loop $while-continue|027 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|029 + local.set $0 + br $while-continue|027 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 if i32.const 0 i32.const 1216 - i32.const 162 + i32.const 152 i32.const 3 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf30 - local.get $7 + i32.const -1 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -6211,42 +6289,196 @@ i32.shr_u local.tee $1 i32.eqz - if - i32.const -1 - local.set $1 - br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf30 - end + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 local.get $1 i32.const 1 i32.sub - local.set $1 - loop $while-continue|031 - local.get $1 + local.set $0 + loop $while-continue|029 + local.get $0 i32.const 0 i32.ge_s if - local.get $1 + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add i32.load i32.const 2 i32.eq - br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf30 - local.get $1 + br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 + local.get $0 i32.const 1 i32.sub - local.set $1 - br $while-continue|031 + local.set $0 + br $while-continue|029 end end i32.const -1 - local.set $1 + local.set $0 end - local.get $1 + local.get $0 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 $0 + i32.const 2736 + i32.const 12 + call $~lib/memory/memory.copy + local.get $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 2800 + i32.store offset=20 + local.get $0 + i32.const 2800 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2832 + i32.store offset=12 + local.get $2 + 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 $0 + i32.const 2768 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2880 + i32.store offset=12 + local.get $2 + 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 $0 + i32.const 2928 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2960 + i32.store offset=12 + local.get $2 + 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 $0 + i32.const 3008 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3040 + i32.store offset=12 + local.get $2 + 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 $0 + i32.const 2800 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + 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 $1 + i32.const 0 + i32.store + local.get $1 + i32.const 2800 + i32.store + local.get $0 + i32.const 2800 + call $~lib/staticarray/StaticArray<~lib/string/String>#join + local.set $0 + 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 $0 + i32.store offset=12 + local.get $2 + local.get $0 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1216 @@ -6259,45 +6491,45 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $0 i32.const 3104 i32.const 8 call $~lib/memory/memory.copy - local.get $7 + local.get $0 i32.store offset=16 i32.const 1 - local.get $7 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 - local.get $0 + local.tee $1 + local.get $1 i32.const 1 i32.gt_u select - local.set $1 + local.set $2 loop $for-loop|024 - local.get $0 local.get $1 + local.get $2 i32.gt_s if - local.get $1 + local.get $2 i32.const 2 i32.shl - local.get $7 + local.get $0 i32.add i32.const 1 i32.store - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|024 end end - local.get $7 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray#__get if @@ -6308,7 +6540,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6325,220 +6557,1066 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $0 i32.const 3136 i32.const 12 call $~lib/memory/memory.copy - local.get $7 + local.get $0 i32.store offset=16 i32.const 0 - local.set $1 - local.get $7 + local.set $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.const 1 i32.gt_u if - local.get $0 + local.get $1 i32.const 1 i32.shr_u - local.set $2 - local.get $0 + local.set $9 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 loop $while-continue|026 + local.get $2 + local.get $9 + i32.lt_u + if + local.get $2 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.tee $3 + i32.load + local.set $4 + local.get $3 + local.get $1 + local.get $2 + i32.sub + i32.const 2 + i32.shl + local.get $0 + i32.add + local.tee $3 + i32.load + i32.store + local.get $3 + local.get $4 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|026 + end + end + end + local.get $0 + 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 $0 + 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 $0 + 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 $0 + i32.const 3168 + i32.const 20 + call $~lib/memory/memory.copy + local.get $0 + i32.store offset=16 + i32.const 0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.tee $2 + local.get $2 + select + local.set $1 + local.get $2 + i32.const 3 + local.get $2 + local.get $2 + i32.const 3 + i32.gt_u + select + local.tee $3 + i32.sub + local.set $9 + local.get $1 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $3 + i32.const 2 + i32.shl + local.get $0 + i32.add + local.get $9 + local.get $2 + local.get $1 + i32.sub + local.tee $2 + local.get $2 + local.get $9 + i32.gt_s + select + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $0 + 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 $0 + 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 $0 + 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 $0 + 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 $0 + 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 $2 + i32.const 3216 + i32.const 12 + call $~lib/memory/memory.copy + local.get $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.tee $9 + i32.const 3248 + i32.store offset=12 + i32.const 0 + local.set $0 + local.get $9 + 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 $1 + i32.const 0 + i32.store + local.get $1 + local.get $2 + 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 $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $4 + loop $for-loop|027 + local.get $0 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $0 + 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 $0 + local.get $2 + i32.const 3248 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + 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 $9 + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 2 + call $~lib/array/Array#__set + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 203 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.const 3 + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 204 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.const 4 + call $~lib/array/Array#__set + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.eqz + 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 $0 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $1 + loop $for-loop|030 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $0 + i32.const 2 + i32.shl + local.get $2 + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $2 + i32.const 3280 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $0 + i32.const 1 + i32.add + local.set $0 + 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 $9 + i32.const 3312 + i32.store offset=12 + i32.const 0 + local.set $1 + local.get $9 + 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 $0 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $4 + loop $for-loop|028 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.get $2 + i32.add + i32.load + local.set $3 + i32.const 3 + global.set $~argumentsLength + local.get $3 + local.get $1 + local.get $2 + i32.const 3312 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $0 + local.get $0 + i32.load offset=12 + local.tee $5 + i32.const 1 + i32.add + local.tee $6 + call $~lib/array/ensureCapacity + local.get $0 + i32.load offset=4 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $0 + local.get $6 + i32.store offset=12 + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + 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 $9 + local.get $0 + i32.store offset=24 + local.get $0 + 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 $0 + i32.const 0 + i32.const 2 + call $~lib/array/Array#__set + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 214 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.const 3 + call $~lib/array/Array#__set + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.eqz + 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 $0 + i32.const 0 + local.set $1 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $9 + loop $for-loop|033 + local.get $0 + local.get $9 + i32.lt_s + if + local.get $0 + i32.const 2 + i32.shl + local.get $2 + i32.add + i32.load + local.set $3 + i32.const 4 + global.set $~argumentsLength local.get $1 + local.get $3 + local.get $0 local.get $2 - i32.lt_u + i32.const 3344 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|033 + end + end + local.get $1 + 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 $1 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|035 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $0 + i32.const 2 + i32.shl + local.get $2 + i32.add + i32.load + local.set $9 + i32.const 4 + global.set $~argumentsLength + local.get $1 + local.get $9 + local.get $0 + local.get $2 + i32.const 3376 + i32.load + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|035 + end + end + local.get $1 + 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 $1 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $9 + loop $for-loop|038 + local.get $1 + local.get $9 + i32.lt_s if local.get $1 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add - local.tee $6 i32.load local.set $3 - local.get $6 - local.get $0 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $3 local.get $1 - i32.sub + local.get $2 + i32.const 3408 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/staticarray/StaticArray#some + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + 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 $1 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $9 + loop $for-loop|040 + local.get $1 + local.get $9 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.get $2 + i32.add + i32.load + local.set $3 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $3 + local.get $1 + local.get $2 + i32.const 3440 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/staticarray/StaticArray#some39 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + 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 $1 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $9 + loop $for-loop|041 + local.get $1 + local.get $9 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.get $2 + i32.add + i32.load + local.set $3 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $3 + local.get $1 + local.get $2 + 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 $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|041 + end + end + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 230 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + 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 $1 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $9 + loop $for-loop|043 + local.get $1 + local.get $9 + i32.lt_s + if + local.get $1 + i32.const 2 + i32.shl + local.get $2 + i32.add + i32.load + local.set $3 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $3 + local.get $1 + local.get $2 + 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 $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|043 + end + end + i32.const 1 + end + if + i32.const 0 + i32.const 1216 + i32.const 231 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store offset=12 + i32.const 0 + local.set $0 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + local.set $1 + block $__inlined_func$~lib/staticarray/StaticArray#findIndex + loop $for-loop|044 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $0 i32.const 2 i32.shl - local.get $7 + local.get $2 i32.add - local.tee $6 i32.load - i32.store - local.get $6 - local.get $3 - i32.store - local.get $1 + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $2 + i32.const 3536 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex + local.get $0 i32.const 1 i32.add - local.set $1 - br $while-continue|026 + local.set $0 + br $for-loop|044 end end + i32.const -1 + local.set $0 end - local.get $7 - 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 $7 + local.get $0 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 234 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $7 + global.get $~lib/memory/__stack_pointer + i32.const 3568 + i32.store offset=12 + i32.const 0 + local.set $0 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 2 - call $~lib/staticarray/StaticArray#__get - i32.const 1 + i32.shr_u + local.set $1 + block $__inlined_func$~lib/staticarray/StaticArray#findIndex45 + loop $for-loop|046 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $0 + i32.const 2 + i32.shl + local.get $2 + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $2 + i32.const 3568 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex45 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|046 + end + end + i32.const -1 + local.set $0 + end + local.get $0 + i32.const -1 i32.ne if i32.const 0 i32.const 1216 - i32.const 182 + i32.const 235 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 $7 - i32.const 3168 - i32.const 20 - call $~lib/memory/memory.copy - local.get $7 - i32.store offset=16 - i32.const 0 - local.get $7 + i32.const 3600 + i32.store offset=12 + local.get $2 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 - select - local.set $0 - local.get $1 - i32.const 3 - local.get $1 - local.get $1 - i32.const 3 - i32.gt_u - select - local.tee $6 - i32.sub - local.set $2 - local.get $0 - i32.const 2 - i32.shl - local.get $7 - i32.add - local.get $6 - i32.const 2 - i32.shl - local.get $7 - i32.add - local.get $2 - local.get $1 - local.get $0 + i32.const 1 i32.sub - local.tee $1 - local.get $1 - local.get $2 - i32.gt_s - select - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $7 - 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 + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex + loop $for-loop|047 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $0 + i32.const 2 + i32.shl + local.get $2 + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $2 + i32.const 3600 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|047 + end + end + i32.const -1 + local.set $0 end - local.get $7 + local.get $0 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 238 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $7 + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.store offset=12 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 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 $7 - 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 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex48 + loop $for-loop|049 + local.get $0 + i32.const 0 + i32.ge_s + if + local.get $0 + i32.const 2 + i32.shl + local.get $2 + i32.add + i32.load + i32.const 3 + global.set $~argumentsLength + local.get $0 + local.get $2 + i32.const 3632 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex48 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|049 + end + end + i32.const -1 + local.set $0 end - local.get $7 - i32.const 4 - call $~lib/staticarray/StaticArray#__get - i32.const 5 + local.get $0 + i32.const -1 i32.ne if i32.const 0 i32.const 1216 - i32.const 194 + i32.const 239 i32.const 3 call $~lib/builtins/abort unreachable @@ -6547,22 +7625,22 @@ i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $7 - i32.const 3216 + local.tee $0 + i32.const 3664 i32.const 16 call $~lib/memory/memory.copy - local.get $7 - i32.store offset=16 + local.get $0 + i32.store offset=28 i32.const 0 global.set $~argumentsLength i32.const 0 - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3388 + i32.const 3868 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6576,37 +7654,37 @@ end unreachable end - i32.const 3264 - local.set $1 + i32.const 3712 + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 3264 + i32.const 3712 i32.store end - local.get $7 - local.get $7 + local.get $0 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $1 + local.get $2 call $~lib/util/sort/SORT global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray#__get if i32.const 0 i32.const 1216 - i32.const 202 + i32.const 248 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6614,12 +7692,12 @@ if i32.const 0 i32.const 1216 - i32.const 203 + i32.const 249 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -6627,12 +7705,12 @@ if i32.const 0 i32.const 1216 - i32.const 204 + i32.const 250 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $7 + local.get $0 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6640,23 +7718,23 @@ if i32.const 0 i32.const 1216 - i32.const 205 + i32.const 251 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 19772 + 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|02937 + loop $while-continue|037 global.get $~lib/rt/itcms/state if call $~lib/rt/itcms/step drop - br $while-continue|02937 + br $while-continue|037 end end end @@ -6681,13 +7759,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 19792 - i32.const 19840 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6700,11 +7778,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3388 + i32.const 3868 i32.lt_s if - i32.const 19792 - i32.const 19840 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6736,11 +7814,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3388 + i32.const 3868 i32.lt_s if - i32.const 19792 - i32.const 19840 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6802,11 +7880,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3388 + i32.const 3868 i32.lt_s if - i32.const 19792 - i32.const 19840 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6846,11 +7924,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3388 + i32.const 3868 i32.lt_s if - i32.const 19792 - i32.const 19840 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -6925,11 +8003,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3388 + i32.const 3868 i32.lt_s if - i32.const 19792 - i32.const 19840 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7049,11 +8127,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3388 + i32.const 3868 i32.lt_s if - i32.const 19792 - i32.const 19840 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -7115,11 +8193,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3388 + i32.const 3868 i32.lt_s if - i32.const 19792 - i32.const 19840 + i32.const 20272 + i32.const 20320 i32.const 1 i32.const 1 call $~lib/builtins/abort diff --git a/tests/compiler/std/staticarray.ts b/tests/compiler/std/staticarray.ts index 80a17e6379..9a77f59619 100644 --- a/tests/compiler/std/staticarray.ts +++ b/tests/compiler/std/staticarray.ts @@ -142,16 +142,6 @@ arr4 = changetype>(0); assert(array.indexOf(2, -3) == 0); } -// join + toString -{ - const elements: StaticArray = ['Fire', 'Air', 'Water']; - assert(elements.join() == "Fire,Air,Water"); - assert(elements.join('') == "FireAirWater"); - assert(elements.join('-') == "Fire-Air-Water"); - assert(elements.join(' + ') == "Fire + Air + Water"); - assert(elements.join() == elements.toString()); -} - // lastIndexOf { const numbers: StaticArray = [2, 5, 9, 2]; @@ -163,6 +153,16 @@ arr4 = changetype>(0); assert(numbers.lastIndexOf(2, -1) == 3); } +// join + toString +{ + const elements: StaticArray = ['Fire', 'Air', 'Water']; + assert(elements.join() == "Fire,Air,Water"); + assert(elements.join('') == "FireAirWater"); + assert(elements.join('-') == "Fire-Air-Water"); + assert(elements.join(' + ') == "Fire + Air + Water"); + assert(elements.join() == elements.toString()); +} + // fill { const numbers: StaticArray = [0, 0]; @@ -194,6 +194,52 @@ arr4 = changetype>(0); 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 bfce305c9b..57a7e3d861 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_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (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_=>_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 2256)) - (global $~lib/memory/__data_end i32 (i32.const 2364)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18748)) - (global $~lib/memory/__heap_base i32 (i32.const 18748)) + (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,27 +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 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) ",\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 2220) "\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 2256) "\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 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) @@ -4272,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) @@ -4372,6 +4367,26 @@ local.get $2 call $~lib/staticarray/StaticArray#lastIndexOf ) + (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#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) @@ -4669,554 +4684,592 @@ call $~lib/memory/memory.copy local.get $0 ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $2 - local.get $1 - i32.sub + (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 - local.set $5 - local.get $1 - local.get $5 - i32.const 1 - i32.and - local.get $3 - local.get $5 - local.get $3 + ) + (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 + 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 - i32.const 0 - i32.eq + local.get $0 + local.get $1 + local.tee $4 + local.get $2 + i32.load offset=16 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u select - i32.add - local.set $6 - loop $for-loop|0 - local.get $6 + call $~lib/memory/memory.copy + local.get $3 + ) + (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.get $0 + i32.load offset=8 + local.set $4 + local.get $1 + local.get $4 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 local.get $2 - i32.le_s - local.set $7 + i32.shr_u + i32.gt_u + if + 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 $0 - local.get $6 - i32.const 2 + local.get $4 + i32.const 1 i32.shl - i32.add - i32.load - local.set $8 - local.get $0 + 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 2 - i32.shl - i32.add - i32.load offset=4 - local.set $9 - local.get $9 - local.set $10 + local.tee $7 local.get $8 - local.set $11 + local.get $7 + i32.gt_u + select + local.set $6 + 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 - 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 + call $~lib/rt/itcms/__link end + local.get $0 + local.get $6 + i32.store offset=8 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) + (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#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 local.get $1 + i32.const 2 + i32.shl + i32.add local.get $2 - i32.eq + i32.store + i32.const 0 + drop + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if local.get $1 - return + i32.const 0 + i32.lt_s + if + i32.const 64 + i32.const 752 + i32.const 123 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ end + local.get $0 local.get $1 - local.set $4 + local.get $2 + call $~lib/array/Array#__uset + ) + (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 local.get $4 + i32.gt_s + 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 + 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 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + ) + (func $start:std/staticarray~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 i32.const 2 - i32.shl - i32.add - i32.load + i32.ge_s + ) + (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 - local.get $4 + i32.load offset=12 + local.set $2 + local.get $2 i32.const 1 i32.add - local.tee $4 + 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 - i32.load - i32.const 2 - global.set $~argumentsLength + local.get $1 + i32.store + local.get $0 local.get $3 - i32.load - call_indirect $0 (type $i32_i32_=>_i32) + 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 - 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.set $4 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + local.set $5 + loop $for-loop|0 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 $5 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $3 + local.get $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 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 2 + i32.shl + i32.add + i32.load + local.get $4 + 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.add + local.set $4 + 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 - local.get $0 - i32.sub - i32.const 1 - i32.add - i64.extend_i32_u - local.set $5 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 - 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 + local.get $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) + (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 $2 - local.get $3 - local.get $2 - i32.add - local.set $8 - local.get $2 - i32.const 1 - i32.add - local.set $6 + local.set $4 loop $for-loop|0 - local.get $6 - local.get $1 - i32.gt_s - local.set $9 - local.get $9 + 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 $6 - i32.const 1 - i32.sub i32.const 2 i32.shl i32.add + i32.load + local.get $4 local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - i32.add + i32.const 4 + global.set $~argumentsLength + local.get $1 i32.load - i32.store - local.get $6 + call_indirect $0 (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $4 i32.const 1 i32.sub - local.set $6 + local.set $4 br $for-loop|0 end end - local.get $2 - local.set $7 - loop $for-loop|1 - local.get $7 + 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 $9 - local.get $9 + local.set $4 + local.get $4 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 + local.get $2 i32.const 2 i32.shl i32.add - i32.load offset=4 - i32.store - local.get $7 + 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 + i32.const 1 + return + end + local.get $2 i32.const 1 i32.add - local.set $7 - br $for-loop|1 + local.set $2 + br $for-loop|0 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 + i32.const 0 + ) + (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) + 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 $4 - local.get $7 + local.get $0 + local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $11 - local.get $4 - local.get $6 + 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) + i32.eqz + if + i32.const 0 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 + ) + (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 $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 + local.get $2 + 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 -1 ) - (func $~lib/util/sort/SORT (param $0 i32) (param $1 i32) (param $2 i32) + (func $start:std/staticarray~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + 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 $4 i32) + local.get $0 + call $~lib/staticarray/StaticArray#get:length + i32.const 1 + i32.sub + local.set $2 + loop $for-loop|0 + local.get $2 + i32.const 0 + i32.ge_s + local.set $3 + local.get $3 + 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 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_i32) + if + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + ) + (func $start:std/staticarray~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 4 + i32.eq + ) + (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) @@ -5226,1027 +5279,2011 @@ (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) + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $2 local.get $1 - i32.const 48 - i32.le_s - if - local.get $1 - i32.const 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 - 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 + local.get $6 + i32.const 2 + i32.shl + i32.add i32.load - local.set $5 + local.set $8 local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - local.set $4 - local.get $5 - local.get $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 $2 + local.get $4 i32.load call_indirect $0 (type $i32_i32_=>_i32) i32.const 0 - i32.gt_s - local.set $3 + 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 $4 - local.get $5 - local.get $3 - select - i32.store + 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 $5 - local.get $4 - local.get $3 - select + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $10 i32.store offset=4 - return + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $for-loop|0 end - local.get $0 - i32.const 0 + 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 - 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 + local.set $4 + local.get $0 + local.get $4 i32.const 2 i32.shl - local.set $7 - local.get $7 + i32.add + i32.load + local.get $0 + local.get $4 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 + local.tee $4 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.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect $0 (type $i32_i32_=>_i32) 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 + i32.gt_s + if + loop $while-continue|0 + local.get $4 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 + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl i32.add - i32.const 1 - i32.sub - local.tee $18 - local.get $17 - local.get $18 - i32.lt_s - select - local.set $3 + i32.load offset=4 local.get $0 - local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength local.get $3 - local.get $16 - local.get $2 - call $~lib/util/sort/insertionSort + i32.load + call_indirect $0 (type $i32_i32_=>_i32) + i32.const 31 + i32.shr_u + else + i32.const 0 end - i32.const 0 - local.get $11 - local.get $15 + local.set $5 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 + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 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.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 $19 - local.get $9 - local.get $4 + 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.get $11 - local.get $10 - local.get $2 - call $~lib/util/sort/mergeRuns + 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 - 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 + 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/staticarray/StaticArray#sort (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $0 - call $~lib/staticarray/StaticArray#get:length + (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 - call $~lib/util/sort/SORT local.get $0 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + i32.sub + i32.const 1 + i32.add + i64.extend_i32_u + local.set $5 + local.get $3 local.get $0 - local.get $1 + i32.const 1 + i32.shl 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 + 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 200 - i64.mul - i64.const 100 + 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.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 + i32.clz ) - (func $~lib/staticarray/StaticArray#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + local.get $2 i32.const 1 - drop - local.get $0 + i32.sub local.set $2 + local.get $3 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 + 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 $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 + local.get $4 + local.get $6 + i32.const 1 + i32.sub + i32.const 2 + i32.shl 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 $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.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.add - local.set $3 - loop $while-continue|0 - local.get $2 + local.set $7 + loop $for-loop|1 + local.get $7 local.get $3 - i32.lt_u - local.set $4 - local.get $4 + i32.lt_s + local.set $9 + local.get $9 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 + local.get $4 + local.get $8 + local.get $7 + i32.sub + i32.const 2 + i32.shl i32.add - local.set $2 - br $while-continue|0 + 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 - ) - (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.set $9 + loop $for-loop|2 + local.get $9 local.get $3 - i32.lt_u - local.set $4 - local.get $4 + i32.le_s + local.set $10 + local.get $10 if - local.get $2 + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add i32.load - local.set $5 + 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 $5 - local.get $1 - call $~lib/rt/itcms/__visit + 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 $2 - i32.const 4 + local.get $9 + i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $9 + br $for-loop|2 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%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 + (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 - 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 + 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 - call $~lib/array/Array<~lib/string/String>~visit - return + 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 - return + 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 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + i32.const 1 + i32.sub + i32.const 0 + local.get $2 + call $~lib/util/sort/insertionSort return end - unreachable - ) - (func $~start - call $start:std/staticarray - ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_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 - i32.const 18768 - i32.const 18816 + 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 + 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.const 192 + i32.const 5 + 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 + 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 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 + i32.const 0 + i32.const 192 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/staticarray/arr3 + 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 + i32.const 0 + i32.const 192 + i32.const 25 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + 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 + i32.const 0 + i32.const 192 + i32.const 26 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 $std/staticarray/arr3 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check + 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 - i32.const 0 + local.get $5 i32.store - local.get $0 - call $~lib/staticarray/StaticArray<~lib/string/String>#get:length - local.set $3 - local.get $3 - i32.const 0 + local.get $5 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 8 i32.eq - if (result i32) + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 28 i32.const 1 - else - local.get $2 - local.get $3 - i32.ge_s + call $~lib/builtins/abort + unreachable end + 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 + call $~lib/staticarray/StaticArray#__get + i32.const 6 + i32.eq + 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 30 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 i32.const 0 - i32.lt_s + 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 + 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 + call $~lib/staticarray/StaticArray#get:length + i32.const 3 + i32.eq + i32.eqz 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 + i32.const 192 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable end - loop $while-continue|0 - local.get $2 - local.get $3 + 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 $4 - local.get $4 + local.set $2 + local.get $2 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 + call $~lib/staticarray/StaticArray#__get + i32.const 0 + i32.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 46 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 - br $while-continue|0 + local.set $1 + br $for-loop|0 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 $0 - i32.const 1728 - 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) global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=16 - global.get $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 6 i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/staticarray/arr1 - local.set $4 + 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 $4 - i32.store - local.get $4 + local.get $1 + call $~lib/staticarray/StaticArray.fromArray + local.tee $0 + i32.store offset=4 + local.get $0 call $~lib/staticarray/StaticArray#get:length - i32.const 3 + local.get $1 + call $~lib/array/Array#get:length i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 6 - i32.const 1 + i32.const 56 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/staticarray/arr1 - local.set $4 + 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 - 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 + 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 $4 + local.get $5 i32.store - local.get $4 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 4 + local.get $5 + call $~lib/staticarray/StaticArray.fromArray + local.tee $0 + i32.store offset=4 + local.get $0 + call $~lib/staticarray/StaticArray#get:length + i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 8 - i32.const 1 + i32.const 61 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/staticarray/arr1 - i32.const 20 - i32.sub - i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 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 $4 + i32.const 832 + call $~lib/rt/__newBuffer + local.tee $0 + i32.store offset=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 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 $4 + 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 $4 - i32.store - local.get $4 + 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 i32.const 3 i32.eq @@ -6254,1427 +7291,1404 @@ if i32.const 0 i32.const 192 - i32.const 14 - i32.const 1 + i32.const 69 + 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 + 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 $4 - i32.store - local.get $4 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 4 + 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 0 i32.const 192 - i32.const 16 - i32.const 1 + i32.const 71 + 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 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 + 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 - call $~lib/staticarray/StaticArray#__get - i32.const 5 + 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.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 23 - i32.const 1 + i32.const 78 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/staticarray/arr3 - local.set $4 + 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 $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + 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 + 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 $4 - i32.store - local.get $4 + local.get $1 i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 6 + 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 + i32.const 2 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 24 - i32.const 1 + i32.const 85 + i32.const 3 call $~lib/builtins/abort unreachable end - 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 - i32.const 2 - call $~lib/staticarray/StaticArray#__get - i32.const 7 - i32.eq + local.get $5 + i32.const 960 + 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 25 - i32.const 1 + i32.const 86 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/staticarray/arr3 - local.set $4 + local.get $0 + i32.const 1 + 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 - call $~lib/staticarray/StaticArray#get:length - i32.const 3 - i32.eq + 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 26 - i32.const 1 + i32.const 87 + 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 + local.get $1 i32.const 1 - i32.const 8 - call $~lib/staticarray/StaticArray#__set - global.get $std/staticarray/arr3 - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 + 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 8 + i32.sub i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 28 - i32.const 1 + i32.const 90 + 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 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 6 + 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 30 - i32.const 1 + i32.const 93 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 5 - i32.const 0 - call $~lib/rt/__newBuffer + 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.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 - 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 - 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 96 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 global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/staticarray/StaticArray.fromArray + 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#get:length - local.get $1 - call $~lib/array/Array#get:length + 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 56 + i32.const 99 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 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 + call $~lib/staticarray/StaticArray<~lib/string/String>#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + 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 100 + i32.const 3 + call $~lib/builtins/abort + unreachable end 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.const 2 - i32.const 6 - i32.const 800 - call $~lib/rt/__newArray - local.set $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/staticarray/StaticArray.fromArray + 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#get:length - i32.const 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 61 + i32.const 106 + 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 $5 + i32.store + 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 3 - i32.const 832 + 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 4 - i32.const 3 - i32.const 864 - call $~lib/rt/__newBuffer - local.set $4 + i32.const 0 + i32.const 2 + i32.const 9 + i32.const 1328 + call $~lib/rt/__newArray + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 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 $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 69 + i32.const 115 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 1 + drop 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 + i32.const 1 + i32.const 2 + i32.const 9 + i32.const 1392 + call $~lib/rt/__newArray + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 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 $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#get:length + 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 71 + i32.const 119 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 1104 + i32.const 1424 call $~lib/rt/__newBuffer - local.tee $1 - i32.store offset=8 + local.tee $3 + i32.store offset=16 + local.get $3 + i32.const 960 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $5 + i32.store offset=12 + local.get $5 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 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 78 + i32.const 126 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $3 + i32.const 1360 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 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 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 127 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $3 + i32.const 1056 + local.set $5 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 - i32.const 2 + 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 85 + i32.const 128 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 + local.get $3 + i32.const 1056 + 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 -1 + call $~lib/staticarray/StaticArray<~lib/string/String>#includes + i32.const 1 + i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 86 + i32.const 129 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 $4 + i32.const 8 + i32.const 10 + i32.const 1472 + call $~lib/rt/__newBuffer + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 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 + local.get $5 + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/staticarray/StaticArray#includes + i32.const 1 + i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 87 + i32.const 131 i32.const 3 call $~lib/builtins/abort unreachable end + 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 - 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 + local.get $5 + i32.store + local.get $5 + f32.const nan:0x400000 + i32.const 0 + call $~lib/staticarray/StaticArray#includes i32.const 1 - i32.sub i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 90 + i32.const 132 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + 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.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 138 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 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 96 + i32.const 139 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 + 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 99 + i32.const 140 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 1056 - 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 $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 100 + i32.const 141 i32.const 3 call $~lib/builtins/abort unreachable end - 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 + 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 103 + i32.const 142 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + 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 -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 + 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 106 + i32.const 148 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 + i32.const 7 + i32.const 1 + global.set $~argumentsLength 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 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 + call $~lib/staticarray/StaticArray#lastIndexOf@varargs + i32.const -1 + i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 107 + i32.const 149 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 - 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 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 115 + i32.const 150 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 + local.get $3 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 + i32.const 2 + call $~lib/staticarray/StaticArray#lastIndexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 192 + i32.const 151 + i32.const 3 + call $~lib/builtins/abort + unreachable + end 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.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 119 + i32.const 152 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 - 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 - i32.const 0 - call $~lib/staticarray/StaticArray<~lib/string/String>#includes - i32.const 1 + 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 126 + i32.const 153 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + 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 1360 - local.set $4 + 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 $5 + i32.const 1808 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 i32.store offset=12 - local.get $4 - i32.const 0 - call $~lib/staticarray/StaticArray<~lib/string/String>#includes - i32.const 0 - i32.eq + local.get $5 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 192 - i32.const 127 + i32.const 159 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 1056 - local.set $4 + 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 $5 + i32.const 1856 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 i32.store offset=12 - local.get $4 - i32.const 5 - call $~lib/staticarray/StaticArray<~lib/string/String>#includes - i32.const 0 - i32.eq + local.get $5 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 192 - i32.const 128 + i32.const 160 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 1056 - local.set $4 + i32.const 1904 + 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 $5 + i32.const 1936 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 i32.store offset=12 - local.get $4 - i32.const -1 - call $~lib/staticarray/StaticArray<~lib/string/String>#includes - i32.const 1 - i32.eq + local.get $5 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 192 - i32.const 129 + i32.const 161 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 + local.get $3 + i32.const 1984 + 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 - f64.const nan:0x8000000000000 - i32.const 0 - call $~lib/staticarray/StaticArray#includes - i32.const 1 - i32.eq + 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 131 + i32.const 162 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 4 - i32.const 11 - i32.const 1504 - call $~lib/rt/__newBuffer - 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 - f32.const nan:0x400000 - i32.const 0 - call $~lib/staticarray/StaticArray#includes - i32.const 1 - i32.eq + 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 $5 + i32.store offset=12 + local.get $5 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 192 - i32.const 132 + i32.const 163 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.const 3 - i32.const 1536 + i32.const 2080 call $~lib/rt/__newBuffer local.tee $3 i32.store offset=16 local.get $3 - i32.const 2 + 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#indexOf + call $~lib/staticarray/StaticArray#__get i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 138 + i32.const 171 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 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 139 + i32.const 172 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + 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 9 - i32.const 2 - call $~lib/staticarray/StaticArray#indexOf - i32.const 2 + call $~lib/staticarray/StaticArray#reverse + drop + local.get $3 + i32.const 0 + call $~lib/staticarray/StaticArray#__get + i32.const 3 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 140 + 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.const -1 - call $~lib/staticarray/StaticArray#indexOf - i32.const -1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 141 + i32.const 181 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 i32.const 2 - i32.const -3 - call $~lib/staticarray/StaticArray#indexOf - i32.const 0 + call $~lib/staticarray/StaticArray#__get + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 142 + i32.const 182 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 8 - i32.const 1664 + 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 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 + i32.const 0 + 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 148 + i32.const 190 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 + i32.const 1 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 149 + i32.const 191 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 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - call $~lib/string/String.__eq + i32.const 2 + call $~lib/staticarray/StaticArray#__get + i32.const 3 + i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 150 + i32.const 192 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 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - call $~lib/string/String.__eq + i32.const 3 + call $~lib/staticarray/StaticArray#__get + i32.const 4 + i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 151 + i32.const 193 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 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - local.get $3 - call $~lib/staticarray/StaticArray<~lib/string/String>#toString - 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 4 + call $~lib/staticarray/StaticArray#__get + i32.const 5 + i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 152 + i32.const 194 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.const 3 - i32.const 2032 + 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 1 - global.set $~argumentsLength + 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 + local.tee $2 i32.const 0 - call $~lib/staticarray/StaticArray#lastIndexOf@varargs - i32.const 3 - i32.eq + local.tee $1 + i32.const 2 + call $~lib/array/Array#__set + local.get $2 + local.get $1 + call $~lib/array/Array#__get i32.eqz if i32.const 0 i32.const 192 - i32.const 158 + i32.const 203 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 7 + local.get $0 + local.tee $2 i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/staticarray/StaticArray#lastIndexOf@varargs - i32.const -1 - i32.eq + local.tee $1 + i32.const 3 + call $~lib/array/Array#__set + local.get $2 + local.get $1 + call $~lib/array/Array#__get i32.eqz if i32.const 0 i32.const 192 - i32.const 159 + i32.const 204 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $0 + local.tee $2 i32.const 2 - i32.const 3 - call $~lib/staticarray/StaticArray#lastIndexOf - i32.const 3 - i32.eq + local.tee $1 + i32.const 4 + call $~lib/array/Array#__set + local.get $2 + local.get $1 + call $~lib/array/Array#__get i32.eqz if i32.const 0 i32.const 192 - i32.const 160 + i32.const 205 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 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 161 + 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 -2 - call $~lib/staticarray/StaticArray#lastIndexOf - i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 162 + i32.const 213 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 + local.tee $1 + i32.const 0 + local.tee $4 i32.const 2 - i32.const -1 - call $~lib/staticarray/StaticArray#lastIndexOf - i32.const 3 - i32.eq + call $~lib/array/Array#__set + local.get $1 + local.get $4 + call $~lib/array/Array#__get i32.eqz if i32.const 0 i32.const 192 - i32.const 163 + i32.const 214 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 3 - i32.const 2080 - call $~lib/rt/__newBuffer - local.tee $3 - i32.store offset=16 - local.get $3 - i32.const 1 + local.get $2 + local.tee $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 + local.tee $4 + i32.const 3 + call $~lib/array/Array#__set + local.get $1 + local.get $4 + call $~lib/array/Array#__get i32.eqz if i32.const 0 i32.const 192 - i32.const 171 + i32.const 215 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 1 + i32.const 2320 + 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#reduce + local.set $1 + local.get $1 + i32.const 6 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 172 + i32.const 219 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.const 3 - i32.const 2112 - call $~lib/rt/__newBuffer - local.tee $3 - i32.store offset=16 - local.get $3 - call $~lib/staticarray/StaticArray#reverse - drop local.get $3 + i32.const 2352 + 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#__get - i32.const 3 + call $~lib/staticarray/StaticArray#reduceRight + local.set $4 + local.get $4 + i32.const 6 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 180 + i32.const 223 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 2384 + local.set $5 + global.get $~lib/memory/__stack_pointer + 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 - i32.const 1 - call $~lib/staticarray/StaticArray#__get - i32.const 2 - i32.eq + i32.const 2416 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/staticarray/StaticArray#some + i32.eqz i32.eqz if i32.const 0 i32.const 192 - i32.const 181 + i32.const 227 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.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 182 + i32.const 230 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - 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 - 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.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 190 + i32.const 231 i32.const 3 call $~lib/builtins/abort unreachable end local.get $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 - call $~lib/staticarray/StaticArray#__get - i32.const 5 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 191 + i32.const 234 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 2 - call $~lib/staticarray/StaticArray#__get - i32.const 3 + 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 192 + i32.const 235 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 3 - call $~lib/staticarray/StaticArray#__get - i32.const 4 + 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 193 + i32.const 238 i32.const 3 call $~lib/builtins/abort unreachable end local.get $3 - i32.const 4 - call $~lib/staticarray/StaticArray#__get - i32.const 5 + 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 i32.eq i32.eqz if i32.const 0 i32.const 192 - i32.const 194 + i32.const 239 i32.const 3 call $~lib/builtins/abort unreachable @@ -7682,17 +8696,17 @@ global.get $~lib/memory/__stack_pointer i32.const 16 i32.const 3 - i32.const 2192 + 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 @@ -7701,12 +8715,12 @@ if i32.const 0 i32.const 192 - i32.const 202 + 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 @@ -7715,12 +8729,12 @@ if i32.const 0 i32.const 192 - i32.const 203 + 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 @@ -7729,12 +8743,12 @@ if i32.const 0 i32.const 192 - i32.const 204 + 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 @@ -7743,7 +8757,7 @@ if i32.const 0 i32.const 192 - i32.const 205 + i32.const 251 i32.const 3 call $~lib/builtins/abort unreachable @@ -7752,7 +8766,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 ) @@ -8374,7 +9388,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 @@ -8395,7 +9409,7 @@ if (result i32) local.get $4 else - i32.const 1696 + i32.const 1744 end local.set $12 global.get $~lib/memory/__stack_pointer @@ -8556,6 +9570,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 @@ -8582,7 +9744,7 @@ i32.const 4 i32.le_u drop - i32.const 2240 + i32.const 2688 br $~lib/util/sort/COMPARATOR|inlined.0 end local.tee $1 From cb79cac3a82459901a123816194f6085ffa3c506 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Mon, 13 Sep 2021 16:43:44 +0300 Subject: [PATCH 7/7] fix --- tests/compiler/std/staticarray.optimized.wat | 1354 +++++++++--------- tests/compiler/std/staticarray.ts | 10 +- tests/compiler/std/staticarray.untouched.wat | 197 +-- 3 files changed, 720 insertions(+), 841 deletions(-) diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index 14e046f24d..c065279b3b 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -2,8 +2,8 @@ (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_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_=>_none (func (param 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_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) @@ -3339,159 +3339,6 @@ i32.const 1 i32.add ) - (func $~lib/array/ensureCapacity (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.get $0 - i32.load offset=8 - local.tee $4 - i32.const 2 - i32.shr_u - local.get $1 - i32.lt_u - if - local.get $1 - 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 (result i32) - local.get $4 - i32.const 1 - i32.shl - local.tee $2 - i32.const 1073741820 - local.get $2 - i32.const 1073741820 - i32.lt_u - select - local.tee $2 - local.get $1 - i32.const 8 - local.get $1 - i32.const 8 - i32.gt_u - select - i32.const 2 - i32.shl - local.tee $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.tee $1 - local.tee $2 - local.get $0 - i32.load - local.tee $6 - local.tee $5 - i32.const 20 - i32.sub - local.tee $3 - i32.load - i32.const -4 - i32.and - i32.const 16 - i32.sub - i32.le_u - if - local.get $3 - local.get $2 - i32.store offset=16 - local.get $5 - br $__inlined_func$~lib/rt/itcms/__renew - end - local.get $2 - local.get $3 - i32.load offset=12 - call $~lib/rt/itcms/__new - local.tee $7 - local.get $5 - local.get $2 - local.get $3 - i32.load offset=16 - local.tee $3 - local.get $2 - local.get $3 - i32.lt_u - select - call $~lib/memory/memory.copy - local.get $7 - end - local.tee $2 - local.get $4 - i32.add - local.get $1 - local.get $4 - i32.sub - call $~lib/memory/memory.fill - local.get $2 - local.get $6 - i32.ne - if - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $2 - i32.const 0 - call $~lib/rt/itcms/__link - end - local.get $0 - local.get $1 - i32.store offset=8 - end - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.get $1 - i32.le_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1088 - i32.const 1776 - i32.const 123 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - call $~lib/array/ensureCapacity - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) (func $start:std/staticarray~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) global.get $std/staticarray/maxVal local.tee $1 @@ -4474,6 +4321,13 @@ (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 32 i32.sub @@ -4886,16 +4740,16 @@ i32.const 6 i32.const 1728 call $~lib/rt/__newArray - local.tee $0 + local.tee $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 call $~lib/staticarray/StaticArray.fromArray - local.tee $1 + local.tee $0 i32.store offset=4 - local.get $0 - i32.load offset=12 local.get $1 + i32.load offset=12 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -4911,16 +4765,16 @@ unreachable end loop $for-loop|1 - local.get $0 + local.get $1 i32.load offset=12 - local.get $9 + local.get $2 i32.gt_s if - local.get $1 - local.get $9 - call $~lib/staticarray/StaticArray#__get local.get $0 - local.get $9 + local.get $2 + call $~lib/staticarray/StaticArray#__get + local.get $1 + local.get $2 call $~lib/array/Array#__get i32.ne if @@ -4931,10 +4785,10 @@ call $~lib/builtins/abort unreachable end - local.get $9 + local.get $2 i32.const 1 i32.add - local.set $9 + local.set $2 br $for-loop|1 end end @@ -4943,15 +4797,15 @@ i32.const 6 i32.const 1824 call $~lib/rt/__newArray - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store - local.get $0 + local.get $1 call $~lib/staticarray/StaticArray.fromArray - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -4969,29 +4823,29 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 1856 i32.const 8 call $~lib/memory/memory.copy - local.get $0 + 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 - i32.store offset=12 local.get $0 + i32.store offset=12 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 @@ -5011,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 - i32.store offset=12 local.get $0 + i32.store offset=12 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 $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5059,9 +4913,9 @@ i32.const 0 i32.const 2147483647 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $9 + local.tee $2 i32.store offset=4 - local.get $9 + local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -5101,7 +4955,7 @@ global.get $~lib/memory/__stack_pointer local.get $3 i32.store - local.get $9 + local.get $2 local.get $0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get local.set $4 @@ -5153,15 +5007,15 @@ local.get $0 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $9 + local.set $2 global.get $~lib/memory/__stack_pointer local.tee $3 - local.get $9 + local.get $2 i32.store local.get $3 i32.const 1984 i32.store offset=12 - local.get $9 + local.get $2 i32.const 1984 call $~lib/string/String.__eq i32.eqz @@ -5178,10 +5032,10 @@ call $~lib/staticarray/StaticArray<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $9 + local.tee $2 local.get $0 i32.store - local.get $9 + local.get $2 i32.const 2016 i32.store offset=12 local.get $0 @@ -5303,10 +5157,10 @@ call $~lib/staticarray/StaticArray<~lib/string/String>#__get local.set $0 global.get $~lib/memory/__stack_pointer - local.tee $9 + local.tee $2 local.get $0 i32.store - local.get $9 + local.get $2 i32.const 2080 i32.store offset=12 local.get $0 @@ -5347,9 +5201,9 @@ i32.const 2 i32.const -2 call $~lib/staticarray/StaticArray.slice<~lib/string/String> - local.tee $0 + local.tee $1 i32.store offset=4 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5365,18 +5219,18 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#__get - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.tee $1 - local.get $0 - i32.store + local.tee $0 local.get $1 + i32.store + local.get $0 i32.const 2016 i32.store offset=12 - local.get $0 + local.get $1 i32.const 2016 call $~lib/string/String.__eq i32.eqz @@ -5392,29 +5246,29 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 2304 i32.const 20 call $~lib/memory/memory.copy - local.get $0 + 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 - i32.store offset=12 local.get $0 + i32.store offset=12 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 - i32.load offset=12 local.get $0 + i32.load offset=12 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5434,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 - i32.store offset=12 local.get $0 + i32.store offset=12 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 - i32.load offset=12 local.get $0 + i32.load offset=12 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -5466,16 +5320,16 @@ i32.const 20 i32.const 8 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 2448 i32.const 20 call $~lib/memory/memory.copy - local.get $0 + local.get $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 1984 i32.store offset=12 - local.get $0 + local.get $1 i32.const 1984 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5492,7 +5346,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2384 i32.store offset=12 - local.get $0 + local.get $1 i32.const 2384 i32.const 0 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5507,7 +5361,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $0 + local.get $1 i32.const 2080 i32.const 5 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5522,7 +5376,7 @@ global.get $~lib/memory/__stack_pointer i32.const 2080 i32.store offset=12 - local.get $0 + local.get $1 i32.const 2080 i32.const -1 call $~lib/staticarray/StaticArray<~lib/string/String>#includes @@ -5539,39 +5393,39 @@ i32.const 8 i32.const 10 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 2496 i32.const 8 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) i32.const 0 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 3 i32.shr_u - local.tee $9 + local.tee $2 i32.const 0 - local.get $9 + local.get $2 select i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|0 local.get $2 - local.get $9 - i32.lt_s + local.get $16 + i32.gt_s if i32.const 1 i32.const 1 - local.get $2 + local.get $16 i32.const 3 i32.shl - local.get $0 + local.get $1 i32.add f64.load local.tee $7 @@ -5583,10 +5437,10 @@ select br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $2 + local.get $16 i32.const 1 i32.add - local.set $2 + local.set $16 br $while-continue|0 end end @@ -5604,41 +5458,41 @@ i32.const 4 i32.const 11 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 2528 i32.const 4 call $~lib/memory/memory.copy global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) i32.const 0 - local.set $2 + local.set $16 i32.const 0 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $9 + local.tee $2 i32.const 0 - local.get $9 + local.get $2 select i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop loop $while-continue|07 local.get $2 - local.get $9 - i32.lt_s + local.get $16 + i32.gt_s if i32.const 1 i32.const 1 - local.get $2 + local.get $16 i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add f32.load local.tee $8 @@ -5650,10 +5504,10 @@ select br_if $__inlined_func$~lib/staticarray/StaticArray#includes drop - local.get $2 + local.get $16 i32.const 1 i32.add - local.set $2 + local.set $16 br $while-continue|07 end end @@ -5672,56 +5526,56 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.const 2560 i32.const 12 call $~lib/memory/memory.copy - local.get $2 + local.get $0 i32.store offset=16 i32.const 0 - local.set $0 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 select i32.eqz if i32.const -1 - local.set $0 + local.set $1 br $__inlined_func$~lib/staticarray/StaticArray#indexOf end loop $while-continue|013 - local.get $0 local.get $1 + local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|013 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1216 @@ -5731,49 +5585,49 @@ unreachable end i32.const 0 - local.set $0 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf14 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 select i32.eqz if i32.const -1 - local.set $0 + local.set $1 br $__inlined_func$~lib/staticarray/StaticArray#indexOf14 end loop $while-continue|015 - local.get $0 local.get $1 + local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 7 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf14 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|015 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -5785,50 +5639,50 @@ unreachable end i32.const 2 - local.set $0 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf16 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $2 i32.const 2 i32.le_u i32.const 1 - local.get $1 + local.get $2 select if i32.const -1 - local.set $0 + local.set $1 br $__inlined_func$~lib/staticarray/StaticArray#indexOf16 end loop $while-continue|017 - local.get $0 local.get $1 + local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 9 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf16 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|017 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 2 i32.ne if @@ -5840,58 +5694,58 @@ unreachable end block $__inlined_func$~lib/staticarray/StaticArray#indexOf18 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $2 i32.const -1 i32.le_s i32.const 1 - local.get $1 + local.get $2 select if i32.const -1 - local.set $0 + local.set $1 br $__inlined_func$~lib/staticarray/StaticArray#indexOf18 end - local.get $1 + local.get $2 i32.const 1 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 loop $while-continue|019 - local.get $0 local.get $1 + local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf18 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|019 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -5903,56 +5757,56 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $2 i32.const -3 i32.le_s i32.const 1 - local.get $1 + local.get $2 select br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $1 + local.get $2 i32.const 3 i32.sub - local.tee $0 + local.tee $1 i32.const 0 - local.get $0 + local.get $1 i32.const 0 i32.gt_s select - local.set $0 + local.set $1 loop $while-continue|021 - local.get $0 local.get $1 + local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#indexOf20 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $while-continue|021 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1216 @@ -5965,70 +5819,70 @@ i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 2592 i32.const 16 call $~lib/memory/memory.copy - local.get $0 + local.get $1 i32.store offset=16 i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $9 - local.set $2 + local.tee $16 + local.set $0 i32.const -1 - local.set $1 + local.set $2 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $9 + local.get $16 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $2 - local.get $9 + local.get $0 + local.get $16 i32.add - local.get $9 + local.get $16 i32.const 1 i32.sub - local.get $2 - local.get $2 - local.get $9 + local.get $0 + local.get $0 + local.get $16 i32.ge_s select - local.get $2 + local.get $0 i32.const 0 i32.lt_s select - local.set $2 + local.set $0 loop $while-continue|00 - local.get $2 + local.get $0 i32.const 0 i32.ge_s if - local.get $2 - local.tee $1 + local.get $0 + local.tee $2 i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf - local.get $1 + local.get $2 i32.const 1 i32.sub - local.set $2 + local.set $0 br $while-continue|00 end end i32.const -1 - local.set $1 + local.set $2 end - local.get $1 + local.get $2 i32.const 3 i32.ne if @@ -6041,68 +5895,68 @@ end i32.const 1 global.set $~argumentsLength - local.get $0 - local.tee $2 + local.get $1 + local.tee $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $0 - i32.const -1 local.set $1 + i32.const -1 + 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 $9 + local.tee $16 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 - local.get $0 - local.get $9 + local.get $1 + local.get $16 i32.add - local.get $9 + local.get $16 i32.const 1 i32.sub - local.get $0 - local.get $0 - local.get $9 + local.get $1 + local.get $1 + local.get $16 i32.ge_s select - local.get $0 + local.get $1 i32.const 0 i32.lt_s select - local.set $0 + local.set $1 loop $while-continue|06 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 - local.tee $1 + local.get $1 + local.tee $2 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 7 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf5 - local.get $1 + local.get $2 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|06 end end i32.const -1 - local.set $1 + local.set $2 end - local.get $1 + local.get $2 i32.const -1 i32.ne if @@ -6114,53 +5968,53 @@ unreachable end block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz if i32.const -1 - local.set $0 + local.set $1 br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 end - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 3 - local.get $0 + local.get $1 i32.const 3 i32.le_u select - local.set $0 + local.set $1 loop $while-continue|023 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf7 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|023 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -6172,53 +6026,53 @@ unreachable end block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz if i32.const -1 - local.set $0 + local.set $1 br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 end - local.get $0 + local.get $1 i32.const 1 i32.sub i32.const 2 - local.get $0 + local.get $1 i32.const 2 i32.le_u select - local.set $0 + local.set $1 loop $while-continue|025 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf24 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|025 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1216 @@ -6228,48 +6082,48 @@ unreachable end block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $0 + local.tee $1 i32.eqz if i32.const -1 - local.set $0 + local.set $1 br $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 end - local.get $0 + local.get $1 i32.const 2 i32.sub - local.set $0 + local.set $1 loop $while-continue|027 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf26 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|027 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 if i32.const 0 i32.const 1216 @@ -6279,46 +6133,46 @@ unreachable end i32.const -1 - local.set $0 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $2 i32.eqz br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - local.get $1 + local.get $2 i32.const 1 i32.sub - local.set $0 + local.set $1 loop $while-continue|029 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 2 i32.eq br_if $__inlined_func$~lib/staticarray/StaticArray#lastIndexOf28 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $while-continue|029 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 3 i32.ne if @@ -6333,26 +6187,26 @@ i32.const 12 i32.const 8 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 2736 i32.const 12 call $~lib/memory/memory.copy - local.get $0 + local.get $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 2800 i32.store offset=20 - local.get $0 + local.get $1 i32.const 2800 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 2832 i32.store offset=12 - local.get $2 + local.get $0 i32.const 2832 call $~lib/string/String.__eq i32.eqz @@ -6367,17 +6221,17 @@ global.get $~lib/memory/__stack_pointer i32.const 2768 i32.store offset=20 - local.get $0 + local.get $1 i32.const 2768 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 2880 i32.store offset=12 - local.get $2 + local.get $0 i32.const 2880 call $~lib/string/String.__eq i32.eqz @@ -6392,17 +6246,17 @@ global.get $~lib/memory/__stack_pointer i32.const 2928 i32.store offset=20 - local.get $0 + local.get $1 i32.const 2928 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 2960 i32.store offset=12 - local.get $2 + local.get $0 i32.const 2960 call $~lib/string/String.__eq i32.eqz @@ -6417,17 +6271,17 @@ global.get $~lib/memory/__stack_pointer i32.const 3008 i32.store offset=20 - local.get $0 + local.get $1 i32.const 3008 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 3040 i32.store offset=12 - local.get $2 + local.get $0 i32.const 3040 call $~lib/string/String.__eq i32.eqz @@ -6442,12 +6296,12 @@ global.get $~lib/memory/__stack_pointer i32.const 2800 i32.store offset=20 - local.get $0 + local.get $1 i32.const 2800 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $2 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer i32.const 4 @@ -6458,25 +6312,25 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $2 i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 2800 i32.store - local.get $0 + local.get $1 i32.const 2800 call $~lib/staticarray/StaticArray<~lib/string/String>#join - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=12 - local.get $2 local.get $0 + local.get $1 call $~lib/string/String.__eq i32.eqz if @@ -6491,45 +6345,45 @@ i32.const 8 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 3104 i32.const 8 call $~lib/memory/memory.copy - local.get $0 + local.get $1 i32.store offset=16 i32.const 1 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 - local.get $1 + local.tee $0 + local.get $0 i32.const 1 i32.gt_u select - local.set $2 + local.set $16 loop $for-loop|024 - local.get $1 - local.get $2 + local.get $0 + local.get $16 i32.gt_s if - local.get $2 + local.get $16 i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add i32.const 1 i32.store - local.get $2 + local.get $16 i32.const 1 i32.add - local.set $2 + local.set $16 br $for-loop|024 end end - local.get $0 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray#__get if @@ -6540,7 +6394,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6557,52 +6411,52 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 3136 i32.const 12 call $~lib/memory/memory.copy - local.get $0 + local.get $1 i32.store offset=16 i32.const 0 - local.set $2 - local.get $0 + local.set $16 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $1 + local.tee $0 i32.const 1 i32.gt_u if - local.get $1 + local.get $0 i32.const 1 i32.shr_u - local.set $9 - local.get $1 + local.set $2 + local.get $0 i32.const 1 i32.sub - local.set $1 + local.set $0 loop $while-continue|026 local.get $2 - local.get $9 - i32.lt_u + local.get $16 + i32.gt_u if - local.get $2 + local.get $16 i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add local.tee $3 i32.load local.set $4 local.get $3 - local.get $1 - local.get $2 + local.get $0 + local.get $16 i32.sub i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add local.tee $3 i32.load @@ -6610,15 +6464,15 @@ local.get $3 local.get $4 i32.store - local.get $2 + local.get $16 i32.const 1 i32.add - local.set $2 + local.set $16 br $while-continue|026 end end end - local.get $0 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6631,7 +6485,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -6644,7 +6498,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -6661,56 +6515,56 @@ i32.const 20 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 3168 i32.const 20 call $~lib/memory/memory.copy - local.get $0 + local.get $1 i32.store offset=16 i32.const 0 - local.get $0 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.tee $2 - local.get $2 + local.tee $0 + local.get $0 select - local.set $1 - local.get $2 + local.set $2 + local.get $0 i32.const 3 - local.get $2 - local.get $2 + local.get $0 + local.get $0 i32.const 3 i32.gt_u select local.tee $3 i32.sub - local.set $9 - local.get $1 + local.set $16 + local.get $2 i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add local.get $3 i32.const 2 i32.shl - local.get $0 + local.get $1 i32.add - local.get $9 + local.get $16 + local.get $0 local.get $2 - local.get $1 i32.sub - local.tee $2 - local.get $2 - local.get $9 + 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 $0 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -6723,7 +6577,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -6736,7 +6590,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 3 @@ -6749,7 +6603,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -6762,7 +6616,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -6779,19 +6633,19 @@ i32.const 12 i32.const 3 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.const 3216 i32.const 12 call $~lib/memory/memory.copy - local.get $2 + local.get $1 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.tee $9 + local.tee $2 i32.const 3248 i32.store offset=12 i32.const 0 - local.set $0 - local.get $9 + local.set $16 + local.get $2 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6800,11 +6654,11 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - local.tee $1 + local.tee $0 i32.const 0 i32.store + local.get $0 local.get $1 - local.get $2 i32.const 20 i32.sub i32.load offset=16 @@ -6814,18 +6668,18 @@ i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $1 + local.tee $0 i32.store - local.get $1 + local.get $0 i32.load offset=4 local.set $4 loop $for-loop|027 - local.get $0 local.get $3 - i32.lt_s + local.get $16 + i32.gt_s if - local.get $2 - local.get $0 + local.get $1 + local.get $16 i32.const 2 i32.shl local.tee $5 @@ -6838,16 +6692,16 @@ local.get $5 i32.add local.get $6 - local.get $0 - local.get $2 + local.get $16 + local.get $1 i32.const 3248 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) i32.store - local.get $0 + local.get $16 i32.const 1 i32.add - local.set $0 + local.set $16 br $for-loop|027 end end @@ -6855,17 +6709,14 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 - local.get $1 + local.get $2 + local.get $0 i32.store offset=4 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/array/Array#__set - local.get $1 + local.get $0 i32.const 0 call $~lib/array/Array#__get - i32.eqz + i32.const 2 + i32.ne if i32.const 0 i32.const 1216 @@ -6874,14 +6725,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 1 - i32.const 3 - call $~lib/array/Array#__set - local.get $1 + local.get $0 i32.const 1 call $~lib/array/Array#__get - i32.eqz + i32.const 3 + i32.ne if i32.const 0 i32.const 1216 @@ -6890,14 +6738,11 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 2 - i32.const 4 - call $~lib/array/Array#__set - local.get $1 + local.get $0 i32.const 2 call $~lib/array/Array#__get - i32.eqz + i32.const 4 + i32.ne if i32.const 0 i32.const 1216 @@ -6910,36 +6755,36 @@ i32.const 3280 i32.store offset=12 i32.const 0 - local.set $0 - local.get $2 + local.set $16 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $1 + local.set $0 loop $for-loop|030 local.get $0 - local.get $1 - i32.lt_s + local.get $16 + i32.gt_s if - local.get $0 + local.get $16 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load i32.const 3 global.set $~argumentsLength - local.get $0 - local.get $2 + local.get $16 + local.get $1 i32.const 3280 i32.load call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $0 + local.get $16 i32.const 1 i32.add - local.set $0 + local.set $16 br $for-loop|030 end end @@ -6955,12 +6800,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.tee $9 + local.tee $0 + local.get $0 i32.const 3312 i32.store offset=12 i32.const 0 - local.set $1 - local.get $9 + local.set $16 + local.get $0 i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer @@ -6977,60 +6823,166 @@ i32.const 6 i32.const 0 call $~lib/rt/__newArray - local.tee $0 + local.tee $3 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $4 + local.set $12 loop $for-loop|028 - local.get $1 - local.get $4 - i32.lt_s + local.get $12 + local.get $16 + i32.gt_s if - local.get $1 + local.get $16 i32.const 2 i32.shl - local.get $2 + local.get $1 i32.add i32.load - local.set $3 + local.set $9 i32.const 3 global.set $~argumentsLength - local.get $3 + local.get $9 + local.get $16 local.get $1 - local.get $2 i32.const 3312 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) if - local.get $0 - local.get $0 + local.get $3 i32.load offset=12 - local.tee $5 + local.tee $13 i32.const 1 i32.add - local.tee $6 - call $~lib/array/ensureCapacity - local.get $0 + 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 $5 + local.get $13 i32.const 2 i32.shl i32.add - local.get $3 + local.get $9 i32.store - local.get $0 - local.get $6 + local.get $3 + local.get $14 i32.store offset=12 end - local.get $1 + local.get $16 i32.const 1 i32.add - local.set $1 + local.set $16 br $for-loop|028 end end @@ -7038,10 +6990,9 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 - local.get $0 + local.get $3 i32.store offset=24 - local.get $0 + local.get $3 i32.load offset=12 i32.const 2 i32.ne @@ -7053,14 +7004,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 0 - i32.const 2 - call $~lib/array/Array#__set - local.get $0 + local.get $3 i32.const 0 call $~lib/array/Array#__get - i32.eqz + i32.const 2 + i32.ne if i32.const 0 i32.const 1216 @@ -7069,14 +7017,11 @@ call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const 3 - call $~lib/array/Array#__set - local.get $0 + local.get $3 i32.const 1 call $~lib/array/Array#__get - i32.eqz + i32.const 3 + i32.ne if i32.const 0 i32.const 1216 @@ -7089,46 +7034,47 @@ i32.const 3344 i32.store offset=12 i32.const 0 - local.set $0 + local.set $16 i32.const 0 - local.set $1 - local.get $2 + 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 $9 + local.set $1 loop $for-loop|033 - local.get $0 - local.get $9 - i32.lt_s + local.get $1 + local.get $16 + i32.gt_s if - local.get $0 + local.get $16 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load local.set $3 i32.const 4 global.set $~argumentsLength - local.get $1 + local.get $2 local.get $3 + local.get $16 local.get $0 - local.get $2 i32.const 3344 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 + local.set $2 + local.get $16 i32.const 1 i32.add - local.set $0 + local.set $16 br $for-loop|033 end end - local.get $1 + local.get $2 i32.const 6 i32.ne if @@ -7143,8 +7089,8 @@ i32.const 3376 i32.store offset=12 i32.const 0 - local.set $1 - local.get $2 + local.set $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -7152,37 +7098,37 @@ i32.shr_u i32.const 1 i32.sub - local.set $0 + local.set $16 loop $for-loop|035 - local.get $0 + local.get $16 i32.const 0 i32.ge_s if - local.get $0 + local.get $16 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load - local.set $9 + local.set $1 i32.const 4 global.set $~argumentsLength + local.get $2 local.get $1 - local.get $9 + local.get $16 local.get $0 - local.get $2 i32.const 3376 i32.load call_indirect $0 (type $i32_i32_i32_i32_=>_i32) - local.set $1 - local.get $0 + local.set $2 + local.get $16 i32.const 1 i32.sub - local.set $0 + local.set $16 br $for-loop|035 end end - local.get $1 + local.get $2 i32.const 6 i32.ne if @@ -7198,23 +7144,23 @@ i32.store offset=12 block $__inlined_func$~lib/staticarray/StaticArray#some (result i32) i32.const 0 - local.set $1 - local.get $2 + local.set $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $9 + local.set $16 loop $for-loop|038 - local.get $1 - local.get $9 + local.get $2 + local.get $16 i32.lt_s if - local.get $1 + local.get $2 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load local.set $3 @@ -7222,17 +7168,17 @@ global.set $~argumentsLength i32.const 1 local.get $3 - local.get $1 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 $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|038 end end @@ -7252,23 +7198,23 @@ i32.store offset=12 block $__inlined_func$~lib/staticarray/StaticArray#some39 (result i32) i32.const 0 - local.set $1 - local.get $2 + local.set $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $9 + local.set $16 loop $for-loop|040 - local.get $1 - local.get $9 + local.get $2 + local.get $16 i32.lt_s if - local.get $1 + local.get $2 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load local.set $3 @@ -7276,17 +7222,17 @@ global.set $~argumentsLength i32.const 1 local.get $3 - local.get $1 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 $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|040 end end @@ -7305,23 +7251,23 @@ i32.store offset=12 block $__inlined_func$~lib/staticarray/StaticArray#every (result i32) i32.const 0 - local.set $1 - local.get $2 + local.set $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $9 + local.set $16 loop $for-loop|041 - local.get $1 - local.get $9 + local.get $2 + local.get $16 i32.lt_s if - local.get $1 + local.get $2 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load local.set $3 @@ -7329,18 +7275,18 @@ global.set $~argumentsLength i32.const 0 local.get $3 - local.get $1 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 $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|041 end end @@ -7360,23 +7306,23 @@ i32.store offset=12 block $__inlined_func$~lib/staticarray/StaticArray#every42 (result i32) i32.const 0 - local.set $1 - local.get $2 + local.set $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $9 + local.set $16 loop $for-loop|043 - local.get $1 - local.get $9 + local.get $2 + local.get $16 i32.lt_s if - local.get $1 + local.get $2 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load local.set $3 @@ -7384,18 +7330,18 @@ global.set $~argumentsLength i32.const 0 local.get $3 - local.get $1 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 $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|043 end end @@ -7413,45 +7359,45 @@ i32.const 3536 i32.store offset=12 i32.const 0 - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $1 + local.set $2 block $__inlined_func$~lib/staticarray/StaticArray#findIndex loop $for-loop|044 - local.get $0 local.get $1 + local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $1 local.get $0 - local.get $2 i32.const 3536 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|044 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -7466,45 +7412,45 @@ i32.const 3568 i32.store offset=12 i32.const 0 - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.set $1 + local.set $2 block $__inlined_func$~lib/staticarray/StaticArray#findIndex45 loop $for-loop|046 - local.get $0 local.get $1 + local.get $2 i32.lt_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $1 local.get $0 - local.get $2 i32.const 3568 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#findIndex45 - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|046 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -7518,7 +7464,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3600 i32.store offset=12 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -7526,38 +7472,38 @@ i32.shr_u i32.const 1 i32.sub - local.set $0 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex loop $for-loop|047 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $1 local.get $0 - local.get $2 i32.const 3600 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $for-loop|047 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const 1 i32.ne if @@ -7571,7 +7517,7 @@ global.get $~lib/memory/__stack_pointer i32.const 3632 i32.store offset=12 - local.get $2 + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -7579,38 +7525,38 @@ i32.shr_u i32.const 1 i32.sub - local.set $0 + local.set $1 block $__inlined_func$~lib/staticarray/StaticArray#findLastIndex48 loop $for-loop|049 - local.get $0 + local.get $1 i32.const 0 i32.ge_s if - local.get $0 + local.get $1 i32.const 2 i32.shl - local.get $2 + local.get $0 i32.add i32.load i32.const 3 global.set $~argumentsLength + local.get $1 local.get $0 - local.get $2 i32.const 3632 i32.load call_indirect $0 (type $i32_i32_i32_=>_i32) br_if $__inlined_func$~lib/staticarray/StaticArray#findLastIndex48 - local.get $0 + local.get $1 i32.const 1 i32.sub - local.set $0 + local.set $1 br $for-loop|049 end end i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + local.get $1 i32.const -1 i32.ne if @@ -7625,16 +7571,16 @@ i32.const 16 i32.const 3 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 3664 i32.const 16 call $~lib/memory/memory.copy - local.get $0 + local.get $1 i32.store offset=28 i32.const 0 global.set $~argumentsLength i32.const 0 - local.set $2 + local.set $16 global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7655,25 +7601,25 @@ unreachable end i32.const 3712 - local.set $2 + local.set $16 global.get $~lib/memory/__stack_pointer i32.const 3712 i32.store end - local.get $0 - local.get $0 + local.get $1 + local.get $1 i32.const 20 i32.sub i32.load offset=16 i32.const 2 i32.shr_u - local.get $2 + 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 $0 + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray#__get if @@ -7684,7 +7630,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 1 @@ -7697,7 +7643,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -7710,7 +7656,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 3 call $~lib/staticarray/StaticArray#__get i32.const 3 diff --git a/tests/compiler/std/staticarray.ts b/tests/compiler/std/staticarray.ts index 9a77f59619..0a8919d6d6 100644 --- a/tests/compiler/std/staticarray.ts +++ b/tests/compiler/std/staticarray.ts @@ -200,9 +200,9 @@ let maxVal = 0; // map const incNums = numbers.map(x => x + 1); - assert(incNums[0] = 2); - assert(incNums[1] = 3); - assert(incNums[2] = 4); + assert(incNums[0] == 2); + assert(incNums[1] == 3); + assert(incNums[2] == 4); // forEach numbers.forEach(x => { maxVal = max(maxVal, x); } ); @@ -211,8 +211,8 @@ let maxVal = 0; // filter const filtered = numbers.filter(x => x >= 2); assert(filtered.length == 2); - assert(filtered[0] = 2); - assert(filtered[1] = 3); + assert(filtered[0] == 2); + assert(filtered[1] == 3); // reduce const sum1 = numbers.reduce((x, y) => x + y, 0); diff --git a/tests/compiler/std/staticarray.untouched.wat b/tests/compiler/std/staticarray.untouched.wat index 57a7e3d861..d60707ed56 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.untouched.wat @@ -4689,6 +4689,61 @@ 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 + local.get $4 + i32.gt_s + 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 + 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 + i32.load + call_indirect $0 (type $i32_i32_i32_=>_none) + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + ) + (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) @@ -4834,108 +4889,6 @@ local.get $1 i32.store offset=12 ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - i32.const 0 - drop - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 64 - i32.const 752 - i32.const 123 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.const 1 - call $~lib/array/ensureCapacity - local.get $0 - local.get $1 - i32.const 1 - i32.add - call $~lib/array/Array#set:length_ - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $start:std/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 - local.get $4 - i32.gt_s - 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 - 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 - i32.load - call_indirect $0 (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - ) - (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/array/Array#push (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -8370,14 +8323,10 @@ local.tee $0 i32.store offset=4 local.get $0 - local.tee $2 i32.const 0 - local.tee $1 - i32.const 2 - call $~lib/array/Array#__set - local.get $2 - local.get $1 call $~lib/array/Array#__get + i32.const 2 + i32.eq i32.eqz if i32.const 0 @@ -8388,14 +8337,10 @@ unreachable end local.get $0 - local.tee $2 i32.const 1 - local.tee $1 - i32.const 3 - call $~lib/array/Array#__set - local.get $2 - local.get $1 call $~lib/array/Array#__get + i32.const 3 + i32.eq i32.eqz if i32.const 0 @@ -8406,14 +8351,10 @@ unreachable end local.get $0 - local.tee $2 i32.const 2 - local.tee $1 - i32.const 4 - call $~lib/array/Array#__set - local.get $2 - local.get $1 call $~lib/array/Array#__get + i32.const 4 + i32.eq i32.eqz if i32.const 0 @@ -8468,14 +8409,10 @@ unreachable end local.get $2 - local.tee $1 i32.const 0 - local.tee $4 - i32.const 2 - call $~lib/array/Array#__set - local.get $1 - local.get $4 call $~lib/array/Array#__get + i32.const 2 + i32.eq i32.eqz if i32.const 0 @@ -8486,14 +8423,10 @@ unreachable end local.get $2 - local.tee $1 i32.const 1 - local.tee $4 - i32.const 3 - call $~lib/array/Array#__set - local.get $1 - local.get $4 call $~lib/array/Array#__get + i32.const 3 + i32.eq i32.eqz if i32.const 0