diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 43b085d82f..c10cf76a1e 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1774,7 +1774,9 @@ declare class Array { declare class StaticArray { [key: number]: T; static fromArray(source: Array): StaticArray; + /** @deprecated */ static concat(source: StaticArray, other: StaticArray): StaticArray; + /** @deprecated */ static slice(source: StaticArray, start?: i32, end?: i32): StaticArray; readonly length: i32; constructor(length?: i32); @@ -1794,7 +1796,9 @@ declare class StaticArray { every(callbackfn: (value: T, index: i32, array: StaticArray) => bool): bool; some(callbackfn: (value: T, index: i32, array: StaticArray) => bool): bool; concat(items: Array): Array; + concat>(other: U): U; slice(from?: i32, to?: i32): Array; + slice>(from?: i32, to?: i32): U; sort(comparator?: (a: T, b: T) => i32): this; join(separator?: string): string; reverse(): this; diff --git a/std/assembly/staticarray.ts b/std/assembly/staticarray.ts index 6820cbf726..36c3ca5325 100644 --- a/std/assembly/staticarray.ts +++ b/std/assembly/staticarray.ts @@ -37,54 +37,14 @@ export class StaticArray { return out; } + /** @deprecated Please use source.concat> instead. */ static concat(source: StaticArray, other: StaticArray): StaticArray { - var sourceLen = source.length; - var otherLen = other.length; - var outLen = sourceLen + otherLen; - if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); - var out = changetype>(__new(outLen << alignof(), idof>())); - var outStart = changetype(out); - var sourceSize = sourceLen << alignof(); - if (isManaged()) { - for (let offset: usize = 0; offset < sourceSize; offset += sizeof()) { - let ref = load(changetype(source) + offset); - store(outStart + offset, ref); - __link(changetype(out), ref, true); - } - outStart += sourceSize; - let otherSize = otherLen << alignof(); - for (let offset: usize = 0; offset < otherSize; offset += sizeof()) { - let ref = load(changetype(other) + offset); - store(outStart + offset, ref); - __link(changetype(out), ref, true); - } - } else { - memory.copy(outStart, changetype(source), sourceSize); - memory.copy(outStart + sourceSize, changetype(other), otherLen << alignof()); - } - return out; + return source.concat>(other); } + /** @deprecated Please use source.slice> instead. */ static slice(source: StaticArray, start: i32 = 0, end: i32 = i32.MAX_VALUE): StaticArray { - var length = source.length; - start = start < 0 ? max(start + length, 0) : min(start, length); - end = end < 0 ? max(end + length, 0) : min(end , length); - length = max(end - start, 0); - var sliceSize = length << alignof(); - var slice = changetype>(__new(sliceSize, idof>())); - var sourcePtr = changetype(source) + (start << alignof()); - if (isManaged()) { - let off: usize = 0; - while (off < sliceSize) { - let ref = load(sourcePtr + off); - store(changetype(slice) + off, ref); - __link(changetype(slice), ref, true); - off += sizeof(); - } - } else { - memory.copy(changetype(slice), sourcePtr, sliceSize); - } - return slice; + return source.slice>(start, end); } constructor(length: i32) { @@ -210,57 +170,112 @@ export class StaticArray { return -1; } - concat(other: Array): Array { - var thisLen = this.length; - var otherLen = other.length; - var outLen = thisLen + otherLen; - if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); - var out = changetype>(__newArray(outLen, alignof(), idof>())); - var outStart = out.dataStart; - var thisSize = thisLen << alignof(); - if (isManaged()) { + concat = Array>(other: U): U { + let sourceLen = this.length; + let otherLen = other.length; + let outLen = sourceLen + otherLen; + if (outLen > BLOCK_MAXSIZE >>> alignof()) { + throw new Error(E_INVALIDLENGTH); + } + let sourceSize = sourceLen << alignof(); + let out!: U; + + if (out instanceof Array) { + out = changetype(__newArray(outLen, alignof(), idof>())); + let outStart = changetype>(out).dataStart; + let otherStart = changetype>(other).dataStart; let thisStart = changetype(this); - for (let offset: usize = 0; offset < thisSize; offset += sizeof()) { - let ref = load(thisStart + offset); - store(outStart + offset, ref); - __link(changetype(out), ref, true); + + if (isManaged()) { + for (let offset: usize = 0; offset < sourceSize; offset += sizeof()) { + let ref = load(thisStart + offset); + store(outStart + offset, ref); + __link(changetype(out), ref, true); + } + outStart += sourceSize; + let otherSize = otherLen << alignof(); + for (let offset: usize = 0; offset < otherSize; offset += sizeof()) { + let ref = load(otherStart + offset); + store(outStart + offset, ref); + __link(changetype(out), ref, true); + } + } else { + memory.copy(outStart, thisStart, sourceSize); + memory.copy(outStart + sourceSize, otherStart, otherLen << alignof()); } - outStart += thisSize; - let otherStart = other.dataStart; - let otherSize = otherLen << alignof(); - for (let offset: usize = 0; offset < otherSize; offset += sizeof()) { - let ref = load(otherStart + offset); - store(outStart + offset, ref); - __link(changetype(out), ref, true); + } else if (out instanceof StaticArray) { + out = changetype(__new(outLen << alignof(), idof>())); + let outStart = changetype(out); + let otherStart = changetype(other); + let thisStart = changetype(this); + + if (isManaged()) { + for (let offset: usize = 0; offset < sourceSize; offset += sizeof()) { + let ref = load(thisStart + offset); + store(outStart + offset, ref); + __link(outStart, ref, true); + } + outStart += sourceSize; + let otherSize = otherLen << alignof(); + for (let offset: usize = 0; offset < otherSize; offset += sizeof()) { + let ref = load(otherStart + offset); + store(outStart + offset, ref); + __link(outStart, ref, true); + } + } else { + memory.copy(outStart, thisStart, sourceSize); + memory.copy(outStart + sourceSize, otherStart, otherLen << alignof()); } } else { - memory.copy(outStart, changetype(this), thisSize); - memory.copy(outStart + thisSize, other.dataStart, otherLen << alignof()); + ERROR("Only Array and StaticArray accept for 'U' parameter"); } return out; } - slice(start: i32 = 0, end: i32 = i32.MAX_VALUE): Array { + slice = Array>(start: i32 = 0, end: i32 = i32.MAX_VALUE): U { var length = this.length; start = start < 0 ? max(start + length, 0) : min(start, length); - end = end < 0 ? max(end + length, 0) : min(end , length); + end = end < 0 ? max(end + length, 0) : min(end, length); length = max(end - start, 0); - var slice = changetype>(__newArray(length, alignof(), idof>())); - var sliceBase = slice.dataStart; - var thisBase = changetype(this) + (start << alignof()); - if (isManaged()) { - let off = 0; - let end = length << alignof(); - while (off < end) { - let ref = load(thisBase + off); - store(sliceBase + off, ref); - __link(changetype(slice), ref, true); - off += sizeof(); + + var sourceStart = changetype(this) + (start << alignof()); + var size = length << alignof(); + let out!: U; + + if (out instanceof Array) { + // return Array + out = changetype(__newArray(length, alignof(), idof>())); + let outStart = changetype>(out).dataStart; + if (isManaged()) { + let off: usize = 0; + while (off < size) { + let ref = load(sourceStart + off); + store(outStart + off, ref); + __link(changetype(out), ref, true); + off += sizeof(); + } + } else { + memory.copy(outStart, sourceStart, size); + } + } else if (out instanceof StaticArray) { + // return StaticArray + out = changetype(__new(size, idof>())); + let outStart = changetype(out); + if (isManaged()) { + let off: usize = 0; + while (off < size) { + let ref = load(sourceStart + off); + store(outStart + off, ref); + __link(outStart, ref, true); + off += sizeof(); + } + } else { + memory.copy(outStart, sourceStart, size); } } else { - memory.copy(sliceBase, thisBase, length << alignof()); + ERROR("Only Array and StaticArray accept for 'U' parameter"); } - return slice; + return out; } findIndex(fn: (value: T, index: i32, array: StaticArray) => bool): i32 { diff --git a/tests/compiler/bindings/esm.debug.wat b/tests/compiler/bindings/esm.debug.wat index 56988bda2a..7a2a0db5f6 100644 --- a/tests/compiler/bindings/esm.debug.wat +++ b/tests/compiler/bindings/esm.debug.wat @@ -2425,7 +2425,7 @@ if i32.const 528 i32.const 832 - i32.const 118 + i32.const 78 i32.const 41 call $~lib/builtins/abort unreachable @@ -2460,7 +2460,7 @@ if i32.const 528 i32.const 832 - i32.const 133 + i32.const 93 i32.const 41 call $~lib/builtins/abort unreachable @@ -3661,7 +3661,7 @@ if i32.const 224 i32.const 832 - i32.const 91 + i32.const 51 i32.const 60 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/bindings/esm.release.wat b/tests/compiler/bindings/esm.release.wat index 26b9adac80..966856ec7e 100644 --- a/tests/compiler/bindings/esm.release.wat +++ b/tests/compiler/bindings/esm.release.wat @@ -1727,7 +1727,7 @@ if i32.const 1552 i32.const 1856 - i32.const 118 + i32.const 78 i32.const 41 call $~lib/builtins/abort unreachable @@ -1751,7 +1751,7 @@ if i32.const 1552 i32.const 1856 - i32.const 133 + i32.const 93 i32.const 41 call $~lib/builtins/abort unreachable @@ -2832,7 +2832,7 @@ if i32.const 1248 i32.const 1856 - i32.const 91 + i32.const 51 i32.const 60 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/bindings/raw.debug.wat b/tests/compiler/bindings/raw.debug.wat index 7c23f4afbb..e06762f954 100644 --- a/tests/compiler/bindings/raw.debug.wat +++ b/tests/compiler/bindings/raw.debug.wat @@ -2428,7 +2428,7 @@ if i32.const 528 i32.const 832 - i32.const 118 + i32.const 78 i32.const 41 call $~lib/builtins/abort unreachable @@ -2463,7 +2463,7 @@ if i32.const 528 i32.const 832 - i32.const 133 + i32.const 93 i32.const 41 call $~lib/builtins/abort unreachable @@ -3664,7 +3664,7 @@ if i32.const 224 i32.const 832 - i32.const 91 + i32.const 51 i32.const 60 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/bindings/raw.release.wat b/tests/compiler/bindings/raw.release.wat index 4dbc23bff9..bd048982a0 100644 --- a/tests/compiler/bindings/raw.release.wat +++ b/tests/compiler/bindings/raw.release.wat @@ -1727,7 +1727,7 @@ if i32.const 1552 i32.const 1856 - i32.const 118 + i32.const 78 i32.const 41 call $~lib/builtins/abort unreachable @@ -1751,7 +1751,7 @@ if i32.const 1552 i32.const 1856 - i32.const 133 + i32.const 93 i32.const 41 call $~lib/builtins/abort unreachable @@ -2832,7 +2832,7 @@ if i32.const 1248 i32.const 1856 - i32.const 91 + i32.const 51 i32.const 60 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/staticarray.debug.wat b/tests/compiler/std/staticarray.debug.wat index a1d25ce99a..494edb2601 100644 --- a/tests/compiler/std/staticarray.debug.wat +++ b/tests/compiler/std/staticarray.debug.wat @@ -40,9 +40,9 @@ (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 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)) + (global $~lib/memory/__data_end i32 (i32.const 2836)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19220)) + (global $~lib/memory/__heap_base i32 (i32.const 19220)) (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") @@ -69,21 +69,21 @@ (data (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00c\00a\00m\00e\00l\00\00\00") (data (i32.const 1004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00d\00u\00c\00k\00\00\00\00\00") (data (i32.const 1036) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00e\00l\00e\00p\00h\00a\00n\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1084) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00\a0\03\00\00\c0\03\00\00\e0\03\00\00\00\04\00\00 \04\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1084) ",\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\14\00\00\00\a0\03\00\00\c0\03\00\00\e0\03\00\00\00\04\00\00 \04\00\00\00\00\00\00\00\00\00\00") (data (i32.const 1132) "|\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1260) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00\a0\03\00\00\c0\03\00\00\e0\03\00\00\00\04\00\00 \04\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1260) ",\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\14\00\00\00\a0\03\00\00\c0\03\00\00\e0\03\00\00\00\04\00\00 \04\00\00\00\00\00\00\00\00\00\00") (data (i32.const 1308) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 1340) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00f\00o\00o\00\00\00\00\00\00\00") (data (i32.const 1372) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00P\05\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1404) ",\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\14\00\00\00\a0\03\00\00\c0\03\00\00\e0\03\00\00\00\04\00\00 \04\00\00\00\00\00\00\00\00\00\00") - (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 1404) ",\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\14\00\00\00\a0\03\00\00\c0\03\00\00\e0\03\00\00\00\04\00\00 \04\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1452) "\1c\00\00\00\00\00\00\00\00\00\00\00\t\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\n\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) ",\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 1692) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\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") @@ -96,22 +96,22 @@ (data (i32.const 2092) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") (data (i32.const 2124) ",\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 2172) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 2204) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2236) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2268) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2300) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2332) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2204) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\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\0c\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\0d\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\0e\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\0e\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\0d\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\0d\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\0d\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\0d\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\0d\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\0d\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\0d\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\0d\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") + (data (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2704) "\10\00\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\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 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)) @@ -133,7 +133,7 @@ if i32.const 64 i32.const 128 - i32.const 118 + i32.const 78 i32.const 41 call $~lib/builtins/abort unreachable @@ -168,7 +168,7 @@ if i32.const 64 i32.const 128 - i32.const 133 + i32.const 93 i32.const 41 call $~lib/builtins/abort unreachable @@ -4901,19 +4901,6 @@ 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) @@ -5075,46 +5062,40 @@ 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 + 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/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 - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit return end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit 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 + call $~lib/staticarray/StaticArray~visit return end local.get $0 local.get $1 - call $~lib/array/Array~visit + call $~lib/array/Array~visit return end local.get $0 @@ -5778,7 +5759,7 @@ local.get $5 i32.store offset=12 local.get $5 - call $~lib/staticarray/StaticArray.concat + call $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> local.tee $1 i32.store offset=8 local.get $1 @@ -5805,7 +5786,7 @@ local.get $5 i32.store offset=12 local.get $5 - call $~lib/staticarray/StaticArray.concat + call $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> local.tee $1 i32.store offset=8 local.get $1 @@ -5824,7 +5805,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 20 - i32.const 8 + i32.const 7 i32.const 1104 call $~lib/rt/__newBuffer local.tee $1 @@ -5833,7 +5814,7 @@ local.get $1 i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -5897,7 +5878,7 @@ local.get $1 i32.const 1 i32.const 3 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -5965,7 +5946,7 @@ local.get $1 i32.const 1 global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -5988,7 +5969,7 @@ local.get $1 i32.const 0 i32.const 50 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -6009,7 +5990,7 @@ local.get $1 i32.const 100 global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -6029,7 +6010,7 @@ local.get $1 i32.const -1 global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -6073,7 +6054,7 @@ local.get $1 i32.const -2 i32.const -2 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -6093,7 +6074,7 @@ local.get $1 i32.const 2 i32.const -2 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -6135,7 +6116,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 20 - i32.const 8 + i32.const 7 i32.const 1280 call $~lib/rt/__newBuffer local.tee $0 @@ -6144,7 +6125,7 @@ local.get $0 i32.const 0 i32.const 2 - i32.const 9 + i32.const 8 i32.const 1328 call $~lib/rt/__newArray local.set $5 @@ -6152,7 +6133,7 @@ local.get $5 i32.store offset=12 local.get $5 - call $~lib/staticarray/StaticArray<~lib/string/String>#concat + call $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> local.tee $3 i32.store offset=16 local.get $3 @@ -6164,7 +6145,7 @@ if i32.const 0 i32.const 192 - i32.const 115 + i32.const 117 i32.const 3 call $~lib/builtins/abort unreachable @@ -6175,7 +6156,7 @@ local.get $0 i32.const 1 i32.const 2 - i32.const 9 + i32.const 8 i32.const 1392 call $~lib/rt/__newArray local.set $5 @@ -6183,7 +6164,7 @@ local.get $5 i32.store offset=12 local.get $5 - call $~lib/staticarray/StaticArray<~lib/string/String>#concat + call $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> local.tee $3 i32.store offset=16 local.get $3 @@ -6197,7 +6178,7 @@ if i32.const 0 i32.const 192 - i32.const 119 + i32.const 121 i32.const 3 call $~lib/builtins/abort unreachable @@ -6206,7 +6187,7 @@ drop global.get $~lib/memory/__stack_pointer i32.const 20 - i32.const 8 + i32.const 7 i32.const 1424 call $~lib/rt/__newBuffer local.tee $3 @@ -6226,7 +6207,7 @@ if i32.const 0 i32.const 192 - i32.const 126 + i32.const 128 i32.const 3 call $~lib/builtins/abort unreachable @@ -6246,7 +6227,7 @@ if i32.const 0 i32.const 192 - i32.const 127 + i32.const 129 i32.const 3 call $~lib/builtins/abort unreachable @@ -6266,7 +6247,7 @@ if i32.const 0 i32.const 192 - i32.const 128 + i32.const 130 i32.const 3 call $~lib/builtins/abort unreachable @@ -6286,13 +6267,13 @@ if i32.const 0 i32.const 192 - i32.const 129 + i32.const 131 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 8 - i32.const 10 + i32.const 9 i32.const 1472 call $~lib/rt/__newBuffer local.set $5 @@ -6309,13 +6290,13 @@ if i32.const 0 i32.const 192 - i32.const 131 + i32.const 133 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 4 - i32.const 11 + i32.const 10 i32.const 1504 call $~lib/rt/__newBuffer local.set $5 @@ -6332,7 +6313,7 @@ if i32.const 0 i32.const 192 - i32.const 132 + i32.const 134 i32.const 3 call $~lib/builtins/abort unreachable @@ -6354,7 +6335,7 @@ if i32.const 0 i32.const 192 - i32.const 138 + i32.const 140 i32.const 3 call $~lib/builtins/abort unreachable @@ -6369,7 +6350,7 @@ if i32.const 0 i32.const 192 - i32.const 139 + i32.const 141 i32.const 3 call $~lib/builtins/abort unreachable @@ -6384,7 +6365,7 @@ if i32.const 0 i32.const 192 - i32.const 140 + i32.const 142 i32.const 3 call $~lib/builtins/abort unreachable @@ -6399,7 +6380,7 @@ if i32.const 0 i32.const 192 - i32.const 141 + i32.const 143 i32.const 3 call $~lib/builtins/abort unreachable @@ -6414,7 +6395,7 @@ if i32.const 0 i32.const 192 - i32.const 142 + i32.const 144 i32.const 3 call $~lib/builtins/abort unreachable @@ -6438,7 +6419,7 @@ if i32.const 0 i32.const 192 - i32.const 148 + i32.const 150 i32.const 3 call $~lib/builtins/abort unreachable @@ -6455,7 +6436,7 @@ if i32.const 0 i32.const 192 - i32.const 149 + i32.const 151 i32.const 3 call $~lib/builtins/abort unreachable @@ -6470,7 +6451,7 @@ if i32.const 0 i32.const 192 - i32.const 150 + i32.const 152 i32.const 3 call $~lib/builtins/abort unreachable @@ -6485,7 +6466,7 @@ if i32.const 0 i32.const 192 - i32.const 151 + i32.const 153 i32.const 3 call $~lib/builtins/abort unreachable @@ -6500,7 +6481,7 @@ if i32.const 0 i32.const 192 - i32.const 152 + i32.const 154 i32.const 3 call $~lib/builtins/abort unreachable @@ -6515,14 +6496,14 @@ if i32.const 0 i32.const 192 - i32.const 153 + i32.const 155 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 8 + i32.const 7 i32.const 1712 call $~lib/rt/__newBuffer local.tee $3 @@ -6551,7 +6532,7 @@ if i32.const 0 i32.const 192 - i32.const 159 + i32.const 161 i32.const 3 call $~lib/builtins/abort unreachable @@ -6580,7 +6561,7 @@ if i32.const 0 i32.const 192 - i32.const 160 + i32.const 162 i32.const 3 call $~lib/builtins/abort unreachable @@ -6609,7 +6590,7 @@ if i32.const 0 i32.const 192 - i32.const 161 + i32.const 163 i32.const 3 call $~lib/builtins/abort unreachable @@ -6638,7 +6619,7 @@ if i32.const 0 i32.const 192 - i32.const 162 + i32.const 164 i32.const 3 call $~lib/builtins/abort unreachable @@ -6668,7 +6649,7 @@ if i32.const 0 i32.const 192 - i32.const 163 + i32.const 165 i32.const 3 call $~lib/builtins/abort unreachable @@ -6695,7 +6676,7 @@ if i32.const 0 i32.const 192 - i32.const 171 + i32.const 173 i32.const 3 call $~lib/builtins/abort unreachable @@ -6709,7 +6690,7 @@ if i32.const 0 i32.const 192 - i32.const 172 + i32.const 174 i32.const 3 call $~lib/builtins/abort unreachable @@ -6733,7 +6714,7 @@ if i32.const 0 i32.const 192 - i32.const 180 + i32.const 182 i32.const 3 call $~lib/builtins/abort unreachable @@ -6747,7 +6728,7 @@ if i32.const 0 i32.const 192 - i32.const 181 + i32.const 183 i32.const 3 call $~lib/builtins/abort unreachable @@ -6761,7 +6742,7 @@ if i32.const 0 i32.const 192 - i32.const 182 + i32.const 184 i32.const 3 call $~lib/builtins/abort unreachable @@ -6788,7 +6769,7 @@ if i32.const 0 i32.const 192 - i32.const 190 + i32.const 192 i32.const 3 call $~lib/builtins/abort unreachable @@ -6802,7 +6783,7 @@ if i32.const 0 i32.const 192 - i32.const 191 + i32.const 193 i32.const 3 call $~lib/builtins/abort unreachable @@ -6816,7 +6797,7 @@ if i32.const 0 i32.const 192 - i32.const 192 + i32.const 194 i32.const 3 call $~lib/builtins/abort unreachable @@ -6830,7 +6811,7 @@ if i32.const 0 i32.const 192 - i32.const 193 + i32.const 195 i32.const 3 call $~lib/builtins/abort unreachable @@ -6844,7 +6825,7 @@ if i32.const 0 i32.const 192 - i32.const 194 + i32.const 196 i32.const 3 call $~lib/builtins/abort unreachable @@ -6876,7 +6857,7 @@ if i32.const 0 i32.const 192 - i32.const 203 + i32.const 205 i32.const 3 call $~lib/builtins/abort unreachable @@ -6890,7 +6871,7 @@ if i32.const 0 i32.const 192 - i32.const 204 + i32.const 206 i32.const 3 call $~lib/builtins/abort unreachable @@ -6904,7 +6885,7 @@ if i32.const 0 i32.const 192 - i32.const 205 + i32.const 207 i32.const 3 call $~lib/builtins/abort unreachable @@ -6924,7 +6905,7 @@ if i32.const 0 i32.const 192 - i32.const 209 + i32.const 211 i32.const 3 call $~lib/builtins/abort unreachable @@ -6948,7 +6929,7 @@ if i32.const 0 i32.const 192 - i32.const 213 + i32.const 215 i32.const 3 call $~lib/builtins/abort unreachable @@ -6962,7 +6943,7 @@ if i32.const 0 i32.const 192 - i32.const 214 + i32.const 216 i32.const 3 call $~lib/builtins/abort unreachable @@ -6976,7 +6957,7 @@ if i32.const 0 i32.const 192 - i32.const 215 + i32.const 217 i32.const 3 call $~lib/builtins/abort unreachable @@ -6998,7 +6979,7 @@ if i32.const 0 i32.const 192 - i32.const 219 + i32.const 221 i32.const 3 call $~lib/builtins/abort unreachable @@ -7020,7 +7001,7 @@ if i32.const 0 i32.const 192 - i32.const 223 + i32.const 225 i32.const 3 call $~lib/builtins/abort unreachable @@ -7037,7 +7018,7 @@ if i32.const 0 i32.const 192 - i32.const 226 + i32.const 228 i32.const 3 call $~lib/builtins/abort unreachable @@ -7055,7 +7036,7 @@ if i32.const 0 i32.const 192 - i32.const 227 + i32.const 229 i32.const 3 call $~lib/builtins/abort unreachable @@ -7072,7 +7053,7 @@ if i32.const 0 i32.const 192 - i32.const 230 + i32.const 232 i32.const 3 call $~lib/builtins/abort unreachable @@ -7090,7 +7071,7 @@ if i32.const 0 i32.const 192 - i32.const 231 + i32.const 233 i32.const 3 call $~lib/builtins/abort unreachable @@ -7109,7 +7090,7 @@ if i32.const 0 i32.const 192 - i32.const 234 + i32.const 236 i32.const 3 call $~lib/builtins/abort unreachable @@ -7128,7 +7109,7 @@ if i32.const 0 i32.const 192 - i32.const 235 + i32.const 237 i32.const 3 call $~lib/builtins/abort unreachable @@ -7147,7 +7128,7 @@ if i32.const 0 i32.const 192 - i32.const 238 + i32.const 240 i32.const 3 call $~lib/builtins/abort unreachable @@ -7166,7 +7147,7 @@ if i32.const 0 i32.const 192 - i32.const 239 + i32.const 241 i32.const 3 call $~lib/builtins/abort unreachable @@ -7193,7 +7174,7 @@ if i32.const 0 i32.const 192 - i32.const 248 + i32.const 250 i32.const 3 call $~lib/builtins/abort unreachable @@ -7207,7 +7188,7 @@ if i32.const 0 i32.const 192 - i32.const 249 + i32.const 251 i32.const 3 call $~lib/builtins/abort unreachable @@ -7221,7 +7202,7 @@ if i32.const 0 i32.const 192 - i32.const 250 + i32.const 252 i32.const 3 call $~lib/builtins/abort unreachable @@ -7235,7 +7216,7 @@ if i32.const 0 i32.const 192 - i32.const 251 + i32.const 253 i32.const 3 call $~lib/builtins/abort unreachable @@ -7296,7 +7277,7 @@ if i32.const 656 i32.const 128 - i32.const 91 + i32.const 51 i32.const 60 call $~lib/builtins/abort unreachable @@ -7416,7 +7397,7 @@ global.set $~lib/memory/__stack_pointer local.get $4 ) - (func $~lib/staticarray/StaticArray.concat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7424,6 +7405,8 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7450,48 +7433,56 @@ if i32.const 656 i32.const 128 - i32.const 44 - i32.const 60 + i32.const 178 + i32.const 7 call $~lib/builtins/abort unreachable end + local.get $2 + i32.const 2 + i32.shl + local.set $5 + i32.const 0 + drop + i32.const 1 + drop global.get $~lib/memory/__stack_pointer local.get $4 i32.const 2 i32.shl i32.const 3 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $6 i32.store - local.get $5 - local.set $6 - local.get $2 - i32.const 2 - i32.shl + local.get $6 local.set $7 + local.get $1 + local.set $8 + local.get $0 + local.set $9 i32.const 0 drop - local.get $6 - local.get $0 local.get $7 + local.get $9 + local.get $5 memory.copy - local.get $6 local.get $7 + local.get $5 i32.add - local.get $1 + local.get $8 local.get $3 i32.const 2 i32.shl memory.copy - local.get $5 - local.set $8 + local.get $6 + local.set $10 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $10 ) - (func $~lib/staticarray/StaticArray.slice<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7500,6 +7491,7 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -7572,61 +7564,67 @@ i32.gt_s select local.set $3 - local.get $3 + local.get $0 + local.get $1 i32.const 2 i32.shl + i32.add local.set $6 + local.get $3 + i32.const 2 + i32.shl + local.set $7 + i32.const 0 + drop + i32.const 1 + drop global.get $~lib/memory/__stack_pointer - local.get $6 - i32.const 8 + local.get $7 + i32.const 7 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $4 i32.store - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $8 + local.get $4 + local.set $5 i32.const 1 drop i32.const 0 - local.set $4 + local.set $8 loop $while-continue|0 - local.get $4 - local.get $6 + local.get $8 + local.get $7 i32.lt_u - local.set $5 - local.get $5 + local.set $9 + local.get $9 if + local.get $6 local.get $8 - local.get $4 i32.add i32.load - local.set $9 - local.get $7 - local.get $4 + local.set $10 + local.get $5 + local.get $8 i32.add - local.get $9 + local.get $10 i32.store - local.get $7 - local.get $9 + local.get $5 + local.get $10 i32.const 1 call $~lib/rt/itcms/__link - local.get $4 + local.get $8 i32.const 4 i32.add - local.set $4 + local.set $8 br $while-continue|0 end end - local.get $7 - local.set $10 + local.get $4 + local.set $11 global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 ) (func $~lib/staticarray/StaticArray<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -7646,7 +7644,7 @@ if i32.const 64 i32.const 128 - i32.const 118 + i32.const 78 i32.const 41 call $~lib/builtins/abort unreachable @@ -7670,7 +7668,7 @@ if i32.const 1152 i32.const 128 - i32.const 122 + i32.const 82 i32.const 40 call $~lib/builtins/abort unreachable @@ -7683,7 +7681,7 @@ global.set $~lib/memory/__stack_pointer local.get $3 ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#concat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7723,67 +7721,69 @@ if i32.const 656 i32.const 128 - i32.const 217 - i32.const 60 + i32.const 178 + i32.const 7 call $~lib/builtins/abort unreachable end + local.get $2 + i32.const 2 + i32.shl + local.set $5 + i32.const 1 + drop global.get $~lib/memory/__stack_pointer local.get $4 i32.const 2 - i32.const 9 + i32.const 8 i32.const 0 call $~lib/rt/__newArray - local.tee $5 + local.tee $6 i32.store - local.get $5 + local.get $6 i32.load offset=4 - local.set $6 - local.get $2 - i32.const 2 - i32.shl local.set $7 + local.get $1 + i32.load offset=4 + local.set $8 + local.get $0 + local.set $9 i32.const 1 drop - local.get $0 - local.set $8 i32.const 0 - local.set $9 + local.set $10 loop $for-loop|0 - local.get $9 - local.get $7 - i32.lt_u - local.set $10 local.get $10 + local.get $5 + i32.lt_u + local.set $11 + local.get $11 if - local.get $8 local.get $9 + local.get $10 i32.add i32.load - local.set $11 - local.get $6 - local.get $9 + local.set $12 + local.get $7 + local.get $10 i32.add - local.get $11 + local.get $12 i32.store - local.get $5 - local.get $11 + local.get $6 + local.get $12 i32.const 1 call $~lib/rt/itcms/__link - local.get $9 + local.get $10 i32.const 4 i32.add - local.set $9 + local.set $10 br $for-loop|0 end end - local.get $6 local.get $7 + local.get $5 i32.add - local.set $6 - local.get $1 - i32.load offset=4 - local.set $9 + local.set $7 local.get $3 i32.const 2 i32.shl @@ -7797,17 +7797,17 @@ local.set $12 local.get $12 if - local.get $9 + local.get $8 local.get $11 i32.add i32.load local.set $13 - local.get $6 + local.get $7 local.get $11 i32.add local.get $13 i32.store - local.get $5 + local.get $6 local.get $13 i32.const 1 call $~lib/rt/itcms/__link @@ -7818,7 +7818,7 @@ br $for-loop|1 end end - local.get $5 + local.get $6 local.set $14 global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/std/staticarray.release.wat b/tests/compiler/std/staticarray.release.wat index 3b7f3a0f7f..aa746c7fdb 100644 --- a/tests/compiler/std/staticarray.release.wat +++ b/tests/compiler/std/staticarray.release.wat @@ -26,7 +26,7 @@ (global $std/staticarray/arr4 (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $std/staticarray/maxVal (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 20252)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 20244)) (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") @@ -72,23 +72,23 @@ (data (i32.const 2060) ",") (data (i32.const 2072) "\01\00\00\00\10\00\00\00e\00l\00e\00p\00h\00a\00n\00t") (data (i32.const 2108) ",") - (data (i32.const 2120) "\08\00\00\00\14\00\00\00\a0\07\00\00\c0\07\00\00\e0\07\00\00\00\08\00\00 \08") + (data (i32.const 2120) "\07\00\00\00\14\00\00\00\a0\07\00\00\c0\07\00\00\e0\07\00\00\00\08\00\00 \08") (data (i32.const 2156) "|") (data (i32.const 2168) "\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") (data (i32.const 2284) ",") - (data (i32.const 2296) "\08\00\00\00\14\00\00\00\a0\07\00\00\c0\07\00\00\e0\07\00\00\00\08\00\00 \08") + (data (i32.const 2296) "\07\00\00\00\14\00\00\00\a0\07\00\00\c0\07\00\00\e0\07\00\00\00\08\00\00 \08") (data (i32.const 2332) "\1c") (data (i32.const 2364) "\1c") (data (i32.const 2376) "\01\00\00\00\06\00\00\00f\00o\00o") (data (i32.const 2396) "\1c") (data (i32.const 2412) "\04\00\00\00P\t") (data (i32.const 2428) ",") - (data (i32.const 2440) "\08\00\00\00\14\00\00\00\a0\07\00\00\c0\07\00\00\e0\07\00\00\00\08\00\00 \08") + (data (i32.const 2440) "\07\00\00\00\14\00\00\00\a0\07\00\00\c0\07\00\00\e0\07\00\00\00\08\00\00 \08") (data (i32.const 2476) "\1c") - (data (i32.const 2488) "\n\00\00\00\08") + (data (i32.const 2488) "\t\00\00\00\08") (data (i32.const 2502) "\f8\7f") (data (i32.const 2508) "\1c") - (data (i32.const 2520) "\0b\00\00\00\04\00\00\00\00\00\c0\7f") + (data (i32.const 2520) "\n\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) ",") @@ -100,7 +100,7 @@ (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 2728) "\07\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") @@ -126,37 +126,37 @@ (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 3240) "\0b\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 3272) "\0c\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 3304) "\0d\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 3336) "\0e\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 3368) "\0e\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 3400) "\0d\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 3432) "\0d\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 3464) "\0d\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 3496) "\0d\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 3528) "\0d\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 3560) "\0d\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 3592) "\0d\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 3624) "\0d\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") + (data (i32.const 3704) "\0f\00\00\00\08\00\00\00\0e") + (data (i32.const 3728) "\10\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\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 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)) @@ -173,7 +173,7 @@ if i32.const 1088 i32.const 1152 - i32.const 118 + i32.const 78 i32.const 41 call $~lib/builtins/abort unreachable @@ -197,7 +197,7 @@ if i32.const 1088 i32.const 1152 - i32.const 133 + i32.const 93 i32.const 41 call $~lib/builtins/abort unreachable @@ -304,7 +304,7 @@ if i32.const 0 local.get $0 - i32.const 20252 + i32.const 20244 i32.lt_u local.get $0 i32.load offset=8 @@ -997,7 +997,7 @@ (local $1 i32) (local $2 i32) local.get $0 - i32.const 20252 + i32.const 20244 i32.lt_u if return @@ -1125,7 +1125,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 20252 + i32.const 20244 i32.lt_u if local.get $0 @@ -1225,7 +1225,7 @@ unreachable end local.get $0 - i32.const 20252 + i32.const 20244 i32.lt_u if local.get $0 @@ -1861,7 +1861,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s if i32.const 20272 @@ -2856,7 +2856,7 @@ i32.const 8 i32.sub i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $folding-inner1 $folding-inner1 $~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 + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $~lib/staticarray/StaticArray $std/staticarray/Ref $~lib/staticarray/StaticArray $folding-inner1 $~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 @@ -2951,7 +2951,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3084,7 +3084,7 @@ memory.size i32.const 16 i32.shl - i32.const 20252 + i32.const 20244 i32.sub i32.const 1 i32.shr_u @@ -3269,7 +3269,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3440,7 +3440,7 @@ i32.store offset=12 local.get $2 local.get $6 - call $~lib/staticarray/StaticArray.concat + call $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> local.tee $0 i32.store offset=8 local.get $0 @@ -3472,7 +3472,7 @@ i32.store offset=12 local.get $2 local.get $6 - call $~lib/staticarray/StaticArray.concat + call $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> local.tee $0 i32.store offset=8 local.get $0 @@ -3498,7 +3498,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 20 - i32.const 8 + i32.const 7 call $~lib/rt/itcms/__new local.tee $2 i32.const 2128 @@ -3510,7 +3510,7 @@ local.get $2 i32.const 0 i32.const 2147483647 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -3581,7 +3581,7 @@ local.get $2 i32.const 1 i32.const 3 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -3650,7 +3650,7 @@ local.get $2 i32.const 1 i32.const 2147483647 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $2 @@ -3680,7 +3680,7 @@ local.get $2 i32.const 0 i32.const 50 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -3708,7 +3708,7 @@ local.get $2 i32.const 100 i32.const 2147483647 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -3729,7 +3729,7 @@ local.get $2 i32.const -1 i32.const 2147483647 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -3775,7 +3775,7 @@ local.get $2 i32.const -2 i32.const -2 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -3796,7 +3796,7 @@ local.get $2 i32.const 2 i32.const -2 - call $~lib/staticarray/StaticArray.slice<~lib/string/String> + call $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> local.tee $0 i32.store offset=4 local.get $0 @@ -3840,7 +3840,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 20 - i32.const 8 + i32.const 7 call $~lib/rt/itcms/__new local.tee $1 i32.const 2304 @@ -3850,7 +3850,7 @@ i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 9 + i32.const 8 i32.const 2352 call $~lib/rt/__newArray local.set $2 @@ -3859,7 +3859,7 @@ i32.store offset=12 local.get $1 local.get $2 - call $~lib/staticarray/StaticArray<~lib/string/String>#concat + call $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> local.tee $0 i32.store offset=16 local.get $0 @@ -3874,14 +3874,14 @@ if i32.const 0 i32.const 1216 - i32.const 115 + i32.const 117 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer i32.const 1 - i32.const 9 + i32.const 8 i32.const 2416 call $~lib/rt/__newArray local.set $2 @@ -3890,7 +3890,7 @@ i32.store offset=12 local.get $1 local.get $2 - call $~lib/staticarray/StaticArray<~lib/string/String>#concat + call $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> local.tee $0 i32.store offset=16 local.get $0 @@ -3907,14 +3907,14 @@ if i32.const 0 i32.const 1216 - i32.const 119 + i32.const 121 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer i32.const 20 - i32.const 8 + i32.const 7 call $~lib/rt/itcms/__new local.tee $1 i32.const 2448 @@ -3934,7 +3934,7 @@ if i32.const 0 i32.const 1216 - i32.const 126 + i32.const 128 i32.const 3 call $~lib/builtins/abort unreachable @@ -3949,7 +3949,7 @@ if i32.const 0 i32.const 1216 - i32.const 127 + i32.const 129 i32.const 3 call $~lib/builtins/abort unreachable @@ -3964,7 +3964,7 @@ if i32.const 0 i32.const 1216 - i32.const 128 + i32.const 130 i32.const 3 call $~lib/builtins/abort unreachable @@ -3981,14 +3981,14 @@ if i32.const 0 i32.const 1216 - i32.const 129 + i32.const 131 i32.const 3 call $~lib/builtins/abort unreachable end block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) i32.const 8 - i32.const 10 + i32.const 9 call $~lib/rt/itcms/__new local.tee $0 i32.const 2496 @@ -4044,14 +4044,14 @@ if i32.const 0 i32.const 1216 - i32.const 131 + i32.const 133 i32.const 3 call $~lib/builtins/abort unreachable end block $__inlined_func$~lib/staticarray/StaticArray#includes (result i32) i32.const 4 - i32.const 11 + i32.const 10 call $~lib/rt/itcms/__new local.tee $0 i32.const 2528 @@ -4107,7 +4107,7 @@ if i32.const 0 i32.const 1216 - i32.const 132 + i32.const 134 i32.const 3 call $~lib/builtins/abort unreachable @@ -4165,7 +4165,7 @@ if i32.const 0 i32.const 1216 - i32.const 138 + i32.const 140 i32.const 3 call $~lib/builtins/abort unreachable @@ -4215,7 +4215,7 @@ if i32.const 0 i32.const 1216 - i32.const 139 + i32.const 141 i32.const 3 call $~lib/builtins/abort unreachable @@ -4269,7 +4269,7 @@ if i32.const 0 i32.const 1216 - i32.const 140 + i32.const 142 i32.const 3 call $~lib/builtins/abort unreachable @@ -4330,7 +4330,7 @@ if i32.const 0 i32.const 1216 - i32.const 141 + i32.const 143 i32.const 3 call $~lib/builtins/abort unreachable @@ -4389,7 +4389,7 @@ if i32.const 0 i32.const 1216 - i32.const 142 + i32.const 144 i32.const 3 call $~lib/builtins/abort unreachable @@ -4459,7 +4459,7 @@ if i32.const 0 i32.const 1216 - i32.const 148 + i32.const 150 i32.const 3 call $~lib/builtins/abort unreachable @@ -4519,7 +4519,7 @@ if i32.const 0 i32.const 1216 - i32.const 149 + i32.const 151 i32.const 3 call $~lib/builtins/abort unreachable @@ -4575,7 +4575,7 @@ if i32.const 0 i32.const 1216 - i32.const 150 + i32.const 152 i32.const 3 call $~lib/builtins/abort unreachable @@ -4629,7 +4629,7 @@ if i32.const 0 i32.const 1216 - i32.const 151 + i32.const 153 i32.const 3 call $~lib/builtins/abort unreachable @@ -4678,7 +4678,7 @@ if i32.const 0 i32.const 1216 - i32.const 152 + i32.const 154 i32.const 3 call $~lib/builtins/abort unreachable @@ -4729,14 +4729,14 @@ if i32.const 0 i32.const 1216 - i32.const 153 + i32.const 155 i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 8 + i32.const 7 call $~lib/rt/itcms/__new local.tee $1 i32.const 2736 @@ -4770,7 +4770,7 @@ if i32.const 0 i32.const 1216 - i32.const 159 + i32.const 161 i32.const 3 call $~lib/builtins/abort unreachable @@ -4801,7 +4801,7 @@ if i32.const 0 i32.const 1216 - i32.const 160 + i32.const 162 i32.const 3 call $~lib/builtins/abort unreachable @@ -4832,7 +4832,7 @@ if i32.const 0 i32.const 1216 - i32.const 161 + i32.const 163 i32.const 3 call $~lib/builtins/abort unreachable @@ -4863,7 +4863,7 @@ if i32.const 0 i32.const 1216 - i32.const 162 + i32.const 164 i32.const 3 call $~lib/builtins/abort unreachable @@ -4889,7 +4889,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -4923,7 +4923,7 @@ if i32.const 0 i32.const 1216 - i32.const 163 + i32.const 165 i32.const 3 call $~lib/builtins/abort unreachable @@ -4976,7 +4976,7 @@ if i32.const 0 i32.const 1216 - i32.const 171 + i32.const 173 i32.const 3 call $~lib/builtins/abort unreachable @@ -4989,7 +4989,7 @@ if i32.const 0 i32.const 1216 - i32.const 172 + i32.const 174 i32.const 3 call $~lib/builtins/abort unreachable @@ -5067,7 +5067,7 @@ if i32.const 0 i32.const 1216 - i32.const 180 + i32.const 182 i32.const 3 call $~lib/builtins/abort unreachable @@ -5080,7 +5080,7 @@ if i32.const 0 i32.const 1216 - i32.const 181 + i32.const 183 i32.const 3 call $~lib/builtins/abort unreachable @@ -5093,7 +5093,7 @@ if i32.const 0 i32.const 1216 - i32.const 182 + i32.const 184 i32.const 3 call $~lib/builtins/abort unreachable @@ -5162,7 +5162,7 @@ if i32.const 0 i32.const 1216 - i32.const 190 + i32.const 192 i32.const 3 call $~lib/builtins/abort unreachable @@ -5175,7 +5175,7 @@ if i32.const 0 i32.const 1216 - i32.const 191 + i32.const 193 i32.const 3 call $~lib/builtins/abort unreachable @@ -5188,7 +5188,7 @@ if i32.const 0 i32.const 1216 - i32.const 192 + i32.const 194 i32.const 3 call $~lib/builtins/abort unreachable @@ -5201,7 +5201,7 @@ if i32.const 0 i32.const 1216 - i32.const 193 + i32.const 195 i32.const 3 call $~lib/builtins/abort unreachable @@ -5214,7 +5214,7 @@ if i32.const 0 i32.const 1216 - i32.const 194 + i32.const 196 i32.const 3 call $~lib/builtins/abort unreachable @@ -5238,7 +5238,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -5310,7 +5310,7 @@ if i32.const 0 i32.const 1216 - i32.const 203 + i32.const 205 i32.const 3 call $~lib/builtins/abort unreachable @@ -5323,7 +5323,7 @@ if i32.const 0 i32.const 1216 - i32.const 204 + i32.const 206 i32.const 3 call $~lib/builtins/abort unreachable @@ -5336,7 +5336,7 @@ if i32.const 0 i32.const 1216 - i32.const 205 + i32.const 207 i32.const 3 call $~lib/builtins/abort unreachable @@ -5384,7 +5384,7 @@ if i32.const 0 i32.const 1216 - i32.const 209 + i32.const 211 i32.const 3 call $~lib/builtins/abort unreachable @@ -5398,7 +5398,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -5580,7 +5580,7 @@ if i32.const 0 i32.const 1216 - i32.const 213 + i32.const 215 i32.const 3 call $~lib/builtins/abort unreachable @@ -5593,7 +5593,7 @@ if i32.const 0 i32.const 1216 - i32.const 214 + i32.const 216 i32.const 3 call $~lib/builtins/abort unreachable @@ -5606,7 +5606,7 @@ if i32.const 0 i32.const 1216 - i32.const 215 + i32.const 217 i32.const 3 call $~lib/builtins/abort unreachable @@ -5660,7 +5660,7 @@ if i32.const 0 i32.const 1216 - i32.const 219 + i32.const 221 i32.const 3 call $~lib/builtins/abort unreachable @@ -5714,7 +5714,7 @@ if i32.const 0 i32.const 1216 - i32.const 223 + i32.const 225 i32.const 3 call $~lib/builtins/abort unreachable @@ -5768,7 +5768,7 @@ if i32.const 0 i32.const 1216 - i32.const 226 + i32.const 228 i32.const 3 call $~lib/builtins/abort unreachable @@ -5821,7 +5821,7 @@ if i32.const 0 i32.const 1216 - i32.const 227 + i32.const 229 i32.const 3 call $~lib/builtins/abort unreachable @@ -5876,7 +5876,7 @@ if i32.const 0 i32.const 1216 - i32.const 230 + i32.const 232 i32.const 3 call $~lib/builtins/abort unreachable @@ -5930,7 +5930,7 @@ if i32.const 0 i32.const 1216 - i32.const 231 + i32.const 233 i32.const 3 call $~lib/builtins/abort unreachable @@ -5983,7 +5983,7 @@ if i32.const 0 i32.const 1216 - i32.const 234 + i32.const 236 i32.const 3 call $~lib/builtins/abort unreachable @@ -6036,7 +6036,7 @@ if i32.const 0 i32.const 1216 - i32.const 235 + i32.const 237 i32.const 3 call $~lib/builtins/abort unreachable @@ -6089,7 +6089,7 @@ if i32.const 0 i32.const 1216 - i32.const 238 + i32.const 240 i32.const 3 call $~lib/builtins/abort unreachable @@ -6142,7 +6142,7 @@ if i32.const 0 i32.const 1216 - i32.const 239 + i32.const 241 i32.const 3 call $~lib/builtins/abort unreachable @@ -6166,7 +6166,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -6205,7 +6205,7 @@ if i32.const 0 i32.const 1216 - i32.const 248 + i32.const 250 i32.const 3 call $~lib/builtins/abort unreachable @@ -6218,7 +6218,7 @@ if i32.const 0 i32.const 1216 - i32.const 249 + i32.const 251 i32.const 3 call $~lib/builtins/abort unreachable @@ -6231,7 +6231,7 @@ if i32.const 0 i32.const 1216 - i32.const 250 + i32.const 252 i32.const 3 call $~lib/builtins/abort unreachable @@ -6244,12 +6244,12 @@ if i32.const 0 i32.const 1216 - i32.const 251 + i32.const 253 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 20252 + i32.const 20244 global.set $~lib/memory/__stack_pointer global.get $~lib/rt/itcms/state i32.const 0 @@ -6304,7 +6304,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s if i32.const 20272 @@ -6339,7 +6339,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s if i32.const 20272 @@ -6406,7 +6406,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s if i32.const 20272 @@ -6441,7 +6441,7 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~lib/staticarray/StaticArray.concat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray#concat<~lib/staticarray/StaticArray> (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6450,7 +6450,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s if i32.const 20272 @@ -6484,8 +6484,8 @@ if i32.const 1680 i32.const 1152 - i32.const 44 - i32.const 60 + i32.const 178 + i32.const 7 call $~lib/builtins/abort unreachable end @@ -6518,7 +6518,7 @@ global.set $~lib/memory/__stack_pointer local.get $4 ) - (func $~lib/staticarray/StaticArray.slice<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/staticarray/StaticArray<~lib/string/String>#slice<~lib/staticarray/StaticArray<~lib/string/String>> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer @@ -6526,7 +6526,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s if i32.const 20272 @@ -6546,6 +6546,7 @@ i32.const 2 i32.shr_u local.set $3 + local.get $0 local.get $1 i32.const 0 i32.lt_s @@ -6553,9 +6554,9 @@ local.get $1 local.get $3 i32.add - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select @@ -6567,7 +6568,11 @@ i32.lt_s select end - local.set $4 + local.tee $0 + i32.const 2 + i32.shl + i32.add + local.set $1 global.get $~lib/memory/__stack_pointer local.get $2 i32.const 0 @@ -6576,9 +6581,9 @@ local.get $2 local.get $3 i32.add - local.tee $1 + local.tee $2 i32.const 0 - local.get $1 + local.get $2 i32.const 0 i32.gt_s select @@ -6590,27 +6595,21 @@ i32.lt_s select end - local.get $4 + local.get $0 i32.sub - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select i32.const 2 i32.shl local.tee $3 - i32.const 8 + i32.const 7 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $4 i32.store - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.set $0 i32.const 0 local.set $2 loop $while-continue|0 @@ -6618,19 +6617,19 @@ local.get $3 i32.lt_u if - local.get $1 local.get $2 + local.get $4 i32.add - local.get $0 + local.get $1 local.get $2 i32.add i32.load - local.tee $4 + local.tee $0 i32.store - local.get $4 + local.get $0 if - local.get $1 local.get $4 + local.get $0 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end @@ -6645,7 +6644,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $4 ) (func $~lib/staticarray/StaticArray<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) global.get $~lib/memory/__stack_pointer @@ -6653,7 +6652,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s if i32.const 20272 @@ -6677,7 +6676,7 @@ if i32.const 1088 i32.const 1152 - i32.const 118 + i32.const 78 i32.const 41 call $~lib/builtins/abort unreachable @@ -6696,7 +6695,7 @@ if i32.const 2176 i32.const 1152 - i32.const 122 + i32.const 82 i32.const 40 call $~lib/builtins/abort unreachable @@ -6707,7 +6706,7 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/staticarray/StaticArray<~lib/string/String>#concat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/staticarray/StaticArray<~lib/string/String>#concat<~lib/array/Array<~lib/string/String>> (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6719,7 +6718,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s if i32.const 20272 @@ -6738,102 +6737,104 @@ i32.load offset=16 i32.const 2 i32.shr_u - local.tee $5 + local.tee $2 local.get $1 i32.load offset=12 - local.tee $3 + local.tee $5 i32.add - local.tee $4 + local.tee $3 i32.const 268435455 i32.gt_u if i32.const 1680 i32.const 1152 - i32.const 217 - i32.const 60 + i32.const 178 + i32.const 7 call $~lib/builtins/abort unreachable end + local.get $2 + i32.const 2 + i32.shl + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.const 9 + local.get $3 + i32.const 8 i32.const 0 call $~lib/rt/__newArray - local.tee $4 + local.tee $2 i32.store - local.get $4 + local.get $2 + i32.load offset=4 + local.set $3 + local.get $1 i32.load offset=4 - local.set $6 - local.get $5 - i32.const 2 - i32.shl local.set $7 + i32.const 0 + local.set $1 loop $for-loop|0 - local.get $2 - local.get $7 + local.get $1 + local.get $6 i32.lt_u if - local.get $2 - local.get $6 + local.get $1 + local.get $3 i32.add local.get $0 - local.get $2 + local.get $1 i32.add i32.load - local.tee $5 + local.tee $4 i32.store - local.get $5 + local.get $4 if + local.get $2 local.get $4 - local.get $5 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $2 + local.get $1 i32.const 4 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end + local.get $3 local.get $6 - local.get $7 i32.add - local.set $0 - local.get $1 - i32.load offset=4 - local.set $2 - local.get $3 + local.set $1 + local.get $5 i32.const 2 i32.shl local.set $3 i32.const 0 - local.set $1 + local.set $0 loop $for-loop|1 - local.get $1 + local.get $0 local.get $3 i32.lt_u if local.get $0 local.get $1 i32.add - local.get $1 - local.get $2 + local.get $0 + local.get $7 i32.add i32.load - local.tee $5 + local.tee $4 i32.store - local.get $5 + local.get $4 if + local.get $2 local.get $4 - local.get $5 i32.const 1 call $byn-split-outlined-A$~lib/rt/itcms/__link end - local.get $1 + local.get $0 i32.const 4 i32.add - local.set $1 + local.set $0 br $for-loop|1 end end @@ -6841,7 +6842,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $2 ) (func $~lib/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -6854,7 +6855,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 3868 + i32.const 3860 i32.lt_s if i32.const 20272 diff --git a/tests/compiler/std/staticarray.ts b/tests/compiler/std/staticarray.ts index 0a8919d6d6..3220c4f769 100644 --- a/tests/compiler/std/staticarray.ts +++ b/tests/compiler/std/staticarray.ts @@ -65,44 +65,44 @@ arr4 = changetype>(0); { let source: StaticArray = [1, 2]; - let result = StaticArray.concat(source, [1]); + let result = source.concat>([1]); assert(result.length == 3); - result = StaticArray.concat(source, []); + result = source.concat>([]); assert(result.length == source.length); } // slice { const source: StaticArray = ['ant', 'bison', 'camel', 'duck', 'elephant']; - let result = StaticArray.slice(source); + let result = source.slice>(); assert(result.length == source.length); for(let i = 0; i < source.length; i++) { assert(source[i] == result[i]); } - result = StaticArray.slice(source, 1, 3); + result = source.slice>(1, 3); assert(result.length == 2); assert(result[0] == "bison"); assert(result[1] == "camel"); - result = StaticArray.slice(source, 1); + result = source.slice>(1); assert(result.length == (source.length - 1)); - result = StaticArray.slice(source, 0, 50); + result = source.slice>(0, 50); assert(result.length == source.length); - result = StaticArray.slice(source, 100); + result = source.slice>(100); assert(result.length == 0); - result = StaticArray.slice(source, -1); + result = source.slice>(-1); assert(result.length == 1); assert(result[0] == "elephant"); - result = StaticArray.slice(source, -2, -2); + result = source.slice>(-2, -2); assert(result.length == 0); - result = StaticArray.slice(source, 2, -2); + result = source.slice>(2, -2); assert(result.length == 1); assert(result[0] == "camel"); } @@ -111,7 +111,9 @@ arr4 = changetype>(0); { const source: StaticArray = ['ant', 'bison', 'camel', 'duck', 'elephant']; - let result = source.concat([]); + // TODO: omit default generic type after + // when https://github.com/AssemblyScript/assemblyscript/issues/2405 fixed + let result = source.concat([]); assert(result.length == source.length); assert(isArray(result));