diff --git a/src/common.ts b/src/common.ts index dc38a71d..97eaf2c3 100644 --- a/src/common.ts +++ b/src/common.ts @@ -189,7 +189,7 @@ export namespace LibrarySymbols { export const REGISTER = "REGISTER"; export const RETAIN = "RETAIN"; export const RELEASE = "RELEASE"; - export const WRAPARRAY = "WRAPARRAY"; + export const MAKEARRAY = "MAKEARRAY"; // other export const length = "length"; export const byteLength = "byteLength"; diff --git a/src/compiler.ts b/src/compiler.ts index 17ec7670..8450e877 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -2689,10 +2689,11 @@ export class Compiler extends DiagnosticEmitter { switch (expression.assertionKind) { case AssertionKind.PREFIX: case AssertionKind.AS: { + let flow = this.currentFlow; let toType = this.resolver.resolveType( // reports assert(expression.toType), - this.currentFlow.actualFunction, - this.currentFlow.contextualTypeArguments + flow.actualFunction, + flow.contextualTypeArguments ); if (!toType) return this.module.createUnreachable(); return this.compileExpression(expression.expression, toType, ConversionKind.EXPLICIT, WrapMode.NONE); @@ -2700,6 +2701,22 @@ export class Compiler extends DiagnosticEmitter { case AssertionKind.NONNULL: { assert(!expression.toType); let expr = this.compileExpressionRetainType(expression.expression, contextualType, WrapMode.NONE); + let type = this.currentType; + if (!type.is(TypeFlags.NULLABLE | TypeFlags.REFERENCE)) { + this.info( + DiagnosticCode.Expression_is_never_null, + expression.expression.range + ); + } else if (!this.options.noAssert) { + let module = this.module; + let flow = this.currentFlow; + let tempIndex = flow.getAndFreeTempLocal(type, !flow.canOverflow(expr, type)).index; + expr = module.createIf( + module.createTeeLocal(tempIndex, expr), + module.createGetLocal(tempIndex, type.toNativeType()), + module.createUnreachable() + ); + } this.currentType = this.currentType.nonNullableType; return expr; } @@ -6741,13 +6758,13 @@ export class Compiler extends DiagnosticEmitter { // otherwise allocate a new array header and make it wrap a copy of the static buffer } else { - let wrapArrayPrototype = assert(program.wrapArrayPrototype); - let wrapArrayInstance = this.resolver.resolveFunction(wrapArrayPrototype, [ elementType ]); - if (!wrapArrayInstance) { + let makeArrayInstance = this.resolver.resolveFunction(assert(program.makeArrayPrototype), [ elementType ]); + if (!makeArrayInstance) { this.currentType = arrayType; return module.createUnreachable(); } - let body = this.makeCallInlinePrechecked(wrapArrayInstance, [ + let body = this.makeCallInlinePrechecked(makeArrayInstance, [ + this.module.createI32(length), program.options.isWasm64 ? this.module.createI64(i64_low(bufferAddress), i64_high(bufferAddress)) : this.module.createI32(i64_low(bufferAddress)) @@ -6771,14 +6788,18 @@ export class Compiler extends DiagnosticEmitter { var flow = this.currentFlow; var tempThis = flow.getTempLocal(arrayType, false); var tempDataStart = flow.getTempLocal(arrayBufferInstance.type); + var makeArrayInstance = this.resolver.resolveFunction(assert(program.makeArrayPrototype), [ elementType ]); + if (!makeArrayInstance) { + this.currentType = arrayType; + return module.createUnreachable(); + } var stmts = new Array(); - // tempThis = new Array(length) + // tempThis = MAKEARRAY(length) stmts.push( module.createSetLocal(tempThis.index, - this.makeCallDirect(assert(arrayInstance.constructorInstance), [ - module.createI32(0), // this + this.makeCallInlinePrechecked(makeArrayInstance, [ module.createI32(length) - ], reportNode) + ], 0, true), ) ); // tempData = tempThis.dataStart diff --git a/src/diagnosticMessages.generated.ts b/src/diagnosticMessages.generated.ts index b77cfa3f..9fc1e2e4 100644 --- a/src/diagnosticMessages.generated.ts +++ b/src/diagnosticMessages.generated.ts @@ -35,6 +35,7 @@ export enum DiagnosticCode { _0_must_be_a_value_between_1_and_2_inclusive = 222, _0_must_be_a_power_of_two = 223, TODO_Cannot_inline_inferred_calls_and_specific_internals_yet = 224, + Expression_is_never_null = 225, Unterminated_string_literal = 1002, Identifier_expected = 1003, _0_expected = 1005, @@ -171,6 +172,7 @@ export function diagnosticCodeToString(code: DiagnosticCode): string { case 222: return "'{0}' must be a value between '{1}' and '{2}' inclusive."; case 223: return "'{0}' must be a power of two."; case 224: return "TODO: Cannot inline inferred calls and specific internals yet."; + case 225: return "Expression is never 'null'."; case 1002: return "Unterminated string literal."; case 1003: return "Identifier expected."; case 1005: return "'{0}' expected."; diff --git a/src/diagnosticMessages.json b/src/diagnosticMessages.json index 44b5a363..906e6712 100644 --- a/src/diagnosticMessages.json +++ b/src/diagnosticMessages.json @@ -27,6 +27,7 @@ "'{0}' must be a value between '{1}' and '{2}' inclusive.": 222, "'{0}' must be a power of two.": 223, "TODO: Cannot inline inferred calls and specific internals yet.": 224, + "Expression is never 'null'.": 225, "Unterminated string literal.": 1002, "Identifier expected.": 1003, diff --git a/src/program.ts b/src/program.ts index 809995c6..3306dc87 100644 --- a/src/program.ts +++ b/src/program.ts @@ -368,8 +368,8 @@ export class Program extends DiagnosticEmitter { retainPrototype: FunctionPrototype | null = null; /** Runtime release function. */ releasePrototype: FunctionPrototype | null = null; - /** Runtime wrap array function. */ - wrapArrayPrototype: FunctionPrototype | null = null; + /** Runtime make array function. */ + makeArrayPrototype: FunctionPrototype | null = null; /** Next class id. */ nextClassId: u32 = 1; @@ -838,9 +838,9 @@ export class Program extends DiagnosticEmitter { assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); this.releasePrototype = element; } - if (element = this.lookupGlobal(LibrarySymbols.WRAPARRAY)) { + if (element = this.lookupGlobal(LibrarySymbols.MAKEARRAY)) { assert(element.kind == ElementKind.FUNCTION_PROTOTYPE); - this.wrapArrayPrototype = element; + this.makeArrayPrototype = element; } } diff --git a/std/assembly/array.ts b/std/assembly/array.ts index ce13b79a..6188ce1a 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -1,13 +1,17 @@ -import { ALLOCATE, REALLOCATE, DISCARD, RETAIN, RELEASE, REGISTER, MAX_BYTELENGTH, ArrayBufferView, MOVE } from "./runtime"; +import { + ALLOCATE, REALLOCATE, DISCARD, RETAIN, RELEASE, REGISTER, MAX_BYTELENGTH, MOVE, MAKEARRAY, + ArrayBufferView +} from "./runtime"; import { ArrayBuffer } from "./arraybuffer"; import { COMPARATOR, SORT } from "./util/sort"; import { itoa, dtoa, itoa_stream, dtoa_stream, MAX_DOUBLE_LENGTH } from "./util/number"; import { isArray as builtin_isArray } from "./builtins"; +import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_EMPTYARRAY, E_HOLEYARRAY } from "./util/error"; /** Ensures that the given array has _at least_ the specified capacity. */ function ensureCapacity(array: ArrayBufferView, minCapacity: i32, alignLog2: u32): void { if (minCapacity > array.dataLength >>> alignLog2) { - if (minCapacity > (MAX_BYTELENGTH >>> alignLog2)) throw new RangeError("Invalid array length"); + if (minCapacity > (MAX_BYTELENGTH >>> alignLog2)) throw new RangeError(E_INVALIDLENGTH); let oldData = array.data; let newByteLength = minCapacity << alignLog2; let newData = REALLOCATE(changetype(oldData), newByteLength); // registers on move @@ -26,28 +30,29 @@ export class Array extends ArrayBufferView { // to work with typed and normal arrays interchangeably. Technically, normal arrays do not need // `dataStart` (equals `data`) and `dataLength` (equals computed `data.byteLength`). + // Also note that Array with non-nullable T must guard against implicit null values whenever + // length is modified in a way that a null value would exist. Otherwise, the compiler wouldn't be + // able to guarantee type-safety anymore. For lack of a better word, such an array is "holey". + private length_: i32; static isArray(value: U): bool { return builtin_isArray(value) && value !== null; } - static create(capacity: i32): Array { - if (capacity > MAX_BYTELENGTH >>> alignof()) throw new RangeError("Invalid length"); - var buffer = new ArrayBuffer(capacity = capacity << alignof()); - var out = REGISTER>(ALLOCATE(offsetof>())); - out.data = buffer; // links - out.dataStart = changetype(buffer); - out.dataLength = capacity; - out.length_ = 0; - return out; + static create(capacity: i32 = 0): Array { + if (capacity > MAX_BYTELENGTH >>> alignof()) throw new RangeError(E_INVALIDLENGTH); + var array = MAKEARRAY(capacity); + memory.fill(array.dataStart, 0, array.dataLength); + array.length_ = 0; // ! + return array; } constructor(length: i32 = 0) { super(length, alignof()); if (isReference()) { if (!isNullable()) { - if (length) throw new Error("T must be nullable if length > 0"); + if (length) throw new Error(E_HOLEYARRAY); } } this.length_ = length; @@ -62,6 +67,11 @@ export class Array extends ArrayBufferView { } set length(length: i32) { + if (isReference()) { + if (!isNullable()) { + if (length > this.length_) throw new Error(E_HOLEYARRAY); + } + } ensureCapacity(this, length, alignof()); this.length_ = length; } @@ -82,24 +92,39 @@ export class Array extends ArrayBufferView { @operator("[]") // unchecked is built-in private __get(index: i32): T { - if (index >= this.dataLength >>> alignof()) throw new RangeError("Offset out of bounds"); + if (isReference()) { + if (!isNullable()) { + if (index >= this.length_) throw new Error(E_HOLEYARRAY); + } + } + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); return load(this.dataStart + (index << alignof())); } @operator("[]=") // unchecked is built-in private __set(index: i32, value: T): void { + var length = this.length_; + if (isReference()) { + if (!isNullable()) { + if (index > length) throw new Error(E_HOLEYARRAY); + } + } ensureCapacity(this, index + 1, alignof()); if (isManaged()) { let offset = this.dataStart + (index << alignof()); let oldValue = load(offset); if (value !== oldValue) { - RELEASE(oldValue, this); + if (isNullable()) { + RELEASE(oldValue, this); // handles != null + } else if (oldValue !== null) { + RELEASE(oldValue, this); // requires != null + } store(offset, RETAIN(value, this)); } } else { store(this.dataStart + (index << alignof()), value); } - if (index >= this.length_) this.length_ = index + 1; + if (index >= length) this.length_ = index + 1; } fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): this { @@ -167,7 +192,7 @@ export class Array extends ArrayBufferView { concat(other: Array): Array { var thisLen = this.length_; var otherLen = select(0, other.length_, other === null); - var out = new Array(thisLen + otherLen); + var out = MAKEARRAY(thisLen + otherLen); var outStart = out.dataStart; var thisSize = thisLen << alignof(); if (isManaged()) { @@ -217,7 +242,7 @@ export class Array extends ArrayBufferView { pop(): T { var length = this.length_; - if (length < 1) throw new RangeError("Array is empty"); + if (length < 1) throw new RangeError(E_EMPTYARRAY); var element = load(this.dataStart + ((--length) << alignof())); this.length_ = length; return element; @@ -231,7 +256,7 @@ export class Array extends ArrayBufferView { map(callbackfn: (value: T, index: i32, array: Array) => U): Array { var length = this.length_; - var out = new Array(length); + var out = MAKEARRAY(length); var outStart = out.dataStart; for (let index = 0; index < min(length, this.length_); ++index) { let value = load(this.dataStart + (index << alignof())); @@ -246,7 +271,7 @@ export class Array extends ArrayBufferView { } filter(callbackfn: (value: T, index: i32, array: Array) => bool): Array { - var result = new Array(); + var result = MAKEARRAY(0); for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) { let value = load(this.dataStart + (index << alignof())); if (callbackfn(value, index, this)) result.push(value); @@ -278,7 +303,7 @@ export class Array extends ArrayBufferView { shift(): T { var length = this.length_; - if (length < 1) throw new RangeError("Array is empty"); + if (length < 1) throw new RangeError(E_EMPTYARRAY); var base = this.dataStart; var element = load(base); var lastIndex = length - 1; @@ -325,7 +350,7 @@ export class Array extends ArrayBufferView { begin = begin < 0 ? max(begin + length, 0) : min(begin, length); end = end < 0 ? max(end + length, 0) : min(end , length); length = max(end - begin, 0); - var slice = new Array(length); + var slice = MAKEARRAY(length); var sliceBase = slice.dataStart; var thisBase = this.dataStart + (begin << alignof()); for (let i = 0; i < length; ++i) { @@ -344,7 +369,7 @@ export class Array extends ArrayBufferView { var length = this.length_; start = start < 0 ? max(length + start, 0) : min(start, length); deleteCount = max(min(deleteCount, length - start), 0); - var result = new Array(deleteCount); + var result = MAKEARRAY(deleteCount); var resultStart = result.dataStart; var thisStart = this.dataStart; var thisBase = thisStart + (start << alignof()); diff --git a/std/assembly/arraybuffer.ts b/std/assembly/arraybuffer.ts index a24247f2..2461cdd8 100644 --- a/std/assembly/arraybuffer.ts +++ b/std/assembly/arraybuffer.ts @@ -1,4 +1,5 @@ import { ALLOCATE, REGISTER, HEADER, HEADER_SIZE, MAX_BYTELENGTH } from "./runtime"; +import { E_INVALIDLENGTH } from "./util/error"; @sealed export class ArrayBuffer { @@ -21,7 +22,7 @@ import { ALLOCATE, REGISTER, HEADER, HEADER_SIZE, MAX_BYTELENGTH } from "./runti } constructor(length: i32) { - if (length > MAX_BYTELENGTH) throw new RangeError("Invalid array buffer length"); + if (length > MAX_BYTELENGTH) throw new RangeError(E_INVALIDLENGTH); var buffer = ALLOCATE(length); memory.fill(changetype(buffer), 0, length); return REGISTER(buffer); diff --git a/std/assembly/dataview.ts b/std/assembly/dataview.ts index 3c842854..0e285c46 100644 --- a/std/assembly/dataview.ts +++ b/std/assembly/dataview.ts @@ -1,5 +1,6 @@ import { MAX_BYTELENGTH } from "./runtime"; import { ArrayBuffer } from "./arraybuffer"; +import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error"; // TODO: there is probably a smarter way to check byteOffset for accesses larger than 1 byte @@ -12,11 +13,13 @@ export class DataView { constructor( buffer: ArrayBuffer, byteOffset: i32 = 0, - byteLength: i32 = i32.MIN_VALUE // FIXME + byteLength: i32 = i32.MIN_VALUE // FIXME: TS2304: Cannot find name 'buffer'. ) { if (byteLength === i32.MIN_VALUE) byteLength = buffer.byteLength - byteOffset; // FIXME - if (byteLength > MAX_BYTELENGTH) throw new RangeError("Invalid byteLength"); - if (byteOffset + byteLength > buffer.byteLength) throw new RangeError("Invalid length"); + if ( + i32(byteLength > MAX_BYTELENGTH) | + i32(byteOffset + byteLength > buffer.byteLength) + ) throw new RangeError(E_INVALIDLENGTH); this.data = buffer; // links var dataStart = changetype(buffer) + byteOffset; this.dataStart = dataStart; @@ -39,7 +42,7 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 4 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); return littleEndian ? load(this.dataStart + byteOffset) : reinterpret( @@ -53,7 +56,7 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 8 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); return littleEndian ? load(this.dataStart + byteOffset) : reinterpret( @@ -64,7 +67,7 @@ export class DataView { } getInt8(byteOffset: i32): i8 { - if (byteOffset >= this.dataLength) throw new Error("Offset out of bounds"); + if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE); return load(this.dataStart + byteOffset); } @@ -72,7 +75,7 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 2 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); var result: i16 = load(this.dataStart + byteOffset); return littleEndian ? result : bswap(result); } @@ -81,13 +84,13 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 4 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); var result: i32 = load(this.dataStart + byteOffset); return littleEndian ? result : bswap(result); } getUint8(byteOffset: i32): u8 { - if (byteOffset >= this.dataLength) throw new Error("Offset out of bounds"); + if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE); return load(this.dataStart + byteOffset); } @@ -95,7 +98,7 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 2 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); var result: u16 = load(this.dataStart + byteOffset); return littleEndian ? result : bswap(result); } @@ -104,7 +107,7 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 4 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); var result: u32 = load(this.dataStart + byteOffset); return littleEndian ? result : bswap(result); } @@ -113,7 +116,7 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 4 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); if (littleEndian) store(this.dataStart + byteOffset, value); else store(this.dataStart + byteOffset, bswap(reinterpret(value))); } @@ -122,13 +125,13 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 8 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); if (littleEndian) store(this.dataStart + byteOffset, value); else store(this.dataStart + byteOffset, bswap(reinterpret(value))); } setInt8(byteOffset: i32, value: i8): void { - if (byteOffset >= this.dataLength) throw new Error("Offset out of bounds"); + if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + byteOffset, value); } @@ -136,7 +139,7 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 2 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + byteOffset, littleEndian ? value : bswap(value)); } @@ -144,12 +147,12 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 4 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + byteOffset, littleEndian ? value : bswap(value)); } setUint8(byteOffset: i32, value: u8): void { - if (byteOffset >= this.dataLength) throw new Error("Offset out of bounds"); + if (byteOffset >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + byteOffset, value); } @@ -157,7 +160,7 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 2 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + byteOffset, littleEndian ? value : bswap(value)); } @@ -165,7 +168,7 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 4 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + byteOffset, littleEndian ? value : bswap(value)); } @@ -175,7 +178,7 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 8 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); var result: i64 = load(this.dataStart + byteOffset); return littleEndian ? result : bswap(result); } @@ -184,7 +187,7 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 8 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); var result = load(this.dataStart + byteOffset); return littleEndian ? result : bswap(result); } @@ -193,7 +196,7 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 8 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + byteOffset, littleEndian ? value : bswap(value)); } @@ -201,7 +204,7 @@ export class DataView { if ( i32(byteOffset < 0) | i32(byteOffset + 8 > this.dataLength) - ) throw new Error("Offset out of bounds"); + ) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + byteOffset, littleEndian ? value : bswap(value)); } diff --git a/std/assembly/fixedarray.ts b/std/assembly/fixedarray.ts index 637453b9..5e99fa65 100644 --- a/std/assembly/fixedarray.ts +++ b/std/assembly/fixedarray.ts @@ -1,4 +1,5 @@ import { ALLOCATE, REGISTER, MAX_BYTELENGTH, HEADER, HEADER_SIZE, RETAIN, RELEASE } from "./runtime"; +import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH, E_HOLEYARRAY } from "./util/error"; // NOTE: DO NOT USE YET! @@ -9,7 +10,12 @@ export class FixedArray { [key: number]: T; constructor(length: i32) { - if (length > MAX_BYTELENGTH >>> alignof()) throw new RangeError("Invalid length"); + if (length > MAX_BYTELENGTH >>> alignof()) throw new RangeError(E_INVALIDLENGTH); + if (isReference()) { + if (!isNullable()) { + if (length) throw new Error(E_HOLEYARRAY); + } + } var outSize = length << alignof(); var out = ALLOCATE(outSize); memory.fill(out, 0, outSize); @@ -21,12 +27,12 @@ export class FixedArray { } @operator("[]") private __get(index: i32): T { - if (index >= this.length) throw new RangeError("Offset out of bounds"); + if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE); return this.__unchecked_get(index); } @operator("[]=") private __set(index: i32, value: T): void { - if (index >= this.length) throw new RangeError("Offset out of bounds"); + if (index >= this.length) throw new RangeError(E_INDEXOUTOFRANGE); return this.__unchecked_set(index, value); } diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 5b6ba56d..68a648d6 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -1171,12 +1171,15 @@ declare class Float64Array extends TypedArray {} /** Class representing a sequence of values of type `T`. */ declare class Array { + /** Tests if a value is an array. */ static isArray(value: any): value is Array; + /** Creates a new array with at least the specified capacity and length zero. */ + static create(capacity?: i32): Array; [key: number]: T; /** Current length of the array. */ length: i32; - /** Constructs a new array. */ + /** Constructs a new array. If length is greater than zero and T is a non-nullable reference, use `Array.create` instead.*/ constructor(capacity?: i32); fill(value: T, start?: i32, end?: i32): this; diff --git a/std/assembly/runtime.ts b/std/assembly/runtime.ts index 7df000f9..fe6b27fe 100644 --- a/std/assembly/runtime.ts +++ b/std/assembly/runtime.ts @@ -8,68 +8,7 @@ import { AL_MASK, MAX_SIZE_32 } from "./util/allocator"; import { HEAP_BASE, memory } from "./memory"; - -// ALLOCATE(size) -// -------------- -// Allocates a runtime object that might eventually make its way into GC'ed userland as a -// managed object. Implicitly prepends the common runtime header to the allocation. -// -// REALLOCATE(ref, size) -// --------------------- -// Changes the size of a previously allocated, but not yet registered, runtime object, for -// example when a pre-allocated buffer turned out to be too small or too large. This works by -// aligning dynamic allocations to actual block size internally so in the best case REALLOCATE -// only updates payload size while in the worst case moves the object to a larger block. -// -// DISCARD(ref) -// ------------ -// Discards a runtime object that has not been registed and turned out to be unnecessary. -// Essentially undoes the forgoing ALLOCATE. Should be avoided where possible, of course. -// -// REGISTER(ref) -// ---------------- -// Registers a runtime object of kind T. Sets the internal class id within the runtime header -// and asserts that the object hasn't been registered yet. If a tracing garbage collector is -// present that requires initial insertion, the macro also forwards a call to it. Once a -// runtime object has been registed (makes it into userland), it cannot be DISCARD'ed anymore. -// -// RETAIN(ref, parentRef) -// --------------------------------- -// Introduces a new reference to ref hold by parentRef. A tracing garbage collector will most -// likely link the runtime object within its internal graph when RETAIN is called, while a -// reference counting collector will increment the reference count. -// -// RELEASE(ref, parentRef) -// ---------------------------------- -// Releases a reference to ref hold by parentRef. A tracing garbage collector will most likely -// ignore this by design, while a reference counting collector decrements the reference count -// and potentially frees the runtime object. -// -// MOVE(ref, oldParentRef, newParentRef) -// -------------------------------------------------------------- -// Moves a reference to ref hold by oldParentRef to be now hold by newParentRef. This is a -// special case of first RELEASE'ing a reference on one and instantly RETAIN'ing the reference -// on another parent. A tracing garbage collector will most likely link the runtime object as if -// RETAIN'ed on the new parent only, while a reference counting collector can skip increment and -// decrement, as decrementing might otherwise involve a costly check for cyclic garbage. -// -// ALLOCATE_UNMANAGED(size) -// ------------------------ -// Allocates an unmanaged struct-like object. This is used by the compiler as an abstraction -// to memory.allocate just in case, and is usually not used directly. -// -// WRAPARRAY(buffer) -// -------------------- -// Wraps a buffer's data as a standard array of element type T. Used by the compiler when -// creating an array from a static data segment, but is usually not used directly. -// -// HEADER -// ------ -// The common runtime object header prepended to all managed objects. Has a size of 16 bytes in -// WASM32 and contains a classId (e.g. for instanceof checks), the allocation size (e.g. for -// .byteLength and .length computation) and additional reserved fields to be used by GC. If no -// GC is present, the HEADER is cut into half excluding the reserved fields, as indicated by -// HEADER_SIZE. +import { Array } from "./array"; /** Whether the memory manager interface is implemented. */ // @ts-ignore: decorator, stub @@ -79,7 +18,13 @@ import { HEAP_BASE, memory } from "./memory"; // @ts-ignore: decorator, stub @lazy export const GC_IMPLEMENTED: bool = isDefined(__gc_register); -/** Common runtime header. Each managed object has one. */ +/** + * The common runtime object header prepended to all managed objects. Has a size of 16 bytes in + * WASM32 and contains a classId (e.g. for instanceof checks), the allocation size (e.g. for + * .byteLength and .length computation) and additional reserved fields to be used by GC. If no + * GC is present, the HEADER is cut into half excluding the reserved fields, as indicated by + * HEADER_SIZE. +*/ @unmanaged export class HEADER { /** Unique id of the respective class or a magic value if not yet registered.*/ classId: u32; @@ -120,7 +65,10 @@ export function ADJUSTOBLOCK(payloadSize: usize): usize { return 1 << (32 - clz(payloadSize + HEADER_SIZE - 1)); } -/** Allocates a new object and returns a pointer to its payload. Does not fill. */ +/** + * Allocates a runtime object that might eventually make its way into GC'ed userland as a + * managed object. Implicitly prepends the common runtime header to the allocation. + */ // @ts-ignore: decorator @unsafe @inline export function ALLOCATE(payloadSize: usize): usize { @@ -138,14 +86,22 @@ function doAllocate(payloadSize: usize): usize { return changetype(header) + HEADER_SIZE; } -/** Allocates an object explicitly declared as unmanaged and returns a pointer to it. */ +/** + * Allocates an unmanaged struct-like object. This is used by the compiler as an abstraction + * to memory.allocate just in case, and is usually not used directly. + */ // @ts-ignore: decorator @unsafe @inline export function ALLOCATE_UNMANAGED(size: usize): usize { return memory.allocate(size); } -/** Reallocates an object if necessary. Returns a pointer to its (moved) payload. */ +/** + * Changes the size of a previously allocated, but not yet registered, runtime object, for + * example when a pre-allocated buffer turned out to be too small or too large. This works by + * aligning dynamic allocations to actual block size internally so in the best case REALLOCATE + * only updates payload size while in the worst case moves the object to a larger block. + */ // @ts-ignore: decorator @unsafe @inline export function REALLOCATE(ref: usize, newPayloadSize: usize): usize { @@ -195,7 +151,12 @@ function doReallocate(ref: usize, newPayloadSize: usize): usize { return ref; } -/** Registers a managed object to be tracked by the garbage collector, if present. */ +/** + * Registers a runtime object of kind T. Sets the internal class id within the runtime header + * and asserts that the object hasn't been registered yet. If a tracing garbage collector is + * present that requires initial insertion, the macro usually forwards a call to it. Once a + * runtime object has been registed (makes it into userland), it cannot be DISCARD'ed anymore. + */ // @ts-ignore: decorator @unsafe @inline export function REGISTER(ref: usize): T { @@ -211,7 +172,12 @@ function doRegister(ref: usize, classId: u32): usize { return ref; } -/** Retains a registered object. */ +/** + * Introduces a new reference to ref hold by parentRef. A tracing garbage collector will most + * likely link the runtime object within its internal graph when RETAIN is called, while a + * reference counting collector will increment the reference count. If a reference is moved + * from one parent to another, use MOVE instead. + */ // @ts-ignore: decorator @unsafe @inline export function RETAIN(ref: T, parentRef: TParent): T { @@ -234,19 +200,21 @@ function doRetain(ref: usize, parentRef: usize): void { if (GC_IMPLEMENTED) __gc_retain(changetype(ref), changetype(parentRef)); } -/** Releases a registered object. */ +/** + * Releases a reference to ref hold by parentRef. A tracing garbage collector will most likely + * ignore this by design, while a reference counting collector decrements the reference count + * and potentially frees the runtime object. + */ // @ts-ignore: decorator @unsafe @inline export function RELEASE(ref: T, parentRef: TParent): void { if (!isManaged()) ERROR("managed reference expected"); if (!isManaged()) ERROR("managed reference expected"); - // FIXME: new Array(10) has non-nullable elements but still contains `null`s. - // In the future, something like this should probably initialize with `new Ref()`s. - // if (isNullable()) { + if (isNullable()) { if (ref !== null) doRelease(changetype(ref), changetype(parentRef)); - // } else { - // doRelease(changetype(ref), changetype(parentRef)); - // } + } else { + doRelease(changetype(ref), changetype(parentRef)); + } } function doRelease(ref: usize, parentRef: usize): void { @@ -258,7 +226,13 @@ function doRelease(ref: usize, parentRef: usize): void { if (GC_IMPLEMENTED) __gc_release(changetype(ref), changetype(parentRef)); } -/** Moves a registered object from one parent to another. */ +/** + * Moves a reference to ref hold by oldParentRef to be now hold by newParentRef. This is a + * special case of first RELEASE'ing a reference on one and instantly RETAIN'ing the reference + * on another parent. A tracing garbage collector will most likely link the runtime object as if + * RETAIN'ed on the new parent only, while a reference counting collector can skip increment and + * decrement, as decrementing might otherwise involve a costly check for cyclic garbage. + */ // @ts-ignore: decorator @unsafe @inline export function MOVE(ref: T, oldParentRef: TOldParent, newParentRef: TNewParent): T { @@ -293,7 +267,10 @@ function doMove(ref: usize, oldParentRef: usize, newParentRef: usize): void { } } -/** Discards an unregistered object that turned out to be unnecessary. */ +/** + * Discards a runtime object that has not been registed and turned out to be unnecessary. + * Essentially undoes the forgoing ALLOCATE. Should be avoided where possible. + */ // @ts-ignore: decorator @unsafe @inline export function DISCARD(ref: usize): void { @@ -305,23 +282,27 @@ function doDiscard(ref: usize): void { memory.free(changetype(ref - HEADER_SIZE)); } -/** Wraps a static buffer within an array by copying its contents. */ +/** + * Makes a new array and optionally initializes is with existing data from source. Used by the + * compiler to either wrap static array data in a new instance or pre-initialize the memory used + * by an array literal. Does not zero the backing buffer! + */ // @ts-ignore: decorator @unsafe @inline -export function WRAPARRAY(buffer: ArrayBuffer): T[] { - return changetype(doWrapArray(buffer, CLASSID(), alignof())); +export function MAKEARRAY(capacity: i32, source: usize = 0): Array { + return changetype>(doMakeArray(capacity, source, CLASSID(), alignof())); } -function doWrapArray(buffer: ArrayBuffer, classId: u32, alignLog2: usize): usize { +function doMakeArray(capacity: i32, source: usize, classId: u32, alignLog2: usize): usize { var array = doRegister(doAllocate(offsetof()), classId); - var bufferSize = buffer.byteLength; - var newBuffer = doRegister(doAllocate(bufferSize), classId); - changetype(array).data = changetype(newBuffer); // links - changetype(array).dataStart = changetype(newBuffer); + var bufferSize = capacity << alignLog2; + var buffer = doRegister(doAllocate(capacity << alignLog2), CLASSID()); + changetype(array).data = changetype(buffer); // links + changetype(array).dataStart = buffer; changetype(array).dataLength = bufferSize; - store(changetype(array), (bufferSize >>> alignLog2), offsetof("length_")); - memory.copy(changetype(newBuffer), changetype(buffer), bufferSize); - return changetype(array); + store(changetype(array), capacity, offsetof("length_")); + if (source) memory.copy(buffer, source, bufferSize); + return array; } // Helpers @@ -341,6 +322,7 @@ function assertRegistered(ref: usize): void { } import { ArrayBuffer } from "./arraybuffer"; +import { E_INVALIDLENGTH } from "./util/error"; /** Maximum byte length of any buffer. */ // @ts-ignore: decorator @@ -363,7 +345,7 @@ export abstract class ArrayBufferView { dataLength: u32; protected constructor(length: i32, alignLog2: i32) { - if (length > MAX_BYTELENGTH >>> alignLog2) throw new RangeError("Invalid length"); + if (length > MAX_BYTELENGTH >>> alignLog2) throw new RangeError(E_INVALIDLENGTH); var buffer = new ArrayBuffer(length = length << alignLog2); this.data = buffer; this.dataStart = changetype(buffer); diff --git a/std/assembly/string.ts b/std/assembly/string.ts index 9d4209c6..5b755028 100644 --- a/std/assembly/string.ts +++ b/std/assembly/string.ts @@ -1,6 +1,7 @@ -import { ALLOCATE, REGISTER, HEADER, HEADER_SIZE, ArrayBufferView, RETAIN } from "./runtime"; +import { ALLOCATE, REGISTER, HEADER, HEADER_SIZE, RETAIN, MAKEARRAY, ArrayBufferView } from "./runtime"; import { MAX_SIZE_32 } from "./util/allocator"; import { compareImpl, parse, CharCode, isWhiteSpaceOrLineTerminator } from "./util/string"; +import { E_INVALIDLENGTH } from "./util/error"; @sealed export abstract class String { @@ -322,7 +323,7 @@ import { compareImpl, parse, CharCode, isWhiteSpaceOrLineTerminator } from "./ut // Most browsers can't handle strings 1 << 28 chars or longer if (count < 0 || length * count > (1 << 28)) { - throw new RangeError("Invalid count value"); + throw new RangeError(E_INVALIDLENGTH); } if (count == 0 || !length) return changetype(""); @@ -345,16 +346,16 @@ import { compareImpl, parse, CharCode, isWhiteSpaceOrLineTerminator } from "./ut split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] { assert(this !== null); - if (!limit) return new Array(); + if (!limit) return MAKEARRAY(0); if (separator === null) return [this]; var length: isize = this.length; var sepLen: isize = separator.length; if (limit < 0) limit = i32.MAX_VALUE; if (!sepLen) { - if (!length) return new Array(); + if (!length) return MAKEARRAY(0); // split by chars length = min(length, limit); - let result = new Array(length); + let result = MAKEARRAY(length); let resultStart = changetype(result).dataStart; for (let i: isize = 0; i < length; ++i) { let charStr = REGISTER(ALLOCATE(2)); @@ -371,11 +372,11 @@ import { compareImpl, parse, CharCode, isWhiteSpaceOrLineTerminator } from "./ut } return result; } else if (!length) { - let result = new Array(1); + let result = MAKEARRAY(1); store(changetype(result).dataStart, ""); // no need to register/link return result; } - var result = new Array(); + var result = MAKEARRAY(0); var end = 0, start = 0, i = 0; while ((end = this.indexOf(separator!, start)) != -1) { let len = end - start; @@ -390,7 +391,7 @@ import { compareImpl, parse, CharCode, isWhiteSpaceOrLineTerminator } from "./ut start = end + sepLen; } if (!start) { - let result = new Array(1); + let result = MAKEARRAY(1); unchecked(result[0] = this); return result; } diff --git a/std/assembly/typedarray.ts b/std/assembly/typedarray.ts index a28f867c..6c450fb1 100644 --- a/std/assembly/typedarray.ts +++ b/std/assembly/typedarray.ts @@ -1,5 +1,6 @@ import { ALLOCATE, REGISTER, ArrayBufferView } from "./runtime"; import { COMPARATOR, SORT as SORT_IMPL } from "./util/sort"; +import { E_INDEXOUTOFRANGE } from "./util/error"; export class Int8Array extends ArrayBufferView { [key: number]: i8; @@ -22,13 +23,13 @@ export class Int8Array extends ArrayBufferView { @operator("[]") // unchecked is built-in private __get(index: i32): i8 { - if (index >= this.dataLength) throw new Error("Offset out of bounds"); + if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE); return load(this.dataStart + index); } @operator("[]=") // unchecked is built-in private __set(index: i32, value: native): void { - if (index >= this.dataLength) throw new Error("Offset out of bounds"); + if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + index, value); } @@ -104,13 +105,13 @@ export class Uint8Array extends ArrayBufferView { @operator("[]") // unchecked is built-in private __get(index: i32): u8 { - if (index >= this.dataLength) throw new Error("Offset out of bounds"); + if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE); return load(this.dataStart + index); } @operator("[]=") // unchecked is built-in private __set(index: i32, value: native): void { - if (index >= this.dataLength) throw new Error("Offset out of bounds"); + if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + index, value); } @@ -186,13 +187,13 @@ export class Uint8ClampedArray extends ArrayBufferView { @operator("[]") // unchecked is built-in private __get(index: i32): u8 { - if (index >= this.dataLength) throw new Error("Offset out of bounds"); + if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE); return load(this.dataStart + index); } @operator("[]=") // unchecked is built-in private __set(index: i32, value: native): void { - if (index >= this.dataLength) throw new Error("Offset out of bounds"); + if (index >= this.dataLength) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + index, ~(value >> 31) & (((255 - value) >> 31) | value)); } @@ -268,13 +269,13 @@ export class Int16Array extends ArrayBufferView { @operator("[]") // unchecked is built-in private __get(index: i32): i16 { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); return load(this.dataStart + (index << alignof())); } @operator("[]=") // unchecked is built-in private __set(index: i32, value: native): void { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + (index << alignof()), value); } @@ -350,13 +351,13 @@ export class Uint16Array extends ArrayBufferView { @operator("[]") // unchecked is built-in private __get(index: i32): u16 { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); return load(this.dataStart + (index << alignof())); } @operator("[]=") // unchecked is built-in private __set(index: i32, value: native): void { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + (index << alignof()), value); } @@ -432,13 +433,13 @@ export class Int32Array extends ArrayBufferView { @operator("[]") // unchecked is built-in private __get(index: i32): i32 { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); return load(this.dataStart + (index << alignof())); } @operator("[]=") // unchecked is built-in private __set(index: i32, value: i32): void { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + (index << alignof()), value); } @@ -514,13 +515,13 @@ export class Uint32Array extends ArrayBufferView { @operator("[]") // unchecked is built-in private __get(index: i32): u32 { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); return load(this.dataStart + (index << alignof())); } @operator("[]=") // unchecked is built-in private __set(index: i32, value: u32): void { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + (index << alignof()), value); } @@ -596,13 +597,13 @@ export class Int64Array extends ArrayBufferView { @operator("[]") // unchecked is built-in private __get(index: i32): i64 { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); return load(this.dataStart + (index << alignof())); } @operator("[]=") // unchecked is built-in private __set(index: i32, value: i64): void { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + (index << alignof()), value); } @@ -678,13 +679,13 @@ export class Uint64Array extends ArrayBufferView { @operator("[]") // unchecked is built-in private __get(index: i32): u64 { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); return load(this.dataStart + (index << alignof())); } @operator("[]=") // unchecked is built-in private __set(index: i32, value: u64): void { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + (index << alignof()), value); } @@ -760,13 +761,13 @@ export class Float32Array extends ArrayBufferView { @operator("[]") // unchecked is built-in private __get(index: i32): f32 { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); return load(this.dataStart + (index << alignof())); } @operator("[]=") // unchecked is built-in private __set(index: i32, value: f32): void { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + (index << alignof()), value); } @@ -842,13 +843,13 @@ export class Float64Array extends ArrayBufferView { @operator("[]") // unchecked is built-in private __get(index: i32): f64 { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); return load(this.dataStart + (index << alignof())); } @operator("[]=") // unchecked is built-in private __set(index: i32, value: f64): void { - if (index >= this.dataLength >>> alignof()) throw new Error("Offset out of bounds"); + if (index >= this.dataLength >>> alignof()) throw new RangeError(E_INDEXOUTOFRANGE); store(this.dataStart + (index << alignof()), value); } diff --git a/std/assembly/util/error.ts b/std/assembly/util/error.ts new file mode 100644 index 00000000..c9c1dbc1 --- /dev/null +++ b/std/assembly/util/error.ts @@ -0,0 +1,18 @@ +// Common error messages for use accross the standard library. Keeping error messages compact +// and reusing them where possible ensures minimal static data in binaries. + +// @ts-ignore: decorator +@lazy @inline +export const E_INDEXOUTOFRANGE: string = "Index out of range"; + +// @ts-ignore: decorator +@lazy @inline +export const E_INVALIDLENGTH: string = "Invalid length"; + +// @ts-ignore: decorator +@lazy @inline +export const E_EMPTYARRAY: string = "Array is empty"; + +// @ts-ignore: decorator +@lazy @inline +export const E_HOLEYARRAY: string = "Element type must be nullable if array is holey"; diff --git a/std/portable/index.d.ts b/std/portable/index.d.ts index 3e54395f..ebb098ab 100644 --- a/std/portable/index.d.ts +++ b/std/portable/index.d.ts @@ -376,6 +376,7 @@ declare class DataView { declare class Array { static isArray(value: any): value is Array; + static create(capacity?: i32): Array; [key: number]: T; length: i32; diff --git a/std/portable/index.js b/std/portable/index.js index 00aa35e1..06c0a4ad 100644 --- a/std/portable/index.js +++ b/std/portable/index.js @@ -229,7 +229,13 @@ globalScope["isArrayLike"] = function isArrayLike(expr) { && typeof expr.length === 'number' && expr.length >= 0 && Math.trunc(expr.length) === expr.length; -} +}; + +Array.create = function(capacity) { + var arr = new Array(capacity); + arr.length = 0; + return arr; +}; globalScope["isDefined"] = function isDefined(expr) { return typeof expr !== "undefined"; diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 959044e0..1e564d35 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -106,7 +106,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -120,7 +120,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index 4dbbfc35..c711af9b 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -141,7 +141,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -156,7 +156,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index 876ae3cd..496d7c4d 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -116,7 +116,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -130,7 +130,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index 168ebc1c..9e469b6b 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -151,7 +151,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -166,7 +166,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index b4620847..32119011 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -131,7 +131,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -145,7 +145,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index a7da4e1d..b9576460 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -193,7 +193,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -208,7 +208,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 68eddd6b..1ac3e8f3 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -85,7 +85,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -99,7 +99,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index 5ffa1d6c..801c6ebf 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -143,7 +143,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -158,7 +158,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index f1a4912e..b443fc1c 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -131,7 +131,7 @@ if i32.const 0 i32.const 48 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -145,7 +145,7 @@ if i32.const 0 i32.const 48 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 09c3f4f9..b31601b2 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -407,7 +407,7 @@ if i32.const 0 i32.const 48 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -422,7 +422,7 @@ if i32.const 0 i32.const 48 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/new-without-allocator.untouched.wat b/tests/compiler/new-without-allocator.untouched.wat index 886f4e0f..affb6fe1 100644 --- a/tests/compiler/new-without-allocator.untouched.wat +++ b/tests/compiler/new-without-allocator.untouched.wat @@ -57,7 +57,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -72,7 +72,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/nonNullAssertion.optimized.wat b/tests/compiler/nonNullAssertion.optimized.wat index 286ef2a7..ef911b75 100644 --- a/tests/compiler/nonNullAssertion.optimized.wat +++ b/tests/compiler/nonNullAssertion.optimized.wat @@ -13,24 +13,56 @@ (export "table" (table $0)) (export "testVar" (func $nonNullAssertion/testVar)) (export "testObj" (func $nonNullAssertion/testObj)) - (export "testProp" (func $nonNullAssertion/testObj)) + (export "testProp" (func $nonNullAssertion/testProp)) (export "testArr" (func $nonNullAssertion/testArr)) - (export "testElem" (func $nonNullAssertion/testArr)) + (export "testElem" (func $nonNullAssertion/testElem)) (export "testAll" (func $nonNullAssertion/testAll)) (export "testAll2" (func $nonNullAssertion/testAll)) (export "testFn" (func $nonNullAssertion/testFn)) - (export "testFn2" (func $nonNullAssertion/testFn)) - (export "testRet" (func $nonNullAssertion/testFn)) + (export "testFn2" (func $nonNullAssertion/testFn2)) + (export "testRet" (func $nonNullAssertion/testRet)) (export "testObjFn" (func $nonNullAssertion/testObjFn)) - (export "testObjRet" (func $nonNullAssertion/testObjFn)) + (export "testObjRet" (func $nonNullAssertion/testObjRet)) (func $nonNullAssertion/testVar (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 + i32.eqz + if + unreachable + end + local.get $0 ) (func $nonNullAssertion/testObj (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + unreachable + end local.get $0 i32.load ) - (func $~lib/array/Array#__get (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $nonNullAssertion/testProp (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load + local.tee $0 + i32.eqz + if + unreachable + end + local.get $0 + ) + (func $~lib/array/Array#__get (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 0 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 0 + i32.const 16 + i32.const 97 + i32.const 45 + call $~lib/env/abort + unreachable + end i32.const 0 local.get $0 i32.load offset=8 @@ -40,7 +72,7 @@ if i32.const 0 i32.const 16 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -49,29 +81,116 @@ i32.load offset=4 i32.load ) - (func $nonNullAssertion/testArr (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $nonNullAssertion/testArr (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + unreachable + end local.get $0 call $~lib/array/Array#__get ) - (func $nonNullAssertion/testAll (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#__get (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 0 local.get $0 - call $~lib/array/Array#__get + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 0 + i32.const 16 + i32.const 100 + i32.const 61 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.load offset=4 i32.load ) - (func $nonNullAssertion/testFn (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $nonNullAssertion/testElem (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + call $~lib/array/Array#__get + local.tee $0 + i32.eqz + if + unreachable + end + local.get $0 + ) + (func $nonNullAssertion/testAll (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + unreachable + end + local.get $0 + call $~lib/array/Array#__get + local.tee $0 + i32.eqz + if + unreachable + end + local.get $0 + i32.load + local.tee $0 + i32.eqz + if + unreachable + end + local.get $0 + ) + (func $nonNullAssertion/testFn (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 global.set $~lib/argc local.get $0 call_indirect (type $FUNCSIG$i) ) - (func $nonNullAssertion/testObjFn (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $nonNullAssertion/testFn2 (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + unreachable + end + i32.const 0 + global.set $~lib/argc + local.get $0 + call_indirect (type $FUNCSIG$i) + ) + (func $nonNullAssertion/testRet (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 0 + global.set $~lib/argc + local.get $0 + call_indirect (type $FUNCSIG$i) + local.tee $0 + i32.eqz + if + unreachable + end + local.get $0 + ) + (func $nonNullAssertion/testObjFn (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 global.set $~lib/argc local.get $0 i32.load offset=4 call_indirect (type $FUNCSIG$i) ) - (func $null (; 8 ;) (type $FUNCSIG$v) + (func $nonNullAssertion/testObjRet (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 0 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + call_indirect (type $FUNCSIG$i) + local.tee $0 + i32.eqz + if + unreachable + end + local.get $0 + ) + (func $null (; 14 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/nonNullAssertion.ts b/tests/compiler/nonNullAssertion.ts index 73aa8be8..6e4eed6d 100644 --- a/tests/compiler/nonNullAssertion.ts +++ b/tests/compiler/nonNullAssertion.ts @@ -30,7 +30,7 @@ export function testAll(foo: Array | null): Foo { } export function testAll2(foo: Array | null): Foo { - return foo!![0]!!!.bar!!!!; + return foo!![0]!!.bar!!; // 3x AS225: Expression is never 'null' } export function testFn(fn: (() => Foo | null) | null): Foo | null { diff --git a/tests/compiler/nonNullAssertion.untouched.wat b/tests/compiler/nonNullAssertion.untouched.wat index 05c15e4d..9bf07bb8 100644 --- a/tests/compiler/nonNullAssertion.untouched.wat +++ b/tests/compiler/nonNullAssertion.untouched.wat @@ -29,17 +29,50 @@ (export "testObjFn" (func $nonNullAssertion/testObjFn)) (export "testObjRet" (func $nonNullAssertion/testObjRet)) (func $nonNullAssertion/testVar (; 1 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end ) (func $nonNullAssertion/testObj (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end i32.load ) (func $nonNullAssertion/testProp (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 i32.load + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end ) (func $~lib/array/Array#__get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 0 + i32.const 16 + i32.const 97 + i32.const 45 + call $~lib/env/abort + unreachable + end local.get $1 local.get $0 i32.load offset=8 @@ -49,7 +82,7 @@ if i32.const 0 i32.const 16 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -63,7 +96,14 @@ i32.load ) (func $nonNullAssertion/testArr (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end i32.const 0 call $~lib/array/Array#__get ) @@ -77,7 +117,7 @@ if i32.const 0 i32.const 16 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -91,21 +131,66 @@ i32.load ) (func $nonNullAssertion/testElem (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 i32.const 0 call $~lib/array/Array#__get + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end ) (func $nonNullAssertion/testAll (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end i32.const 0 call $~lib/array/Array#__get + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end i32.load + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end ) (func $nonNullAssertion/testAll2 (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) local.get $0 + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end i32.const 0 call $~lib/array/Array#__get + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end i32.load + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end ) (func $nonNullAssertion/testFn (; 10 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 @@ -115,18 +200,34 @@ ) (func $nonNullAssertion/testFn2 (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) local.get $0 - local.set $1 + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end + local.set $2 i32.const 0 global.set $~lib/argc - local.get $1 + local.get $2 call_indirect (type $FUNCSIG$i) ) (func $nonNullAssertion/testRet (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 0 - global.set $~lib/argc - local.get $0 - call_indirect (type $FUNCSIG$i) + (local $1 i32) + block (result i32) + i32.const 0 + global.set $~lib/argc + local.get $0 + call_indirect (type $FUNCSIG$i) + end + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end ) (func $nonNullAssertion/testObjFn (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) i32.const 0 @@ -136,11 +237,20 @@ call_indirect (type $FUNCSIG$i) ) (func $nonNullAssertion/testObjRet (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - i32.const 0 - global.set $~lib/argc - local.get $0 - i32.load offset=4 - call_indirect (type $FUNCSIG$i) + (local $1 i32) + block (result i32) + i32.const 0 + global.set $~lib/argc + local.get $0 + i32.load offset=4 + call_indirect (type $FUNCSIG$i) + end + local.tee $1 + if (result i32) + local.get $1 + else + unreachable + end ) (func $null (; 15 ;) (type $FUNCSIG$v) ) diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 804baca1..c6e1868b 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -302,7 +302,7 @@ if i32.const 0 i32.const 464 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -316,7 +316,7 @@ if i32.const 0 i32.const 464 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -2427,7 +2427,7 @@ if i32.const 0 i32.const 1648 - i32.const 186 + i32.const 187 i32.const 4 call $~lib/env/abort unreachable diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index f63eeaca..63be6f32 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -399,7 +399,7 @@ if i32.const 0 i32.const 464 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -414,7 +414,7 @@ if i32.const 0 i32.const 464 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -3418,7 +3418,7 @@ if i32.const 0 i32.const 1648 - i32.const 186 + i32.const 187 i32.const 4 call $~lib/env/abort unreachable diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index c2f6e76c..4cfb97f2 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -106,7 +106,7 @@ if i32.const 0 i32.const 48 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -120,7 +120,7 @@ if i32.const 0 i32.const 48 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index 20f64798..04b5ce34 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -143,7 +143,7 @@ if i32.const 0 i32.const 48 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -158,7 +158,7 @@ if i32.const 0 i32.const 48 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index a7a6a8bb..14c0d23d 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -100,7 +100,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -114,7 +114,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index cd804e59..7fb60b50 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -150,7 +150,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -165,7 +165,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index 2cc5e90c..2b2dfbe0 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -20,6 +20,18 @@ (export "stringArrayArrayPropertyAccess" (func $std/array-access/stringArrayArrayPropertyAccess)) (export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall)) (func $~lib/array/Array>#__get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 0 + i32.const 16 + i32.const 97 + i32.const 45 + call $~lib/env/abort + unreachable + end local.get $1 local.get $0 i32.load offset=8 @@ -29,7 +41,7 @@ if i32.const 0 i32.const 16 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -42,14 +54,34 @@ i32.add i32.load ) - (func $std/array-access/i32ArrayArrayElementAccess (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#__get (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + i32.const 1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 0 + i32.const 16 + i32.const 100 + i32.const 61 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 4 + i32.add + i32.load + ) + (func $std/array-access/i32ArrayArrayElementAccess (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array>#__get - i32.const 1 - call $~lib/array/Array>#__get + call $~lib/array/Array#__get ) - (func $std/array-access/stringArrayPropertyAccess (; 3 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayPropertyAccess (; 4 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array>#__get @@ -59,7 +91,7 @@ i32.const 1 i32.shr_u ) - (func $~lib/util/string/compareImpl (; 4 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 5 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) i32.const 56 @@ -101,7 +133,7 @@ end local.get $4 ) - (func $~lib/string/String#startsWith (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#startsWith (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -110,7 +142,7 @@ if i32.const 0 i32.const 64 - i32.const 161 + i32.const 162 i32.const 4 call $~lib/env/abort unreachable @@ -148,13 +180,13 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $std/array-access/stringArrayMethodCall (; 6 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayMethodCall (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array>#__get call $~lib/string/String#startsWith ) - (func $std/array-access/stringArrayArrayPropertyAccess (; 7 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayArrayPropertyAccess (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array>#__get @@ -166,7 +198,7 @@ i32.const 1 i32.shr_u ) - (func $std/array-access/stringArrayArrayMethodCall (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-access/stringArrayArrayMethodCall (; 9 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array>#__get @@ -174,7 +206,7 @@ call $~lib/array/Array>#__get call $~lib/string/String#startsWith ) - (func $null (; 9 ;) (type $FUNCSIG$v) + (func $null (; 10 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index 5d8df860..b70d96aa 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -25,6 +25,18 @@ (export "stringArrayArrayPropertyAccess" (func $std/array-access/stringArrayArrayPropertyAccess)) (export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall)) (func $~lib/array/Array>#__get (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 0 + i32.const 16 + i32.const 97 + i32.const 45 + call $~lib/env/abort + unreachable + end local.get $1 local.get $0 i32.load offset=8 @@ -34,7 +46,7 @@ if i32.const 0 i32.const 16 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -57,7 +69,7 @@ if i32.const 0 i32.const 16 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -78,6 +90,18 @@ call $~lib/array/Array#__get ) (func $~lib/array/Array#__get (; 4 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 0 + i32.const 16 + i32.const 97 + i32.const 45 + call $~lib/env/abort + unreachable + end local.get $1 local.get $0 i32.load offset=8 @@ -87,7 +111,7 @@ if i32.const 0 i32.const 16 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -181,7 +205,7 @@ if i32.const 0 i32.const 64 - i32.const 161 + i32.const 162 i32.const 4 call $~lib/env/abort unreachable @@ -243,6 +267,18 @@ call $~lib/string/String#startsWith ) (func $~lib/array/Array>#__get (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 0 + i32.const 16 + i32.const 97 + i32.const 45 + call $~lib/env/abort + unreachable + end local.get $1 local.get $0 i32.load offset=8 @@ -252,7 +288,7 @@ if i32.const 0 i32.const 16 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index 00f7cf06..c5076e08 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -4,7 +4,6 @@ (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) (type $FUNCSIG$v (func)) - (type $FUNCSIG$vii (func (param i32 i32))) (type $FUNCSIG$i (func (result i32))) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -17,7 +16,6 @@ (data (i32.const 184) "\01") (data (i32.const 192) "\04\00\00\00\10\00\00\00\c0\00\00\00\c0") (data (i32.const 216) "\03\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s") - (data (i32.const 256) "\03\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 200)) @@ -39,7 +37,7 @@ if i32.const 0 i32.const 104 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -60,7 +58,7 @@ if i32.const 0 i32.const 104 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -156,225 +154,14 @@ i32.const 8 i32.add ) - (func $~lib/memory/memory.fill (; 5 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.eqz - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 1 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 2 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 1 - i32.add - i32.const 0 - i32.store8 - local.get $0 - i32.const 2 - i32.add - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 2 - i32.sub - i32.const 0 - i32.store8 - local.get $2 - i32.const 3 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 6 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 3 - i32.add - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub - i32.const 0 - i32.store8 - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $1 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.tee $2 - i32.sub - local.set $1 - local.get $0 - local.get $2 - i32.add - local.tee $0 - i32.const 0 - i32.store - local.get $1 - i32.const -4 - i32.and - local.tee $1 - local.get $0 - i32.add - i32.const 4 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 8 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 4 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 8 - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 12 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 8 - i32.sub - i32.const 0 - i32.store - local.get $1 - i32.const 24 - i32.le_u - br_if $~lib/util/memory/memset|inlined.0 - local.get $0 - i32.const 12 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 16 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 20 - i32.add - i32.const 0 - i32.store - local.get $0 - i32.const 24 - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.add - local.tee $2 - i32.const 28 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 24 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 20 - i32.sub - i32.const 0 - i32.store - local.get $2 - i32.const 16 - i32.sub - i32.const 0 - i32.store - local.get $0 - i32.const 4 - i32.and - i32.const 24 - i32.add - local.tee $2 - local.get $0 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.sub - local.set $1 - loop $continue|0 - local.get $1 - i32.const 32 - i32.ge_u - if - local.get $0 - i64.const 0 - i64.store - local.get $0 - i32.const 8 - i32.add - i64.const 0 - i64.store - local.get $0 - i32.const 16 - i32.add - i64.const 0 - i64.store - local.get $0 - i32.const 24 - i32.add - i64.const 0 - i64.store - local.get $1 - i32.const 32 - i32.sub - local.set $1 - local.get $0 - i32.const 32 - i32.add - local.set $0 - br $continue|0 - end - end - end - ) - (func $~lib/runtime/assertUnregistered (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/assertUnregistered (; 5 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 - i32.const 304 + i32.const 256 i32.le_u if i32.const 0 i32.const 224 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -388,13 +175,13 @@ if i32.const 0 i32.const 224 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/runtime/doRegister (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/doRegister (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 call $~lib/runtime/assertUnregistered local.get $0 @@ -404,91 +191,46 @@ i32.store local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 8 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 1073741816 - i32.gt_u - if - i32.const 0 - i32.const 264 - i32.const 24 - i32.const 43 - call $~lib/env/abort - unreachable - end - local.get $0 - call $~lib/runtime/doAllocate - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - call $~lib/runtime/doRegister - ) - (func $~lib/runtime/ArrayBufferView#constructor (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/doMakeArray (; 7 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - i32.const 3 - i32.const 1073741816 - local.get $1 - i32.shr_u - i32.gt_u - if - i32.const 0 - i32.const 224 - i32.const 251 - i32.const 57 - call $~lib/env/abort - unreachable - end + i32.const 16 + call $~lib/runtime/doAllocate + local.get $0 + call $~lib/runtime/doRegister + local.tee $0 i32.const 3 local.get $1 i32.shl + local.tee $1 + call $~lib/runtime/doAllocate + i32.const 1 + call $~lib/runtime/doRegister local.tee $2 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.eqz - if - i32.const 12 - call $~lib/runtime/doAllocate - i32.const 5 - call $~lib/runtime/doRegister - local.set $0 - end - local.get $0 - i32.const 0 i32.store local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 local.get $2 + i32.store offset=4 + local.get $0 + local.get $1 i32.store offset=8 local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 ) - (func $std/array-literal/Ref#constructor (; 10 ;) (type $FUNCSIG$i) (result i32) + (func $std/array-literal/Ref#constructor (; 8 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/runtime/doAllocate - i32.const 6 + i32.const 5 call $~lib/runtime/doRegister ) - (func $std/array-literal/RefWithCtor#constructor (; 11 ;) (type $FUNCSIG$i) (result i32) + (func $std/array-literal/RefWithCtor#constructor (; 9 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/runtime/doAllocate - i32.const 8 + i32.const 7 call $~lib/runtime/doRegister ) - (func $start:std/array-literal (; 12 ;) (type $FUNCSIG$v) + (func $start:std/array-literal (; 10 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -600,23 +342,14 @@ call $~lib/env/abort unreachable end - i32.const 304 + i32.const 256 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset - i32.const 16 - call $~lib/runtime/doAllocate i32.const 2 - call $~lib/runtime/doRegister i32.const 0 - call $~lib/runtime/ArrayBufferView#constructor + call $~lib/runtime/doMakeArray local.tee $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 3 - i32.store offset=12 - local.get $0 i32.load offset=4 local.tee $1 global.get $std/array-literal/i @@ -690,19 +423,10 @@ end i32.const 0 global.set $std/array-literal/i - i32.const 16 - call $~lib/runtime/doAllocate i32.const 4 - call $~lib/runtime/doRegister i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor + call $~lib/runtime/doMakeArray local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 3 - i32.store offset=12 - local.get $1 i32.load offset=4 local.tee $0 global.get $std/array-literal/i @@ -774,19 +498,10 @@ call $~lib/env/abort unreachable end - i32.const 16 - call $~lib/runtime/doAllocate - i32.const 7 - call $~lib/runtime/doRegister + i32.const 6 i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor + call $~lib/runtime/doMakeArray local.tee $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.const 3 - i32.store offset=12 - local.get $0 i32.load offset=4 local.tee $1 call $std/array-literal/Ref#constructor @@ -811,19 +526,10 @@ call $~lib/env/abort unreachable end - i32.const 16 - call $~lib/runtime/doAllocate - i32.const 9 - call $~lib/runtime/doRegister + i32.const 8 i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor + call $~lib/runtime/doMakeArray local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 3 - i32.store offset=12 - local.get $1 i32.load offset=4 local.tee $0 call $std/array-literal/RefWithCtor#constructor @@ -849,10 +555,10 @@ unreachable end ) - (func $start (; 13 ;) (type $FUNCSIG$v) + (func $start (; 11 ;) (type $FUNCSIG$v) call $start:std/array-literal ) - (func $null (; 14 ;) (type $FUNCSIG$v) + (func $null (; 12 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index ceb84956..6f19a66e 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -2,9 +2,9 @@ (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$v (func)) (import "env" "abort" (func $~lib/env/abort (param i32 i32 i32 i32))) (memory $0 1) @@ -17,7 +17,6 @@ (data (i32.const 184) "\01\00\00\00\00\00\00\00") (data (i32.const 192) "\04\00\00\00\10\00\00\00\c0\00\00\00\c0\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 216) "\03\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00u\00n\00t\00i\00m\00e\00.\00t\00s\00") - (data (i32.const 256) "\03\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $std/array-literal/staticArrayI8 i32 (i32.const 32)) @@ -27,7 +26,6 @@ (global $std/array-literal/staticArrayI32 i32 (i32.const 168)) (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 200)) (global $std/array-literal/i (mut i32) (i32.const 0)) - (global $~lib/runtime/MAX_BYTELENGTH i32 (i32.const 1073741816)) (global $~lib/allocator/arena/startOffset (mut i32) (i32.const 0)) (global $~lib/allocator/arena/offset (mut i32) (i32.const 0)) (global $~lib/ASC_NO_ASSERT i32 (i32.const 0)) @@ -35,7 +33,7 @@ (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) - (global $~lib/memory/HEAP_BASE i32 (i32.const 304)) + (global $~lib/memory/HEAP_BASE i32 (i32.const 256)) (export "memory" (memory $0)) (export "table" (table $0)) (start $start) @@ -53,7 +51,7 @@ if i32.const 0 i32.const 104 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -80,7 +78,7 @@ if i32.const 0 i32.const 104 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -206,264 +204,7 @@ global.get $~lib/runtime/HEADER_SIZE i32.add ) - (func $~lib/memory/memory.fill (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - block $~lib/util/memory/memset|inlined.0 - local.get $2 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 1 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 2 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 1 - i32.add - local.get $1 - i32.store8 - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 2 - i32.sub - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 3 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 3 - i32.add - local.get $1 - i32.store8 - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $1 - i32.store8 - local.get $2 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.and - local.set $5 - local.get $0 - local.get $5 - i32.add - local.set $0 - local.get $2 - local.get $5 - i32.sub - local.set $2 - local.get $2 - i32.const -4 - i32.and - local.set $2 - i32.const -1 - i32.const 255 - i32.div_u - local.get $1 - i32.const 255 - i32.and - i32.mul - local.set $4 - local.get $0 - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 4 - i32.sub - local.get $4 - i32.store - local.get $2 - i32.const 8 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 12 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 8 - i32.sub - local.get $4 - i32.store - local.get $2 - i32.const 24 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 16 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 20 - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 24 - i32.add - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 28 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 24 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 20 - i32.sub - local.get $4 - i32.store - local.get $0 - local.get $2 - i32.add - i32.const 16 - i32.sub - local.get $4 - i32.store - i32.const 24 - local.get $0 - i32.const 4 - i32.and - i32.add - local.set $5 - local.get $0 - local.get $5 - i32.add - local.set $0 - local.get $2 - local.get $5 - i32.sub - local.set $2 - local.get $4 - i64.extend_i32_u - local.get $4 - i64.extend_i32_u - i64.const 32 - i64.shl - i64.or - local.set $6 - block $break|0 - loop $continue|0 - local.get $2 - i32.const 32 - i32.ge_u - if - block - local.get $0 - local.get $6 - i64.store - local.get $0 - i32.const 8 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 16 - i32.add - local.get $6 - i64.store - local.get $0 - i32.const 24 - i32.add - local.get $6 - i64.store - local.get $2 - i32.const 32 - i32.sub - local.set $2 - local.get $0 - i32.const 32 - i32.add - local.set $0 - end - br $continue|0 - end - end - end - end - ) - (func $~lib/runtime/assertUnregistered (; 9 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/assertUnregistered (; 8 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 global.get $~lib/memory/HEAP_BASE i32.gt_u @@ -471,7 +212,7 @@ if i32.const 0 i32.const 224 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -486,13 +227,13 @@ if i32.const 0 i32.const 224 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable end ) - (func $~lib/runtime/doRegister (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/doRegister (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 call $~lib/runtime/assertUnregistered local.get $0 @@ -502,166 +243,1486 @@ i32.store local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (; 11 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - global.get $~lib/runtime/MAX_BYTELENGTH - i32.gt_u - if - i32.const 0 - i32.const 264 - i32.const 24 - i32.const 43 - call $~lib/env/abort - unreachable - end - block $~lib/runtime/ALLOCATE|inlined.0 (result i32) - local.get $1 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate - end - local.set $3 - local.get $3 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - block $~lib/runtime/REGISTER|inlined.0 (result i32) - local.get $3 - local.set $2 - local.get $2 - i32.const 1 - call $~lib/runtime/doRegister - end - ) - (func $~lib/runtime/ArrayBufferView#constructor (; 12 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/memory/memcpy (; 10 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - local.get $1 - global.get $~lib/runtime/MAX_BYTELENGTH - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 0 - i32.const 224 - i32.const 251 - i32.const 57 - call $~lib/env/abort - unreachable - end - i32.const 0 - local.get $1 - local.get $2 - i32.shl - local.tee $1 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - block (result i32) - local.get $0 - i32.eqz - if - block $~lib/runtime/REGISTER|inlined.0 (result i32) - block $~lib/runtime/ALLOCATE|inlined.1 (result i32) - i32.const 12 - local.set $4 - local.get $4 - call $~lib/runtime/doAllocate - end - local.set $4 - local.get $4 - i32.const 5 - call $~lib/runtime/doRegister + (local $5 i32) + block $break|0 + loop $continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + local.get $2 + end + if + block + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + end + br $continue|0 end - local.set $0 end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 end - local.get $3 - i32.store local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - ) - (func $~lib/array/Array#constructor (; 13 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.2 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate + i32.const 3 + i32.and + i32.const 0 + i32.eq + if + block $break|1 + loop $continue|1 + local.get $2 + i32.const 16 + i32.ge_u + if + block + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + end + br $continue|1 + end + end end - local.set $2 local.get $2 - i32.const 2 - call $~lib/runtime/doRegister - end - local.get $1 - i32.const 0 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#constructor (; 14 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.3 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 end - local.set $2 local.get $2 i32.const 4 - call $~lib/runtime/doRegister + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + end + return end - local.get $1 + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + block + local.get $1 + i32.load + local.set $3 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + block $break|3 + loop $continue|3 + local.get $2 + i32.const 17 + i32.ge_u + if + block + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + end + br $continue|3 + end + end + end + br $break|2 + unreachable + end + unreachable + end + block + local.get $1 + i32.load + local.set $3 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + block $break|4 + loop $continue|4 + local.get $2 + i32.const 18 + i32.ge_u + if + block + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + end + br $continue|4 + end + end + end + br $break|2 + unreachable + end + unreachable + end + block + local.get $1 + i32.load + local.set $3 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block $break|5 + loop $continue|5 + local.get $2 + i32.const 19 + i32.ge_u + if + block + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + end + br $continue|5 + end + end + end + br $break|2 + unreachable + end + unreachable + end + end + local.get $2 + i32.const 16 + i32.and + if + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + end + local.get $2 i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 + i32.and + if + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + end ) - (func $std/array-literal/Ref#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/memory/memory.copy (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $1 + local.get $2 + i32.add + local.get $0 + i32.le_u + local.tee $5 + if (result i32) + local.get $5 + else + local.get $0 + local.get $2 + i32.add + local.get $1 + i32.le_u + end + if + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + block $break|0 + loop $continue|0 + local.get $0 + i32.const 7 + i32.and + if + block + local.get $2 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + end + br $continue|0 + end + end + end + block $break|1 + loop $continue|1 + local.get $2 + i32.const 8 + i32.ge_u + if + block + local.get $0 + local.get $1 + i64.load + i64.store + local.get $2 + i32.const 8 + i32.sub + local.set $2 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + br $continue|1 + end + end + end + end + block $break|2 + loop $continue|2 + local.get $2 + if + block + block (result i32) + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + end + block (result i32) + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + end + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + end + br $continue|2 + end + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + block $break|3 + loop $continue|3 + local.get $0 + local.get $2 + i32.add + i32.const 7 + i32.and + if + block + local.get $2 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + end + br $continue|3 + end + end + end + block $break|4 + loop $continue|4 + local.get $2 + i32.const 8 + i32.ge_u + if + block + local.get $2 + i32.const 8 + i32.sub + local.set $2 + local.get $0 + local.get $2 + i32.add + local.get $1 + local.get $2 + i32.add + i64.load + i64.store + end + br $continue|4 + end + end + end + end + block $break|5 + loop $continue|5 + local.get $2 + if + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $continue|5 + end + end + end + end + end + ) + (func $~lib/runtime/doMakeArray (; 12 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + i32.const 16 + call $~lib/runtime/doAllocate + local.get $2 + call $~lib/runtime/doRegister + local.set $4 + local.get $0 + local.get $3 + i32.shl + local.set $5 + local.get $0 + local.get $3 + i32.shl + call $~lib/runtime/doAllocate + i32.const 1 + call $~lib/runtime/doRegister + local.set $6 + local.get $4 + local.get $6 + i32.store + local.get $4 + local.get $6 + i32.store offset=4 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $0 + i32.store offset=12 + local.get $1 + if + local.get $6 + local.get $1 + local.get $5 + call $~lib/memory/memory.copy + end + local.get $4 + ) + (func $std/array-literal/Ref#constructor (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz if block $~lib/runtime/REGISTER|inlined.0 (result i32) - block $~lib/runtime/ALLOCATE|inlined.4 (result i32) + block $~lib/runtime/ALLOCATE|inlined.0 (result i32) i32.const 0 local.set $1 local.get $1 @@ -669,53 +1730,24 @@ end local.set $1 local.get $1 - i32.const 6 + i32.const 5 call $~lib/runtime/doRegister end local.set $0 end local.get $0 ) - (func $~lib/array/Array#constructor (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.5 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate - end - local.set $2 - local.get $2 - i32.const 7 - call $~lib/runtime/doRegister - end - local.get $1 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#get:length (; 17 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $std/array-literal/RefWithCtor#constructor (; 18 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array-literal/RefWithCtor#constructor (; 15 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.eqz if block $~lib/runtime/REGISTER|inlined.0 (result i32) - block $~lib/runtime/ALLOCATE|inlined.6 (result i32) + block $~lib/runtime/ALLOCATE|inlined.1 (result i32) i32.const 0 local.set $1 local.get $1 @@ -723,49 +1755,22 @@ end local.set $1 local.get $1 - i32.const 8 + i32.const 7 call $~lib/runtime/doRegister end local.set $0 end local.get $0 ) - (func $~lib/array/Array#constructor (; 19 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.7 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate - end - local.set $2 - local.get $2 - i32.const 9 - call $~lib/runtime/doRegister - end - local.get $1 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#get:length (; 20 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 16 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $start:std/array-literal (; 21 ;) (type $FUNCSIG$v) + (func $start:std/array-literal (; 17 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) global.get $std/array-literal/staticArrayI8 call $~lib/array/Array#get:length i32.const 3 @@ -900,9 +1905,17 @@ global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset block (result i32) - i32.const 0 - i32.const 3 - call $~lib/array/Array#constructor + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + i32.const 3 + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.get $3 + i32.const 2 + i32.const 0 + call $~lib/runtime/doMakeArray + end local.set $0 local.get $0 i32.load offset=4 @@ -989,9 +2002,17 @@ i32.const 0 global.set $std/array-literal/i block (result i32) - i32.const 0 - i32.const 3 - call $~lib/array/Array#constructor + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + i32.const 3 + local.set $3 + i32.const 0 + local.set $2 + local.get $3 + local.get $2 + i32.const 4 + i32.const 2 + call $~lib/runtime/doMakeArray + end local.set $1 local.get $1 i32.load offset=4 @@ -1076,9 +2097,17 @@ unreachable end block (result i32) - i32.const 0 - i32.const 3 - call $~lib/array/Array#constructor + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + i32.const 3 + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.get $3 + i32.const 6 + i32.const 2 + call $~lib/runtime/doMakeArray + end local.set $0 local.get $0 i32.load offset=4 @@ -1112,9 +2141,17 @@ unreachable end block (result i32) - i32.const 0 - i32.const 3 - call $~lib/array/Array#constructor + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + i32.const 3 + local.set $3 + i32.const 0 + local.set $2 + local.get $3 + local.get $2 + i32.const 8 + i32.const 2 + call $~lib/runtime/doMakeArray + end local.set $1 local.get $1 i32.load offset=4 @@ -1148,9 +2185,9 @@ unreachable end ) - (func $start (; 22 ;) (type $FUNCSIG$v) + (func $start (; 18 ;) (type $FUNCSIG$v) call $start:std/array-literal ) - (func $null (; 23 ;) (type $FUNCSIG$v) + (func $null (; 19 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index a1982e5b..14e06c2d 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -786,7 +786,7 @@ if i32.const 0 i32.const 24 - i32.const 332 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -800,7 +800,7 @@ if i32.const 0 i32.const 24 - i32.const 333 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -824,7 +824,7 @@ if i32.const 0 i32.const 72 - i32.const 24 + i32.const 25 i32.const 43 call $~lib/env/abort unreachable @@ -845,7 +845,7 @@ if i32.const 0 i32.const 24 - i32.const 339 + i32.const 320 i32.const 2 call $~lib/env/abort unreachable @@ -859,7 +859,7 @@ if i32.const 0 i32.const 24 - i32.const 340 + i32.const 321 i32.const 2 call $~lib/env/abort unreachable @@ -880,7 +880,7 @@ if i32.const 0 i32.const 24 - i32.const 366 + i32.const 348 i32.const 57 call $~lib/env/abort unreachable @@ -923,22 +923,22 @@ i32.store offset=8 local.get $0 ) - (func $~lib/array/Array#constructor (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array#constructor (; 11 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) i32.const 16 call $~lib/runtime/doAllocate i32.const 4 call $~lib/runtime/doRegister - local.get $0 + i32.const 0 i32.const 2 call $~lib/runtime/ArrayBufferView#constructor - local.tee $1 + local.tee $0 i32.const 0 i32.store offset=12 - local.get $1 local.get $0 + i32.const 0 i32.store offset=12 - local.get $1 + local.get $0 ) (func $~lib/array/Array#fill (; 12 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) @@ -2096,44 +2096,43 @@ end end ) - (func $~lib/runtime/doWrapArray (; 15 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/runtime/doMakeArray (; 15 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) i32.const 16 call $~lib/runtime/doAllocate - local.get $1 + local.get $2 call $~lib/runtime/doRegister - local.set $3 + local.set $2 local.get $0 - i32.const 16 - i32.sub - i32.load offset=4 + local.get $3 + i32.shl local.tee $4 call $~lib/runtime/doAllocate - local.get $1 + i32.const 2 call $~lib/runtime/doRegister - local.tee $1 - local.get $3 + local.tee $3 + local.get $2 call $~lib/runtime/doRetain + local.get $2 local.get $3 - local.get $1 i32.store + local.get $2 local.get $3 - local.get $1 i32.store offset=4 - local.get $3 + local.get $2 local.get $4 i32.store offset=8 - local.get $3 - local.get $4 local.get $2 - i32.shr_u + local.get $0 i32.store offset=12 local.get $1 - local.get $0 - local.get $4 - call $~lib/memory/memory.copy - local.get $3 + if + local.get $3 + local.get $1 + local.get $4 + call $~lib/memory/memory.copy + end + local.get $2 ) (func $~lib/array/Array#__get (; 16 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -2143,7 +2142,7 @@ if i32.const 0 i32.const 272 - i32.const 85 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -2284,7 +2283,7 @@ if i32.const 0 i32.const 272 - i32.const 85 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -2423,7 +2422,7 @@ if i32.const 0 i32.const 24 - i32.const 177 + i32.const 133 i32.const 8 call $~lib/env/abort unreachable @@ -2465,7 +2464,7 @@ if i32.const 0 i32.const 272 - i32.const 10 + i32.const 14 i32.const 64 call $~lib/env/abort unreachable @@ -2531,7 +2530,7 @@ if i32.const 0 i32.const 272 - i32.const 220 + i32.const 245 i32.const 20 call $~lib/env/abort unreachable @@ -2567,7 +2566,10 @@ select local.tee $3 i32.add - call $~lib/array/Array#constructor + i32.const 0 + i32.const 4 + i32.const 2 + call $~lib/runtime/doMakeArray local.tee $4 i32.load offset=4 local.tee $5 @@ -2798,7 +2800,7 @@ if i32.const 0 i32.const 272 - i32.const 281 + i32.const 306 i32.const 20 call $~lib/env/abort unreachable @@ -2996,7 +2998,10 @@ i32.gt_s select local.tee $2 - call $~lib/array/Array#constructor + i32.const 0 + i32.const 4 + i32.const 2 + call $~lib/runtime/doMakeArray local.tee $6 i32.load offset=4 local.set $7 @@ -3069,6 +3074,10 @@ local.get $6 ) (func $~lib/array/Array#__set (; 33 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $3 local.get $0 local.get $1 i32.const 1 @@ -3083,8 +3092,7 @@ local.get $2 i32.store local.get $1 - local.get $0 - i32.load offset=12 + local.get $3 i32.ge_s if local.get $0 @@ -3507,36 +3515,27 @@ (local $6 i32) local.get $0 i32.load offset=12 - local.set $1 - i32.const 16 - call $~lib/runtime/doAllocate - i32.const 9 - call $~lib/runtime/doRegister - local.get $1 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor local.tee $3 i32.const 0 - i32.store offset=12 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $3 + i32.const 9 + i32.const 2 + call $~lib/runtime/doMakeArray + local.tee $4 i32.load offset=4 local.set $5 loop $repeat|0 - local.get $2 local.get $1 + local.get $3 local.get $0 i32.load offset=12 - local.tee $4 - local.get $1 - local.get $4 + local.tee $2 + local.get $3 + local.get $2 i32.lt_s select i32.lt_s if - local.get $2 + local.get $1 i32.const 2 i32.shl local.tee $6 @@ -3544,26 +3543,26 @@ i32.load offset=4 i32.add i32.load - local.set $4 + local.set $2 i32.const 3 global.set $~lib/argc local.get $5 local.get $6 i32.add - local.get $4 local.get $2 + local.get $1 local.get $0 i32.const 22 call_indirect (type $FUNCSIG$fiii) f32.store - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $repeat|0 end end - local.get $3 + local.get $4 ) (func $~lib/array/Array#__get (; 59 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 @@ -3575,7 +3574,7 @@ if i32.const 0 i32.const 272 - i32.const 85 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -3607,7 +3606,10 @@ local.get $0 i32.load offset=12 local.tee $4 - call $~lib/array/Array#constructor + i32.const 0 + i32.const 4 + i32.const 2 + call $~lib/runtime/doMakeArray i32.load offset=4 local.set $5 loop $repeat|0 @@ -3678,7 +3680,10 @@ (local $4 i32) (local $5 i32) i32.const 0 - call $~lib/array/Array#constructor + i32.const 0 + i32.const 4 + i32.const 2 + call $~lib/runtime/doMakeArray local.set $4 local.get $0 i32.load offset=12 @@ -4326,7 +4331,7 @@ if i32.const 0 i32.const 272 - i32.const 393 + i32.const 418 i32.const 4 call $~lib/env/abort unreachable @@ -4822,7 +4827,7 @@ if i32.const 0 i32.const 272 - i32.const 393 + i32.const 418 i32.const 4 call $~lib/env/abort unreachable @@ -4920,7 +4925,7 @@ if i32.const 0 i32.const 272 - i32.const 85 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -5341,7 +5346,7 @@ if i32.const 0 i32.const 272 - i32.const 393 + i32.const 418 i32.const 4 call $~lib/env/abort unreachable @@ -5419,38 +5424,64 @@ i32.lt_u i32.sub ) - (func $std/array/createReverseOrderedArray (; 94 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array.create (; 94 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.const 268435452 + i32.gt_u + if + i32.const 0 + i32.const 272 + i32.const 44 + i32.const 62 + call $~lib/env/abort + unreachable + end local.get $0 - call $~lib/array/Array#constructor - local.set $1 i32.const 0 - local.set $0 + i32.const 4 + i32.const 2 + call $~lib/runtime/doMakeArray + local.tee $0 + i32.load offset=4 + i32.const 0 + local.get $0 + i32.load offset=8 + call $~lib/memory/memory.fill + local.get $0 + i32.const 0 + i32.store offset=12 + local.get $0 + ) + (func $std/array/createReverseOrderedArray (; 95 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/array/Array.create + local.set $2 loop $repeat|0 - local.get $0 - local.get $1 - i32.load offset=12 - i32.lt_s - if + block $break|0 local.get $1 local.get $0 + i32.ge_s + br_if $break|0 + local.get $2 local.get $1 - i32.load offset=12 + local.get $0 i32.const 1 i32.sub - local.get $0 + local.get $1 i32.sub call $~lib/array/Array#__set - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $repeat|0 end end - local.get $1 + local.get $2 ) - (func $~lib/math/NativeMath.random (; 95 ;) (type $FUNCSIG$d) (result f64) + (func $~lib/math/NativeMath.random (; 96 ;) (type $FUNCSIG$d) (result f64) (local $0 i64) (local $1 i64) global.get $~lib/math/random_seeded @@ -5497,22 +5528,22 @@ f64.const 1 f64.sub ) - (func $std/array/createRandomOrderedArray (; 96 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomOrderedArray (; 97 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) local.get $0 - call $~lib/array/Array#constructor - local.set $0 + call $~lib/array/Array.create + local.set $2 loop $repeat|0 - local.get $1 - local.get $0 - i32.load offset=12 - i32.lt_s - if + block $break|0 + local.get $1 local.get $0 + i32.ge_s + br_if $break|0 + local.get $2 local.get $1 call $~lib/math/NativeMath.random local.get $0 - i32.load offset=12 f64.convert_i32_s f64.mul i32.trunc_f64_s @@ -5524,9 +5555,9 @@ br $repeat|0 end end - local.get $0 + local.get $2 ) - (func $std/array/isSorted (; 97 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isSorted (; 98 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) i32.const 1 @@ -5568,7 +5599,7 @@ end i32.const 1 ) - (func $std/array/assertSorted (; 98 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $std/array/assertSorted (; 99 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array#sort @@ -5578,74 +5609,57 @@ if i32.const 0 i32.const 152 - i32.const 813 + i32.const 814 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/array/assertSortedDefault (; 99 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/array/assertSortedDefault (; 100 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 i32.const 48 call $std/array/assertSorted ) - (func $start:std/array~anonymous|44 (; 100 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|44 (; 101 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.sub ) - (func $~lib/array/Array>#constructor (; 101 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 16 - call $~lib/runtime/doAllocate + (func $~lib/array/Array.create> (; 102 ;) (type $FUNCSIG$i) (result i32) + (local $0 i32) + i32.const 512 + i32.const 0 i32.const 11 - call $~lib/runtime/doRegister - local.get $0 i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.tee $1 + call $~lib/runtime/doMakeArray + local.tee $0 + i32.load offset=4 + i32.const 0 + local.get $0 + i32.load offset=8 + call $~lib/memory/memory.fill + local.get $0 i32.const 0 i32.store offset=12 - local.get $1 - i32.load offset=4 - local.tee $2 local.get $0 - i32.const 2 - i32.shl - i32.add - local.set $3 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - i32.const 0 - call $~lib/array/Array#constructor - local.tee $4 - local.get $1 - call $~lib/runtime/doRetain - local.get $2 - local.get $4 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 ) - (func $~lib/array/Array>#__set (; 102 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array>#__set (; 103 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + local.get $1 + local.get $0 + i32.load offset=12 + local.tee $4 + i32.gt_u + if + i32.const 0 + i32.const 272 + i32.const 109 + i32.const 38 + call $~lib/env/abort + unreachable + end local.get $0 local.get $1 i32.const 1 @@ -5657,31 +5671,27 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $5 i32.load local.tee $3 local.get $2 i32.ne if - local.get $0 - local.set $5 local.get $3 if local.get $3 - local.get $5 + local.get $0 call $~lib/runtime/doRetain end local.get $2 - local.tee $3 local.get $0 call $~lib/runtime/doRetain - local.get $4 - local.get $3 + local.get $5 + local.get $2 i32.store end local.get $1 - local.get $0 - i32.load offset=12 + local.get $4 i32.ge_s if local.get $0 @@ -5691,44 +5701,39 @@ i32.store offset=12 end ) - (func $std/array/createReverseOrderedNestedArray (; 103 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/createReverseOrderedNestedArray (; 104 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) - i32.const 512 - call $~lib/array/Array>#constructor - local.set $0 + (local $2 i32) + call $~lib/array/Array.create> + local.set $1 loop $repeat|0 - local.get $1 local.get $0 - i32.load offset=12 + i32.const 512 i32.lt_s if - local.get $0 - local.get $1 i32.const 1 - call $~lib/array/Array#constructor - call $~lib/array/Array>#__set - local.get $0 - local.get $1 - call $~lib/array/Array#__get + call $~lib/array/Array.create + local.tee $2 i32.const 0 + i32.const 511 local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.get $1 i32.sub call $~lib/array/Array#__set local.get $1 + local.get $0 + local.get $2 + call $~lib/array/Array>#__set + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $repeat|0 end end - local.get $0 + local.get $1 ) - (func $start:std/array~anonymous|47 (; 104 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|47 (; 105 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array#__get @@ -5737,7 +5742,7 @@ call $~lib/array/Array#__get i32.sub ) - (func $~lib/array/Array>#sort (; 105 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#sort (; 106 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5746,7 +5751,7 @@ if i32.const 0 i32.const 272 - i32.const 393 + i32.const 418 i32.const 4 call $~lib/env/abort unreachable @@ -5798,117 +5803,158 @@ call $~lib/util/sort/insertionSort local.get $0 ) - (func $std/array/assertSorted> (; 106 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array>#__get (; 107 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 0 + i32.const 272 + i32.const 97 + i32.const 45 + call $~lib/env/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 0 + i32.const 272 + i32.const 100 + i32.const 61 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $std/array/isSorted> (; 108 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + i32.const 1 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + loop $repeat|0 + local.get $2 + local.get $3 + i32.lt_s + if + i32.const 2 + global.set $~lib/argc + local.get $0 + local.get $2 + i32.const 1 + i32.sub + call $~lib/array/Array>#__get + local.get $0 + local.get $2 + call $~lib/array/Array>#__get + local.get $1 + call_indirect (type $FUNCSIG$iii) + i32.const 0 + i32.gt_s + if + i32.const 0 + return + else + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $repeat|0 + end + unreachable + end + end + i32.const 1 + ) + (func $std/array/assertSorted> (; 109 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 local.get $1 call $~lib/array/Array>#sort local.get $1 - call $std/array/isSorted + call $std/array/isSorted> i32.eqz if i32.const 0 i32.const 152 - i32.const 813 + i32.const 814 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/array/Proxy#constructor (; 107 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 4 - call $~lib/runtime/doAllocate - i32.const 13 - call $~lib/runtime/doRegister - local.tee $1 - local.get $0 - i32.store - local.get $1 - ) - (func $~lib/array/Array>#constructor (; 108 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/array/Array.create> (; 110 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 16 - call $~lib/runtime/doAllocate - i32.const 12 - call $~lib/runtime/doRegister i32.const 512 + i32.const 0 + i32.const 12 i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor + call $~lib/runtime/doMakeArray local.tee $0 + i32.load offset=4 + i32.const 0 + local.get $0 + i32.load offset=8 + call $~lib/memory/memory.fill + local.get $0 i32.const 0 i32.store offset=12 local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 2048 - i32.add - local.set $2 - loop $continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - i32.const 0 - call $std/array/Proxy#constructor - local.tee $3 - local.get $0 - call $~lib/runtime/doRetain - local.get $1 - local.get $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 - end - end - local.get $0 - i32.const 512 - i32.store offset=12 - local.get $0 ) - (func $std/array/createReverseOrderedElementsArray (; 109 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/createReverseOrderedElementsArray (; 111 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) - call $~lib/array/Array>#constructor - local.set $0 + (local $2 i32) + call $~lib/array/Array.create> + local.set $1 loop $repeat|0 - local.get $1 local.get $0 - i32.load offset=12 + i32.const 512 i32.lt_s if + i32.const 4 + call $~lib/runtime/doAllocate + i32.const 13 + call $~lib/runtime/doRegister + local.tee $2 + i32.const 511 local.get $0 + i32.sub + i32.store local.get $1 local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.get $1 - i32.sub - call $std/array/Proxy#constructor + local.get $2 call $~lib/array/Array>#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $repeat|0 end end - local.get $0 + local.get $1 ) - (func $start:std/array~anonymous|48 (; 110 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|48 (; 112 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load local.get $1 i32.load i32.sub ) - (func $~lib/util/string/compareImpl (; 111 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/compareImpl (; 113 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) loop $continue|0 local.get $2 @@ -5941,7 +5987,7 @@ end local.get $3 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 112 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 114 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6018,7 +6064,7 @@ select call $~lib/util/string/compareImpl ) - (func $std/array/assertSorted|trampoline (; 113 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $std/array/assertSorted|trampoline (; 115 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) block $1of1 block $0of1 @@ -6037,7 +6083,7 @@ local.get $1 call $std/array/assertSorted> ) - (func $~lib/string/String.__eq (; 114 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (; 116 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 local.get $1 @@ -6083,7 +6129,7 @@ call $~lib/util/string/compareImpl i32.eqz ) - (func $std/array/isArraysEqual (; 115 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -6110,10 +6156,10 @@ if local.get $0 local.get $2 - call $~lib/array/Array#__get + call $~lib/array/Array>#__get local.get $1 local.get $2 - call $~lib/array/Array#__get + call $~lib/array/Array>#__get call $~lib/string/String.__eq if local.get $2 @@ -6130,47 +6176,25 @@ end i32.const 1 ) - (func $~lib/array/Array#constructor (; 116 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/array/Array.create (; 118 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 16 - call $~lib/runtime/doAllocate - i32.const 14 - call $~lib/runtime/doRegister i32.const 400 + i32.const 0 + i32.const 14 i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.tee $1 + call $~lib/runtime/doMakeArray + local.tee $0 + i32.load offset=4 + i32.const 0 + local.get $0 + i32.load offset=8 + call $~lib/memory/memory.fill + local.get $0 i32.const 0 i32.store offset=12 - local.get $1 - i32.load offset=4 - local.tee $0 - i32.const 1600 - i32.add - local.set $2 - loop $continue|0 - local.get $0 - local.get $2 - i32.lt_u - if - local.get $0 - i32.const 4200 - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $continue|0 - end - end - local.get $1 - i32.const 400 - i32.store offset=12 - local.get $1 + local.get $0 ) - (func $~lib/string/String#charAt (; 117 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/string/String#charAt (; 119 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 3020 @@ -6196,7 +6220,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/string/String#concat (; 118 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#concat (; 120 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6245,7 +6269,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/string/String.__concat (; 119 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__concat (; 121 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 4424 local.get $0 @@ -6253,7 +6277,7 @@ local.get $1 call $~lib/string/String#concat ) - (func $std/array/createRandomString (; 120 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createRandomString (; 122 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) i32.const 4200 @@ -6285,35 +6309,34 @@ end local.get $1 ) - (func $std/array/createRandomStringArray (; 121 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/createRandomStringArray (; 123 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) - call $~lib/array/Array#constructor - local.set $0 + call $~lib/array/Array.create + local.set $1 loop $repeat|0 - local.get $1 local.get $0 - i32.load offset=12 + i32.const 400 i32.lt_s if - local.get $0 local.get $1 + local.get $0 call $~lib/math/NativeMath.random f64.const 32 f64.mul i32.trunc_f64_s call $std/array/createRandomString call $~lib/array/Array>#__set - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $repeat|0 end end - local.get $0 + local.get $1 ) - (func $~lib/string/String#substring (; 122 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6322,7 +6345,7 @@ if i32.const 0 i32.const 4376 - i32.const 186 + i32.const 187 i32.const 4 call $~lib/env/abort unreachable @@ -6411,7 +6434,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/array/Array#join_bool (; 123 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_bool (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6563,7 +6586,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/util/number/decimalCount32 (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 126 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -6617,7 +6640,7 @@ end end ) - (func $~lib/util/number/utoa32_lut (; 125 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 127 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) i32.const 5092 @@ -6727,7 +6750,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 126 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 128 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6769,7 +6792,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/util/number/itoa_stream (; 127 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 129 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -6813,7 +6836,7 @@ end local.get $2 ) - (func $~lib/array/Array#join_int (; 128 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 130 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6931,12 +6954,12 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/array/Array#join (; 129 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int ) - (func $~lib/util/number/utoa32 (; 130 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 132 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -6959,7 +6982,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/util/number/itoa_stream (; 131 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 133 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -6983,7 +7006,7 @@ call $~lib/util/number/utoa32_lut local.get $0 ) - (func $~lib/array/Array#join_int (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 134 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7101,12 +7124,12 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/array/Array#join (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int ) - (func $~lib/util/number/genDigits (; 134 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/util/number/genDigits (; 136 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i64) (local $9 i32) @@ -7517,7 +7540,7 @@ local.get $2 end ) - (func $~lib/util/number/prettify (; 135 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 137 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7779,7 +7802,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 136 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 138 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) (local $4 i64) @@ -8090,7 +8113,7 @@ local.get $11 i32.add ) - (func $~lib/util/number/dtoa (; 137 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 139 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -8135,7 +8158,7 @@ call $~lib/runtime/assertUnregistered local.get $1 ) - (func $~lib/util/number/dtoa_stream (; 138 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) + (func $~lib/util/number/dtoa_stream (; 140 ;) (type $FUNCSIG$iiid) (param $0 i32) (param $1 i32) (param $2 f64) (result i32) local.get $1 i32.const 1 i32.shl @@ -8204,7 +8227,7 @@ local.get $2 call $~lib/util/number/dtoa_core ) - (func $~lib/array/Array#join_flt (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_flt (; 141 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8320,7 +8343,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/array/Array#join_str (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_str (; 142 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8487,18 +8510,18 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/array/Array#join (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_str ) - (func $std/array/Ref#constructor (; 142 ;) (type $FUNCSIG$i) (result i32) + (func $std/array/Ref#constructor (; 144 ;) (type $FUNCSIG$i) (result i32) i32.const 0 call $~lib/runtime/doAllocate i32.const 18 call $~lib/runtime/doRegister ) - (func $~lib/array/Array#join_ref (; 143 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_ref (; 145 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8631,12 +8654,12 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/array/Array#toString (; 144 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 146 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa_stream (; 145 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 147 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $1 i32.const 1 @@ -8691,7 +8714,7 @@ end local.get $1 ) - (func $~lib/array/Array#join_int (; 146 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 148 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8803,7 +8826,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/util/number/itoa_stream (; 147 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 149 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -8833,7 +8856,7 @@ call $~lib/util/number/utoa32_lut local.get $1 ) - (func $~lib/array/Array#join_int (; 148 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 150 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -8949,7 +8972,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/util/number/decimalCount64 (; 149 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 151 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 i64.const 1000000000000000 i64.lt_u @@ -9003,7 +9026,7 @@ end end ) - (func $~lib/util/number/utoa64_lut (; 150 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 152 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9100,7 +9123,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 151 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 153 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9142,7 +9165,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/util/number/itoa_stream (; 152 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 154 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) local.get $1 i32.const 1 @@ -9182,7 +9205,7 @@ end local.get $1 ) - (func $~lib/array/Array#join_int (; 153 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 155 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9298,7 +9321,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/util/number/itoa64 (; 154 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 156 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9363,7 +9386,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/util/number/itoa_stream (; 155 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 157 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) local.get $1 @@ -9426,7 +9449,7 @@ end local.get $1 ) - (func $~lib/array/Array#join_int (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 158 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9542,12 +9565,12 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/array/Array#toString (; 157 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 159 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/array/Array>#join_arr (; 158 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#join_arr (; 160 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9640,64 +9663,7 @@ local.get $1 end ) - (func $~lib/array/Array>#constructor (; 159 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 16 - call $~lib/runtime/doAllocate - i32.const 23 - call $~lib/runtime/doRegister - i32.const 2 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.tee $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 8 - i32.add - local.set $3 - loop $continue|0 - local.get $1 - local.get $3 - i32.lt_u - if - i32.const 16 - call $~lib/runtime/doAllocate - i32.const 7 - call $~lib/runtime/doRegister - i32.const 0 - i32.const 0 - call $~lib/runtime/ArrayBufferView#constructor - local.tee $2 - i32.const 0 - i32.store offset=12 - local.get $2 - i32.const 0 - i32.store offset=12 - local.get $2 - local.get $0 - call $~lib/runtime/doRetain - local.get $1 - local.get $2 - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 - end - end - local.get $0 - i32.const 2 - i32.store offset=12 - local.get $0 - ) - (func $~lib/util/number/itoa_stream (; 160 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 161 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 i32.const 1 i32.shl @@ -9727,7 +9693,7 @@ call $~lib/util/number/utoa32_lut local.get $1 ) - (func $~lib/array/Array#join_int (; 161 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#join_int (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9839,7 +9805,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/array/Array>#join_arr (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#join_arr (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9929,112 +9895,7 @@ local.get $1 end ) - (func $~lib/array/Array>#constructor (; 163 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 16 - call $~lib/runtime/doAllocate - i32.const 24 - call $~lib/runtime/doRegister - local.get $0 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.load offset=4 - local.tee $2 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.set $4 - loop $continue|0 - local.get $2 - local.get $4 - i32.lt_u - if - i32.const 16 - call $~lib/runtime/doAllocate - i32.const 8 - call $~lib/runtime/doRegister - i32.const 0 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.tee $3 - i32.const 0 - i32.store offset=12 - local.get $3 - i32.const 0 - i32.store offset=12 - local.get $3 - local.get $1 - call $~lib/runtime/doRetain - local.get $2 - local.get $3 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 - end - end - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - ) - (func $~lib/array/Array>>#constructor (; 164 ;) (type $FUNCSIG$i) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 16 - call $~lib/runtime/doAllocate - i32.const 25 - call $~lib/runtime/doRegister - i32.const 1 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.tee $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 4 - i32.add - local.set $2 - loop $continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - i32.const 0 - call $~lib/array/Array>#constructor - local.tee $3 - local.get $0 - call $~lib/runtime/doRetain - local.get $1 - local.get $3 - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $continue|0 - end - end - local.get $0 - i32.const 1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array>#join_arr (; 165 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#join_arr (; 164 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10127,7 +9988,7 @@ local.get $1 end ) - (func $~lib/array/Array>>#join_arr (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>>#join_arr (; 165 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10217,7 +10078,7 @@ local.get $1 end ) - (func $start:std/array (; 167 ;) (type $FUNCSIG$v) + (func $start:std/array (; 166 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10227,7 +10088,6 @@ global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset - i32.const 0 call $~lib/array/Array#constructor global.set $std/array/arr global.get $std/array/Null @@ -10271,10 +10131,11 @@ i32.const 3 call $~lib/array/Array#fill global.get $std/array/arr8 + i32.const 5 i32.const 248 i32.const 7 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/array/isArraysEqual i32.eqz if @@ -10291,10 +10152,11 @@ i32.const 2147483647 call $~lib/array/Array#fill global.get $std/array/arr8 + i32.const 5 i32.const 320 i32.const 7 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/array/isArraysEqual i32.eqz if @@ -10311,10 +10173,11 @@ i32.const -3 call $~lib/array/Array#fill global.get $std/array/arr8 + i32.const 5 i32.const 344 i32.const 7 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/array/isArraysEqual i32.eqz if @@ -10331,10 +10194,11 @@ i32.const 2147483647 call $~lib/array/Array#fill global.get $std/array/arr8 + i32.const 5 i32.const 368 i32.const 7 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/array/isArraysEqual i32.eqz if @@ -10351,10 +10215,11 @@ i32.const 0 call $~lib/array/Array#fill global.get $std/array/arr8 + i32.const 5 i32.const 392 i32.const 7 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/array/isArraysEqual i32.eqz if @@ -10371,10 +10236,11 @@ i32.const 3 call $~lib/array/Array#fill global.get $std/array/arr32 + i32.const 5 i32.const 488 i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -10392,10 +10258,11 @@ i32.const 2147483647 call $~lib/array/Array#fill global.get $std/array/arr32 + i32.const 5 i32.const 528 i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -10413,10 +10280,11 @@ i32.const -3 call $~lib/array/Array#fill global.get $std/array/arr32 + i32.const 5 i32.const 568 i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -10434,10 +10302,11 @@ i32.const 2147483647 call $~lib/array/Array#fill global.get $std/array/arr32 + i32.const 5 i32.const 608 i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -10455,10 +10324,11 @@ i32.const 0 call $~lib/array/Array#fill global.get $std/array/arr32 + i32.const 5 i32.const 648 i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -10755,7 +10625,6 @@ call $~lib/env/abort unreachable end - i32.const 0 call $~lib/array/Array#constructor global.set $std/array/other global.get $std/array/arr @@ -10804,10 +10673,11 @@ unreachable end global.get $std/array/out + i32.const 0 i32.const 688 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $~lib/array/Array#concat drop global.get $std/array/arr @@ -11062,20 +10932,22 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 752 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 0 i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin + i32.const 5 i32.const 792 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11087,20 +10959,22 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 832 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 1 i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin + i32.const 5 i32.const 872 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11112,20 +10986,22 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 912 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 1 i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin + i32.const 5 i32.const 952 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11137,20 +11013,22 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 992 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 2 i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin + i32.const 5 i32.const 1032 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11162,20 +11040,22 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 1072 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 0 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin + i32.const 5 i32.const 1112 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11187,20 +11067,22 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 1152 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 1 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin + i32.const 5 i32.const 1192 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11212,20 +11094,22 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 1232 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 1 i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin + i32.const 5 i32.const 1272 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11237,20 +11121,22 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 1312 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 0 i32.const -2 i32.const 2147483647 call $~lib/array/Array#copyWithin + i32.const 5 i32.const 1352 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11262,20 +11148,22 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 1392 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const 0 i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin + i32.const 5 i32.const 1432 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11287,20 +11175,22 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 1472 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const -4 i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin + i32.const 5 i32.const 1512 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11312,20 +11202,22 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 1552 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const -4 i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin + i32.const 5 i32.const 1592 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11337,20 +11229,22 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 1632 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/cwArr global.get $std/array/cwArr i32.const -4 i32.const -3 i32.const 2147483647 call $~lib/array/Array#copyWithin + i32.const 5 i32.const 1672 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12174,10 +12068,11 @@ i32.const 0 i32.const 2147483647 call $~lib/array/Array#splice + i32.const 5 i32.const 1784 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12190,10 +12085,11 @@ unreachable end global.get $std/array/sarr + i32.const 0 i32.const 1824 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12205,19 +12101,21 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 1840 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/sarr global.get $std/array/sarr i32.const 2 i32.const 2147483647 call $~lib/array/Array#splice + i32.const 3 i32.const 1880 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12230,10 +12128,11 @@ unreachable end global.get $std/array/sarr + i32.const 2 i32.const 1912 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12245,19 +12144,21 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 1936 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/sarr global.get $std/array/sarr i32.const 2 i32.const 2 call $~lib/array/Array#splice + i32.const 2 i32.const 1976 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12270,10 +12171,11 @@ unreachable end global.get $std/array/sarr + i32.const 3 i32.const 2000 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12285,19 +12187,21 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 2032 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/sarr global.get $std/array/sarr i32.const 0 i32.const 1 call $~lib/array/Array#splice + i32.const 1 i32.const 2072 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12310,10 +12214,11 @@ unreachable end global.get $std/array/sarr + i32.const 4 i32.const 2096 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12325,19 +12230,21 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 2128 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/sarr global.get $std/array/sarr i32.const -1 i32.const 2147483647 call $~lib/array/Array#splice + i32.const 1 i32.const 2168 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12350,10 +12257,11 @@ unreachable end global.get $std/array/sarr + i32.const 4 i32.const 2192 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12365,19 +12273,21 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 2224 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/sarr global.get $std/array/sarr i32.const -2 i32.const 2147483647 call $~lib/array/Array#splice + i32.const 2 i32.const 2264 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12390,10 +12300,11 @@ unreachable end global.get $std/array/sarr + i32.const 3 i32.const 2288 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12405,19 +12316,21 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 2320 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/sarr global.get $std/array/sarr i32.const -2 i32.const 1 call $~lib/array/Array#splice + i32.const 1 i32.const 2360 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12430,10 +12343,11 @@ unreachable end global.get $std/array/sarr + i32.const 4 i32.const 2384 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12445,19 +12359,21 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 2416 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/sarr global.get $std/array/sarr i32.const -7 i32.const 1 call $~lib/array/Array#splice + i32.const 1 i32.const 2456 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12470,10 +12386,11 @@ unreachable end global.get $std/array/sarr + i32.const 4 i32.const 2480 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12485,19 +12402,21 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 2512 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/sarr global.get $std/array/sarr i32.const -2 i32.const -1 call $~lib/array/Array#splice + i32.const 0 i32.const 2552 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12510,10 +12429,11 @@ unreachable end global.get $std/array/sarr + i32.const 5 i32.const 2568 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12525,19 +12445,21 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 2608 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/sarr global.get $std/array/sarr i32.const 1 i32.const -2 call $~lib/array/Array#splice + i32.const 0 i32.const 2648 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12550,10 +12472,11 @@ unreachable end global.get $std/array/sarr + i32.const 5 i32.const 2664 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12565,19 +12488,21 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 2704 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/sarr global.get $std/array/sarr i32.const 4 i32.const 0 call $~lib/array/Array#splice + i32.const 0 i32.const 2744 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12590,10 +12515,11 @@ unreachable end global.get $std/array/sarr + i32.const 5 i32.const 2760 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12605,19 +12531,21 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 2800 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/sarr global.get $std/array/sarr i32.const 7 i32.const 0 call $~lib/array/Array#splice + i32.const 0 i32.const 2840 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12630,10 +12558,11 @@ unreachable end global.get $std/array/sarr + i32.const 5 i32.const 2856 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12645,19 +12574,21 @@ call $~lib/env/abort unreachable end + i32.const 5 i32.const 2896 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray global.set $std/array/sarr global.get $std/array/sarr i32.const 7 i32.const 5 call $~lib/array/Array#splice + i32.const 0 i32.const 2936 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12670,10 +12601,11 @@ unreachable end global.get $std/array/sarr + i32.const 5 i32.const 2952 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13773,16 +13705,17 @@ local.get $0 call $~lib/array/Array#sort global.get $std/array/f32ArrayTyped + i32.const 8 i32.const 3304 i32.const 9 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 152 - i32.const 824 + i32.const 825 i32.const 0 call $~lib/env/abort unreachable @@ -13808,16 +13741,17 @@ local.get $0 call $~lib/array/Array#sort global.get $std/array/f64ArrayTyped + i32.const 8 i32.const 3464 i32.const 10 i32.const 3 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 152 - i32.const 828 + i32.const 829 i32.const 0 call $~lib/env/abort unreachable @@ -13844,17 +13778,18 @@ call $~lib/array/Array#sort drop global.get $std/array/i32ArrayTyped + i32.const 5 i32.const 3616 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 152 - i32.const 832 + i32.const 833 i32.const 0 call $~lib/env/abort unreachable @@ -13881,17 +13816,18 @@ call $~lib/array/Array#sort drop global.get $std/array/u32ArrayTyped + i32.const 5 i32.const 3728 i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 152 - i32.const 836 + i32.const 837 i32.const 0 call $~lib/env/abort unreachable @@ -13916,17 +13852,18 @@ global.get $std/array/reversed1 call $std/array/assertSortedDefault global.get $std/array/reversed1 + i32.const 1 i32.const 4056 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 152 - i32.const 856 + i32.const 857 i32.const 0 call $~lib/env/abort unreachable @@ -13934,17 +13871,18 @@ global.get $std/array/reversed2 call $std/array/assertSortedDefault global.get $std/array/reversed2 + i32.const 2 i32.const 4080 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 i32.const 152 - i32.const 859 + i32.const 860 i32.const 0 call $~lib/env/abort unreachable @@ -13959,7 +13897,7 @@ if i32.const 0 i32.const 152 - i32.const 862 + i32.const 863 i32.const 0 call $~lib/env/abort unreachable @@ -13974,7 +13912,7 @@ if i32.const 0 i32.const 152 - i32.const 865 + i32.const 866 i32.const 0 call $~lib/env/abort unreachable @@ -13989,7 +13927,7 @@ if i32.const 0 i32.const 152 - i32.const 868 + i32.const 869 i32.const 0 call $~lib/env/abort unreachable @@ -14004,7 +13942,7 @@ if i32.const 0 i32.const 152 - i32.const 871 + i32.const 872 i32.const 0 call $~lib/env/abort unreachable @@ -14019,7 +13957,7 @@ if i32.const 0 i32.const 152 - i32.const 874 + i32.const 875 i32.const 0 call $~lib/env/abort unreachable @@ -14065,7 +14003,7 @@ if i32.const 0 i32.const 152 - i32.const 904 + i32.const 905 i32.const 0 call $~lib/env/abort unreachable @@ -14076,31 +14014,15 @@ global.set $~lib/argc global.get $std/array/randomStrings400 call $std/array/assertSorted|trampoline + i32.const 2 i32.const 4552 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $~lib/array/Array#join_bool i32.const 4576 call $~lib/string/String.__eq i32.eqz - if - i32.const 0 - i32.const 152 - i32.const 913 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 5120 - i32.const 4 - i32.const 2 - call $~lib/runtime/doWrapArray - i32.const 4200 - call $~lib/array/Array#join - i32.const 5152 - call $~lib/string/String.__eq - i32.eqz if i32.const 0 i32.const 152 @@ -14109,12 +14031,13 @@ call $~lib/env/abort unreachable end - i32.const 5240 - i32.const 8 + i32.const 3 + i32.const 5120 + i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray - i32.const 5216 - call $~lib/array/Array#join + call $~lib/runtime/doMakeArray + i32.const 4200 + call $~lib/array/Array#join i32.const 5152 call $~lib/string/String.__eq i32.eqz @@ -14126,13 +14049,14 @@ call $~lib/env/abort unreachable end - i32.const 5320 - i32.const 4 + i32.const 3 + i32.const 5240 + i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray - i32.const 5296 - call $~lib/array/Array#join - i32.const 5344 + call $~lib/runtime/doMakeArray + i32.const 5216 + call $~lib/array/Array#join + i32.const 5152 call $~lib/string/String.__eq i32.eqz if @@ -14143,12 +14067,14 @@ call $~lib/env/abort unreachable end - i32.const 6672 - i32.const 10 - i32.const 3 - call $~lib/runtime/doWrapArray - call $~lib/array/Array#join_flt - i32.const 6736 + i32.const 2 + i32.const 5320 + i32.const 4 + i32.const 2 + call $~lib/runtime/doMakeArray + i32.const 5296 + call $~lib/array/Array#join + i32.const 5344 call $~lib/string/String.__eq i32.eqz if @@ -14159,13 +14085,13 @@ call $~lib/env/abort unreachable end - i32.const 6888 - i32.const 14 - i32.const 2 - call $~lib/runtime/doWrapArray - i32.const 4200 - call $~lib/array/Array#join - i32.const 6832 + i32.const 6 + i32.const 6672 + i32.const 10 + i32.const 3 + call $~lib/runtime/doMakeArray + call $~lib/array/Array#join_flt + i32.const 6736 call $~lib/string/String.__eq i32.eqz if @@ -14176,20 +14102,30 @@ call $~lib/env/abort unreachable end - i32.const 16 - call $~lib/runtime/doAllocate - i32.const 19 - call $~lib/runtime/doRegister i32.const 3 + i32.const 6888 + i32.const 14 i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.tee $0 - i32.const 0 - i32.store offset=12 - local.get $0 + call $~lib/runtime/doMakeArray + i32.const 4200 + call $~lib/array/Array#join + i32.const 6832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 152 + i32.const 919 + i32.const 0 + call $~lib/env/abort + unreachable + end i32.const 3 - i32.store offset=12 - local.get $0 + i32.const 0 + i32.const 19 + i32.const 2 + call $~lib/runtime/doMakeArray + local.tee $0 i32.load offset=4 local.tee $2 local.set $3 @@ -14226,7 +14162,7 @@ if i32.const 0 i32.const 152 - i32.const 920 + i32.const 921 i32.const 0 call $~lib/env/abort unreachable @@ -14239,7 +14175,7 @@ if i32.const 0 i32.const 152 - i32.const 924 + i32.const 925 i32.const 0 call $~lib/env/abort unreachable @@ -14252,7 +14188,7 @@ if i32.const 0 i32.const 152 - i32.const 925 + i32.const 926 i32.const 0 call $~lib/env/abort unreachable @@ -14265,7 +14201,7 @@ if i32.const 0 i32.const 152 - i32.const 926 + i32.const 927 i32.const 0 call $~lib/env/abort unreachable @@ -14278,35 +14214,20 @@ if i32.const 0 i32.const 152 - i32.const 927 + i32.const 928 i32.const 0 call $~lib/env/abort unreachable end + i32.const 3 i32.const 7128 i32.const 20 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $~lib/array/Array#join_int i32.const 7152 call $~lib/string/String.__eq i32.eqz - if - i32.const 0 - i32.const 152 - i32.const 929 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 7208 - i32.const 21 - i32.const 1 - call $~lib/runtime/doWrapArray - call $~lib/array/Array#join_int - i32.const 7232 - call $~lib/string/String.__eq - i32.eqz if i32.const 0 i32.const 152 @@ -14315,12 +14236,13 @@ call $~lib/env/abort unreachable end - i32.const 7312 - i32.const 16 i32.const 3 - call $~lib/runtime/doWrapArray - call $~lib/array/Array#join_int - i32.const 7352 + i32.const 7208 + i32.const 21 + i32.const 1 + call $~lib/runtime/doMakeArray + call $~lib/array/Array#join_int + i32.const 7232 call $~lib/string/String.__eq i32.eqz if @@ -14331,10 +14253,28 @@ call $~lib/env/abort unreachable end + i32.const 3 + i32.const 7312 + i32.const 16 + i32.const 3 + call $~lib/runtime/doMakeArray + call $~lib/array/Array#join_int + i32.const 7352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 152 + i32.const 932 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 4 i32.const 7464 i32.const 22 i32.const 3 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $~lib/array/Array#join_int i32.const 7512 call $~lib/string/String.__eq @@ -14342,7 +14282,7 @@ if i32.const 0 i32.const 152 - i32.const 932 + i32.const 933 i32.const 0 call $~lib/env/abort unreachable @@ -14355,15 +14295,16 @@ if i32.const 0 i32.const 152 - i32.const 933 + i32.const 934 i32.const 0 call $~lib/env/abort unreachable end + i32.const 4 i32.const 7744 i32.const 14 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $~lib/array/Array#toString i32.const 7776 call $~lib/string/String.__eq @@ -14371,37 +14312,42 @@ if i32.const 0 i32.const 152 - i32.const 934 + i32.const 935 i32.const 0 call $~lib/env/abort unreachable end i32.const 2 - call $~lib/array/Array>#constructor - local.tee $2 + i32.const 0 + i32.const 11 + i32.const 2 + call $~lib/runtime/doMakeArray + local.tee $0 i32.load offset=4 - local.set $0 + local.set $2 + i32.const 2 i32.const 7832 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray local.tee $1 - local.get $2 - call $~lib/runtime/doRetain local.get $0 + call $~lib/runtime/doRetain + local.get $2 local.get $1 i32.store + i32.const 2 i32.const 7856 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray - local.tee $1 - local.get $2 - call $~lib/runtime/doRetain + call $~lib/runtime/doMakeArray + local.tee $3 local.get $0 - local.get $1 - i32.store offset=4 + call $~lib/runtime/doRetain local.get $2 + local.get $3 + i32.store offset=4 + local.get $0 global.set $std/array/subarr32 global.get $std/array/subarr32 call $~lib/array/Array>#join_arr @@ -14411,29 +14357,35 @@ if i32.const 0 i32.const 152 - i32.const 937 + i32.const 938 i32.const 0 call $~lib/env/abort unreachable end - call $~lib/array/Array>#constructor + i32.const 2 + i32.const 0 + i32.const 23 + i32.const 2 + call $~lib/runtime/doMakeArray local.tee $0 i32.load offset=4 local.set $2 + i32.const 2 i32.const 7936 i32.const 7 i32.const 0 - call $~lib/runtime/doWrapArray - local.tee $1 + call $~lib/runtime/doMakeArray + local.tee $3 local.get $0 call $~lib/runtime/doRetain local.get $2 - local.get $1 + local.get $3 i32.store + i32.const 2 i32.const 7960 i32.const 7 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray local.tee $1 local.get $0 call $~lib/runtime/doRetain @@ -14450,24 +14402,32 @@ if i32.const 0 i32.const 152 - i32.const 940 + i32.const 941 i32.const 0 call $~lib/env/abort unreachable end - call $~lib/array/Array>>#constructor - local.tee $0 - i32.load offset=4 - local.set $2 i32.const 1 - call $~lib/array/Array>#constructor + i32.const 0 + i32.const 25 + i32.const 2 + call $~lib/runtime/doMakeArray + local.tee $2 + i32.load offset=4 + local.set $0 + i32.const 1 + i32.const 0 + i32.const 24 + i32.const 2 + call $~lib/runtime/doMakeArray local.tee $1 i32.load offset=4 local.set $3 + i32.const 1 i32.const 8056 i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray local.tee $4 local.get $1 call $~lib/runtime/doRetain @@ -14475,12 +14435,12 @@ local.get $4 i32.store local.get $1 - local.get $0 - call $~lib/runtime/doRetain local.get $2 + call $~lib/runtime/doRetain + local.get $0 local.get $1 i32.store - local.get $0 + local.get $2 global.set $std/array/subarrU32 global.get $std/array/subarrU32 call $~lib/array/Array>>#join_arr @@ -14490,13 +14450,13 @@ if i32.const 0 i32.const 152 - i32.const 943 + i32.const 944 i32.const 0 call $~lib/env/abort unreachable end ) - (func $std/array/main (; 168 ;) (type $FUNCSIG$v) + (func $std/array/main (; 167 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -14505,7 +14465,7 @@ global.set $~lib/started end ) - (func $null (; 169 ;) (type $FUNCSIG$v) + (func $null (; 168 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index 7e272f7e..b72b3055 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -752,9 +752,9 @@ function isSorted(data: Array, comparator: (a: T, b: T) => i32 = COMPARATO } function createReverseOrderedArray(size: i32): Array { - var arr = new Array(size); - for (let i = 0; i < arr.length; i++) { - arr[i] = arr.length - 1 - i; + var arr = Array.create(size); + for (let i = 0; i < size; i++) { + arr[i] = size - 1 - i; } return arr; } @@ -762,30 +762,31 @@ function createReverseOrderedArray(size: i32): Array { NativeMath.seedRandom(reinterpret(JSMath.random())); function createRandomOrderedArray(size: i32): Array { - var arr = new Array(size); - for (let i = 0; i < arr.length; i++) { - arr[i] = (NativeMath.random() * arr.length); + var arr = Array.create(size); + for (let i = 0; i < size; i++) { + arr[i] = (NativeMath.random() *size); } return arr; } function createReverseOrderedNestedArray(size: i32): Array> { - var arr = new Array>(size); - for (let i: i32 = 0; i < arr.length; i++) { - arr[i] = new Array(1); - arr[i][0] = arr.length - 1 - i; + var arr = Array.create>(size); + for (let i: i32 = 0; i < size; i++) { + let inner = Array.create(1); + inner[0] = size - 1 - i; + arr[i] = inner; } return arr; } class Proxy { - constructor(public x: T = 0) {} + constructor(public x: T) {} } function createReverseOrderedElementsArray(size: i32): Proxy[] { - var arr = new Array>(size); - for (let i: i32 = 0; i < arr.length; i++) { - arr[i] = new Proxy(arr.length - 1 - i); + var arr = Array.create>(size); + for (let i: i32 = 0; i < size; i++) { + arr[i] = new Proxy(size - 1 - i); } return arr; } @@ -802,8 +803,8 @@ function createRandomString(len: i32): string { } function createRandomStringArray(size: i32): string[] { - var arr = new Array(size); - for (let i: i32 = 0; i < arr.length; i++) { + var arr = Array.create(size); + for (let i: i32 = 0; i < size; i++) { arr[i] = createRandomString((NativeMath.random() * 32)); } return arr; diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 97abb064..e0b4592a 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -681,7 +681,7 @@ if i32.const 0 i32.const 24 - i32.const 332 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -696,7 +696,7 @@ if i32.const 0 i32.const 24 - i32.const 333 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -726,7 +726,7 @@ if i32.const 0 i32.const 72 - i32.const 24 + i32.const 25 i32.const 43 call $~lib/env/abort unreachable @@ -758,7 +758,7 @@ if i32.const 0 i32.const 24 - i32.const 339 + i32.const 320 i32.const 2 call $~lib/env/abort unreachable @@ -773,7 +773,7 @@ if i32.const 0 i32.const 24 - i32.const 340 + i32.const 321 i32.const 2 call $~lib/env/abort unreachable @@ -802,7 +802,7 @@ if i32.const 0 i32.const 24 - i32.const 366 + i32.const 348 i32.const 57 call $~lib/env/abort unreachable @@ -1068,13 +1068,7 @@ end local.get $0 ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 24 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub - i32.load offset=4 - ) - (func $~lib/util/memory/memcpy (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 24 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2275,7 +2269,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 26 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 25 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -2506,55 +2500,59 @@ end end ) - (func $~lib/runtime/doWrapArray (; 27 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/runtime/doMakeArray (; 26 ;) (type $FUNCSIG$iiiii) (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) i32.const 16 call $~lib/runtime/doAllocate - local.get $1 + local.get $2 call $~lib/runtime/doRegister - local.set $3 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength local.set $4 - local.get $4 - call $~lib/runtime/doAllocate - local.get $1 - call $~lib/runtime/doRegister - local.set $5 + local.get $0 local.get $3 - local.tee $6 + i32.shl + local.set $5 + local.get $0 + local.get $3 + i32.shl + call $~lib/runtime/doAllocate + i32.const 2 + call $~lib/runtime/doRegister + local.set $6 + local.get $4 + local.tee $7 block $~lib/runtime/RETAIN|inlined.1 (result i32) - local.get $5 local.get $6 + local.get $7 call $~lib/runtime/doRetain - local.get $5 + local.get $6 end i32.store - local.get $3 - local.get $5 + local.get $4 + local.get $6 i32.store offset=4 - local.get $3 local.get $4 - i32.store offset=8 - local.get $3 - local.get $4 - local.get $2 - i32.shr_u - i32.store offset=12 local.get $5 - local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.store offset=12 + local.get $1 + if + local.get $6 + local.get $1 + local.get $5 + call $~lib/memory/memory.copy + end local.get $4 - call $~lib/memory/memory.copy - local.get $3 ) - (func $~lib/array/Array#get:length (; 28 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 27 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 29 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 28 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -2564,7 +2562,7 @@ if i32.const 0 i32.const 272 - i32.const 85 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -2577,7 +2575,7 @@ i32.add i32.load8_u ) - (func $std/array/isArraysEqual (; 30 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 29 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -2632,7 +2630,7 @@ end i32.const 1 ) - (func $~lib/array/Array#fill (; 31 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array#fill (; 30 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -2718,11 +2716,11 @@ end local.get $0 ) - (func $~lib/array/Array#get:length (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 31 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 32 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -2732,7 +2730,7 @@ if i32.const 0 i32.const 272 - i32.const 85 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -2745,7 +2743,7 @@ i32.add i32.load ) - (func $std/array/isArraysEqual (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 33 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -2800,10 +2798,16 @@ end i32.const 1 ) - (func $~lib/array/Array#get:length (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 34 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 35 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/runtime/HEADER_SIZE + i32.sub + i32.load offset=4 + ) (func $std/array/internalCapacity (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -2890,7 +2894,7 @@ if i32.const 0 i32.const 24 - i32.const 177 + i32.const 133 i32.const 8 call $~lib/env/abort unreachable @@ -2943,7 +2947,7 @@ if i32.const 0 i32.const 272 - i32.const 10 + i32.const 14 i32.const 64 call $~lib/env/abort unreachable @@ -3023,7 +3027,7 @@ if i32.const 0 i32.const 272 - i32.const 85 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -3048,7 +3052,7 @@ if i32.const 0 i32.const 272 - i32.const 220 + i32.const 245 i32.const 20 call $~lib/env/abort unreachable @@ -3075,6 +3079,8 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=12 local.set $2 @@ -3086,26 +3092,34 @@ i32.eq select local.set $3 - i32.const 0 - local.get $2 - local.get $3 - i32.add - call $~lib/array/Array#constructor - local.set $4 - local.get $4 + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + local.get $2 + local.get $3 + i32.add + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.const 4 + i32.const 2 + call $~lib/runtime/doMakeArray + end + local.set $6 + local.get $6 i32.load offset=4 - local.set $5 + local.set $7 local.get $2 i32.const 2 i32.shl - local.set $6 - local.get $5 + local.set $8 + local.get $7 local.get $0 i32.load offset=4 - local.get $6 + local.get $8 call $~lib/memory/memory.copy - local.get $5 - local.get $6 + local.get $7 + local.get $8 i32.add local.get $1 i32.load offset=4 @@ -3113,7 +3127,7 @@ i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $4 + local.get $6 ) (func $~lib/array/Array#copyWithin (; 44 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -3407,7 +3421,7 @@ if i32.const 0 i32.const 272 - i32.const 281 + i32.const 306 i32.const 20 call $~lib/env/abort unreachable @@ -3632,9 +3646,17 @@ i32.gt_s select local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor + block $~lib/runtime/MAKEARRAY|inlined.26 (result i32) + local.get $2 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.const 4 + i32.const 2 + call $~lib/runtime/doMakeArray + end local.set $6 local.get $6 i32.load offset=4 @@ -3714,6 +3736,10 @@ local.get $6 ) (func $~lib/array/Array#__set (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $3 local.get $0 local.get $1 i32.const 1 @@ -3729,8 +3755,7 @@ local.get $2 i32.store local.get $1 - local.get $0 - i32.load offset=12 + local.get $3 i32.ge_s if local.get $0 @@ -4221,36 +4246,7 @@ local.get $0 f32.convert_i32_s ) - (func $~lib/array/Array#constructor (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.5 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate - end - local.set $2 - local.get $2 - i32.const 9 - call $~lib/runtime/doRegister - end - local.get $1 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#map (; 80 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 79 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4261,24 +4257,32 @@ local.get $0 i32.load offset=12 local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - local.get $3 + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + local.get $2 + local.set $4 + i32.const 0 + local.set $3 + local.get $4 + local.get $3 + i32.const 9 + i32.const 2 + call $~lib/runtime/doMakeArray + end + local.set $5 + local.get $5 i32.load offset=4 - local.set $4 + local.set $6 block $break|0 i32.const 0 - local.set $5 + local.set $3 loop $repeat|0 - local.get $5 + local.get $3 local.get $2 - local.tee $6 + local.tee $4 local.get $0 i32.load offset=12 local.tee $7 - local.get $6 + local.get $4 local.get $7 i32.lt_s select @@ -4288,46 +4292,46 @@ block local.get $0 i32.load offset=4 - local.get $5 + local.get $3 i32.const 2 i32.shl i32.add i32.load - local.set $6 + local.set $4 block (result f32) i32.const 3 global.set $~lib/argc - local.get $6 - local.get $5 + local.get $4 + local.get $3 local.get $0 local.get $1 call_indirect (type $FUNCSIG$fiii) end local.set $8 - local.get $4 - local.get $5 + local.get $6 + local.get $3 i32.const 2 i32.shl i32.add local.get $8 f32.store end - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 + local.set $3 br $repeat|0 unreachable end unreachable end - local.get $3 + local.get $5 ) - (func $~lib/array/Array#get:length (; 81 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 80 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 82 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (; 81 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -4337,7 +4341,7 @@ if i32.const 0 i32.const 272 - i32.const 85 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -4350,7 +4354,7 @@ i32.add f32.load ) - (func $start:std/array~anonymous|22 (; 83 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|22 (; 82 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -4361,7 +4365,7 @@ global.set $std/array/i local.get $0 ) - (func $~lib/array/Array#map (; 84 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#map (; 83 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4371,24 +4375,32 @@ local.get $0 i32.load offset=12 local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - local.get $3 + block $~lib/runtime/MAKEARRAY|inlined.65 (result i32) + local.get $2 + local.set $4 + i32.const 0 + local.set $3 + local.get $4 + local.get $3 + i32.const 4 + i32.const 2 + call $~lib/runtime/doMakeArray + end + local.set $5 + local.get $5 i32.load offset=4 - local.set $4 + local.set $6 block $break|0 i32.const 0 - local.set $5 + local.set $3 loop $repeat|0 - local.get $5 + local.get $3 local.get $2 - local.tee $6 + local.tee $4 local.get $0 i32.load offset=12 local.tee $7 - local.get $6 + local.get $4 local.get $7 i32.lt_s select @@ -4398,49 +4410,49 @@ block local.get $0 i32.load offset=4 - local.get $5 + local.get $3 i32.const 2 i32.shl i32.add i32.load - local.set $6 + local.set $4 block (result i32) i32.const 3 global.set $~lib/argc - local.get $6 - local.get $5 + local.get $4 + local.get $3 local.get $0 local.get $1 call_indirect (type $FUNCSIG$iiii) end local.set $7 - local.get $4 - local.get $5 + local.get $6 + local.get $3 i32.const 2 i32.shl i32.add local.get $7 i32.store end - local.get $5 + local.get $3 i32.const 1 i32.add - local.set $5 + local.set $3 br $repeat|0 unreachable end unreachable end - local.get $3 + local.get $5 ) - (func $start:std/array~anonymous|23 (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|23 (; 84 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $std/array/i local.get $0 i32.add global.set $std/array/i local.get $0 ) - (func $start:std/array~anonymous|24 (; 86 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|24 (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -4450,32 +4462,40 @@ global.set $std/array/i local.get $0 ) - (func $start:std/array~anonymous|25 (; 87 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|25 (; 86 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.ge_s ) - (func $~lib/array/Array#filter (; 88 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#filter (; 87 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.set $2 + block $~lib/runtime/MAKEARRAY|inlined.66 (result i32) + i32.const 0 + local.set $3 + i32.const 0 + local.set $2 + local.get $3 + local.get $2 + i32.const 4 + i32.const 2 + call $~lib/runtime/doMakeArray + end + local.set $4 block $break|0 block i32.const 0 - local.set $3 + local.set $2 local.get $0 i32.load offset=12 - local.set $4 + local.set $3 end loop $repeat|0 + local.get $2 local.get $3 - local.get $4 local.tee $5 local.get $0 i32.load offset=12 @@ -4490,7 +4510,7 @@ block local.get $0 i32.load offset=4 - local.get $3 + local.get $2 i32.const 2 i32.shl i32.add @@ -4500,7 +4520,7 @@ i32.const 3 global.set $~lib/argc local.get $5 - local.get $3 + local.get $2 local.get $0 local.get $1 call_indirect (type $FUNCSIG$iiii) @@ -4508,24 +4528,24 @@ i32.const 0 i32.ne if - local.get $2 + local.get $4 local.get $5 call $~lib/array/Array#push drop end end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 + local.set $2 br $repeat|0 unreachable end unreachable end - local.get $2 + local.get $4 ) - (func $start:std/array~anonymous|26 (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|26 (; 88 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 i32.const 100 call $~lib/array/Array#push @@ -4538,7 +4558,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|27 (; 90 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|27 (; 89 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) global.get $std/array/i local.get $0 i32.add @@ -4547,7 +4567,7 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|28 (; 91 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|28 (; 90 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 call $~lib/array/Array#pop drop @@ -4559,12 +4579,12 @@ i32.const 2 i32.ge_s ) - (func $start:std/array~anonymous|29 (; 92 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|29 (; 91 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/array/Array#reduce (; 93 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 92 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4622,12 +4642,12 @@ end local.get $3 ) - (func $start:std/array~anonymous|30 (; 94 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|30 (; 93 ;) (type $FUNCSIG$iiiii) (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/array~anonymous|31 (; 95 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|31 (; 94 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 i32.const 0 i32.ne @@ -4639,7 +4659,7 @@ i32.gt_s end ) - (func $~lib/array/Array#reduce (; 96 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduce (; 95 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4697,7 +4717,7 @@ end local.get $3 ) - (func $start:std/array~anonymous|32 (; 97 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|32 (; 96 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 i32.const 0 i32.ne @@ -4709,7 +4729,7 @@ i32.gt_s end ) - (func $start:std/array~anonymous|33 (; 98 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|33 (; 97 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 i32.const 1 call $~lib/array/Array#push @@ -4718,12 +4738,12 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|34 (; 99 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|34 (; 98 ;) (type $FUNCSIG$iiiii) (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/array~anonymous|35 (; 100 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|35 (; 99 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/array/Array#pop drop @@ -4731,12 +4751,12 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|36 (; 101 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|36 (; 100 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/array/Array#reduceRight (; 102 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduceRight (; 101 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $2 @@ -4781,12 +4801,12 @@ end local.get $3 ) - (func $start:std/array~anonymous|37 (; 103 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|37 (; 102 ;) (type $FUNCSIG$iiiii) (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/array~anonymous|38 (; 104 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|38 (; 103 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 i32.const 0 i32.ne @@ -4798,7 +4818,7 @@ i32.gt_s end ) - (func $~lib/array/Array#reduceRight (; 105 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array#reduceRight (; 104 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) local.get $2 @@ -4843,7 +4863,7 @@ end local.get $3 ) - (func $start:std/array~anonymous|39 (; 106 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|39 (; 105 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 i32.const 0 i32.ne @@ -4855,7 +4875,7 @@ i32.gt_s end ) - (func $start:std/array~anonymous|40 (; 107 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|40 (; 106 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 i32.const 1 call $~lib/array/Array#push @@ -4864,12 +4884,12 @@ local.get $1 i32.add ) - (func $start:std/array~anonymous|41 (; 108 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|41 (; 107 ;) (type $FUNCSIG$iiiii) (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/array~anonymous|42 (; 109 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $start:std/array~anonymous|42 (; 108 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $3 call $~lib/array/Array#pop drop @@ -4877,7 +4897,7 @@ local.get $1 i32.add ) - (func $~lib/math/murmurHash3 (; 110 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) + (func $~lib/math/murmurHash3 (; 109 ;) (type $FUNCSIG$jj) (param $0 i64) (result i64) local.get $0 local.get $0 i64.const 33 @@ -4906,7 +4926,7 @@ local.set $0 local.get $0 ) - (func $~lib/math/splitMix32 (; 111 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/math/splitMix32 (; 110 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 1831565813 i32.add @@ -4941,7 +4961,7 @@ i32.shr_u i32.xor ) - (func $~lib/math/NativeMath.seedRandom (; 112 ;) (type $FUNCSIG$vj) (param $0 i64) + (func $~lib/math/NativeMath.seedRandom (; 111 ;) (type $FUNCSIG$vj) (param $0 i64) local.get $0 i64.eqz if @@ -4970,7 +4990,7 @@ call $~lib/math/splitMix32 global.set $~lib/math/random_state1_32 ) - (func $~lib/util/sort/insertionSort (; 113 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 112 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 f32) (local $5 i32) @@ -5066,7 +5086,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 114 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 113 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5366,7 +5386,7 @@ local.get $10 f32.store ) - (func $~lib/array/Array#sort (; 115 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 114 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 f32) @@ -5379,7 +5399,7 @@ if i32.const 0 i32.const 272 - i32.const 393 + i32.const 418 i32.const 4 call $~lib/env/abort unreachable @@ -5452,7 +5472,7 @@ end local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 116 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 115 ;) (type $FUNCSIG$iff) (param $0 f32) (param $1 f32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -5485,7 +5505,7 @@ i32.lt_s i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 117 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 116 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -5504,12 +5524,12 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/builtins/isNaN (; 118 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isNaN (; 117 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $std/array/isArraysEqual (; 119 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 118 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -5580,7 +5600,7 @@ end i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 120 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 119 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 f64) (local $5 i32) @@ -5676,7 +5696,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 121 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 120 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5976,7 +5996,7 @@ local.get $10 f64.store ) - (func $~lib/array/Array#sort (; 122 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 121 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 f64) @@ -5989,7 +6009,7 @@ if i32.const 0 i32.const 272 - i32.const 393 + i32.const 418 i32.const 4 call $~lib/env/abort unreachable @@ -6062,7 +6082,7 @@ end local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 123 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 122 ;) (type $FUNCSIG$idd) (param $0 f64) (param $1 f64) (result i32) (local $2 i64) (local $3 i64) local.get $0 @@ -6095,7 +6115,7 @@ i64.lt_s i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 124 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 123 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -6114,11 +6134,11 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/array/Array#get:length (; 125 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 124 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 126 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (; 125 ;) (type $FUNCSIG$dii) (param $0 i32) (param $1 i32) (result f64) local.get $1 local.get $0 i32.load offset=8 @@ -6128,7 +6148,7 @@ if i32.const 0 i32.const 272 - i32.const 85 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -6141,12 +6161,12 @@ i32.add f64.load ) - (func $~lib/builtins/isNaN (; 127 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 126 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $std/array/isArraysEqual (; 128 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual (; 127 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 i32.eqz @@ -6217,7 +6237,7 @@ end i32.const 1 ) - (func $~lib/util/sort/insertionSort (; 129 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 128 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6313,7 +6333,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 130 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 129 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6613,7 +6633,7 @@ local.get $10 i32.store ) - (func $~lib/array/Array#sort (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 130 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6624,7 +6644,7 @@ if i32.const 0 i32.const 272 - i32.const 393 + i32.const 418 i32.const 4 call $~lib/env/abort unreachable @@ -6697,12 +6717,12 @@ end local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 131 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 133 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 132 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -6721,7 +6741,7 @@ local.get $1 call $~lib/array/Array#sort ) - (func $~lib/util/sort/insertionSort (; 134 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort (; 133 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6817,7 +6837,7 @@ unreachable end ) - (func $~lib/util/sort/weakHeapSort (; 135 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (; 134 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7117,7 +7137,7 @@ local.get $10 i32.store ) - (func $~lib/array/Array#sort (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (; 135 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7128,7 +7148,7 @@ if i32.const 0 i32.const 272 - i32.const 393 + i32.const 418 i32.const 4 call $~lib/env/abort unreachable @@ -7201,7 +7221,7 @@ end local.get $0 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.gt_u @@ -7210,7 +7230,7 @@ i32.lt_u i32.sub ) - (func $~lib/array/Array#sort|trampoline (; 138 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort|trampoline (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange @@ -7229,27 +7249,64 @@ local.get $1 call $~lib/array/Array#sort ) + (func $~lib/array/Array.create (; 138 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/runtime/MAX_BYTELENGTH + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 0 + i32.const 272 + i32.const 44 + i32.const 62 + call $~lib/env/abort + unreachable + end + block $~lib/runtime/MAKEARRAY|inlined.68 (result i32) + local.get $0 + local.set $2 + i32.const 0 + local.set $1 + local.get $2 + local.get $1 + i32.const 4 + i32.const 2 + call $~lib/runtime/doMakeArray + end + local.set $3 + local.get $3 + i32.load offset=4 + i32.const 0 + local.get $3 + i32.load offset=8 + call $~lib/memory/memory.fill + local.get $3 + i32.const 0 + i32.store offset=12 + local.get $3 + ) (func $std/array/createReverseOrderedArray (; 139 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - i32.const 0 local.get $0 - call $~lib/array/Array#constructor + call $~lib/array/Array.create local.set $1 block $break|0 i32.const 0 local.set $2 loop $repeat|0 local.get $2 - local.get $1 - call $~lib/array/Array#get:length + local.get $0 i32.lt_s i32.eqz br_if $break|0 local.get $1 local.get $2 - local.get $1 - call $~lib/array/Array#get:length + local.get $0 i32.const 1 i32.sub local.get $2 @@ -7326,25 +7383,22 @@ (func $std/array/createRandomOrderedArray (; 141 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - i32.const 0 local.get $0 - call $~lib/array/Array#constructor + call $~lib/array/Array.create local.set $1 block $break|0 i32.const 0 local.set $2 loop $repeat|0 local.get $2 - local.get $1 - call $~lib/array/Array#get:length + local.get $0 i32.lt_s i32.eqz br_if $break|0 local.get $1 local.get $2 call $~lib/math/NativeMath.random - local.get $1 - call $~lib/array/Array#get:length + local.get $0 f64.convert_i32_s f64.mul i32.trunc_f64_s @@ -7423,7 +7477,7 @@ if i32.const 0 i32.const 152 - i32.const 813 + i32.const 814 i32.const 2 call $~lib/env/abort unreachable @@ -7457,85 +7511,50 @@ local.get $0 i32.sub ) - (func $~lib/array/Array>#constructor (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array.create> (; 150 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.6 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate - end - local.set $2 - local.get $2 - i32.const 11 - call $~lib/runtime/doRegister - end - local.get $1 + global.get $~lib/runtime/MAX_BYTELENGTH i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 + i32.shr_u + i32.gt_u + if + i32.const 0 + i32.const 272 + i32.const 44 + i32.const 62 + call $~lib/env/abort + unreachable + end + block $~lib/runtime/MAKEARRAY>|inlined.0 (result i32) + local.get $0 + local.set $2 + i32.const 0 + local.set $1 + local.get $2 + local.get $1 + i32.const 11 + i32.const 2 + call $~lib/runtime/doMakeArray + end + local.set $3 + local.get $3 + i32.load offset=4 + i32.const 0 + local.get $3 + i32.load offset=8 + call $~lib/memory/memory.fill + local.get $3 i32.const 0 i32.store offset=12 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - block - local.get $2 - block $~lib/runtime/RETAIN,Array>>|inlined.0 (result i32) - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.set $5 - local.get $0 - local.set $4 - local.get $5 - local.get $4 - call $~lib/runtime/doRetain - local.get $5 - end - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - end - br $continue|0 - end - end - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 + local.get $3 ) - (func $~lib/array/Array>#get:length (; 151 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/collector/dummy/__gc_release (; 152 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/collector/dummy/__gc_release (; 151 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) nop ) - (func $~lib/runtime/doRelease (; 153 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/runtime/doRelease (; 152 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) local.get $0 call $~lib/runtime/assertRegistered local.get $1 @@ -7544,11 +7563,26 @@ local.get $1 call $~lib/collector/dummy/__gc_release ) - (func $~lib/array/Array>#__set (; 154 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array>#__set (; 153 ;) (type $FUNCSIG$viii) (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.get $0 + i32.load offset=12 + local.set $3 + local.get $1 + local.get $3 + i32.gt_u + if + i32.const 0 + i32.const 272 + i32.const 109 + i32.const 38 + call $~lib/env/abort + unreachable + end local.get $0 local.get $1 i32.const 1 @@ -7561,44 +7595,41 @@ i32.const 2 i32.shl i32.add - local.set $3 - local.get $3 - i32.load local.set $4 - local.get $2 local.get $4 + i32.load + local.set $5 + local.get $2 + local.get $5 i32.ne if - block $~lib/runtime/RELEASE,Array>>|inlined.0 - local.get $4 - local.set $6 - local.get $0 - local.set $5 - local.get $6 - i32.const 0 - i32.ne - if - local.get $6 - local.get $5 - call $~lib/runtime/doRelease - end - end - local.get $3 - block $~lib/runtime/RETAIN,Array>>|inlined.1 (result i32) - local.get $2 - local.set $6 - local.get $0 - local.set $5 - local.get $6 + local.get $5 + i32.const 0 + i32.ne + if local.get $5 - call $~lib/runtime/doRetain + local.set $7 + local.get $0 + local.set $6 + local.get $7 local.get $6 + call $~lib/runtime/doRelease + end + local.get $4 + block $~lib/runtime/RETAIN,Array>>|inlined.0 (result i32) + local.get $2 + local.set $7 + local.get $0 + local.set $6 + local.get $7 + local.get $6 + call $~lib/runtime/doRetain + local.get $7 end i32.store end local.get $1 - local.get $0 - i32.load offset=12 + local.get $3 i32.ge_s if local.get $0 @@ -7608,64 +7639,38 @@ i32.store offset=12 end ) - (func $~lib/array/Array>#__get (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 0 - i32.const 272 - i32.const 85 - i32.const 61 - call $~lib/env/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $std/array/createReverseOrderedNestedArray (; 156 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedNestedArray (; 154 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - i32.const 0 + (local $3 i32) local.get $0 - call $~lib/array/Array>#constructor + call $~lib/array/Array.create> local.set $1 block $break|0 i32.const 0 local.set $2 loop $repeat|0 local.get $2 - local.get $1 - call $~lib/array/Array>#get:length + local.get $0 i32.lt_s i32.eqz br_if $break|0 block - local.get $1 - local.get $2 - i32.const 0 i32.const 1 - call $~lib/array/Array#constructor - call $~lib/array/Array>#__set - local.get $1 - local.get $2 - call $~lib/array/Array>#__get + call $~lib/array/Array.create + local.set $3 + local.get $3 i32.const 0 - local.get $1 - call $~lib/array/Array>#get:length + local.get $0 i32.const 1 i32.sub local.get $2 i32.sub call $~lib/array/Array#__set + local.get $1 + local.get $2 + local.get $3 + call $~lib/array/Array>#__set end local.get $2 i32.const 1 @@ -7678,7 +7683,7 @@ end local.get $1 ) - (func $start:std/array~anonymous|47 (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|47 (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.const 0 call $~lib/array/Array#__get @@ -7687,7 +7692,7 @@ call $~lib/array/Array#__get i32.sub ) - (func $~lib/util/sort/insertionSort> (; 158 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort> (; 156 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7783,7 +7788,7 @@ unreachable end ) - (func $~lib/array/Array>#sort (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#sort (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7794,7 +7799,7 @@ if i32.const 0 i32.const 272 - i32.const 393 + i32.const 418 i32.const 4 call $~lib/env/abort unreachable @@ -7857,6 +7862,45 @@ end local.get $0 ) + (func $~lib/array/Array>#get:length (; 158 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array>#__get (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 0 + i32.const 272 + i32.const 97 + i32.const 45 + call $~lib/env/abort + unreachable + end + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 0 + i32.const 272 + i32.const 100 + i32.const 61 + call $~lib/env/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) (func $std/array/isSorted> (; 160 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -7915,19 +7959,59 @@ if i32.const 0 i32.const 152 - i32.const 813 + i32.const 814 i32.const 2 call $~lib/env/abort unreachable end ) - (func $std/array/Proxy#constructor (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array.create> (; 162 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/runtime/MAX_BYTELENGTH + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 0 + i32.const 272 + i32.const 44 + i32.const 62 + call $~lib/env/abort + unreachable + end + block $~lib/runtime/MAKEARRAY>|inlined.0 (result i32) + local.get $0 + local.set $2 + i32.const 0 + local.set $1 + local.get $2 + local.get $1 + i32.const 12 + i32.const 2 + call $~lib/runtime/doMakeArray + end + local.set $3 + local.get $3 + i32.load offset=4 + i32.const 0 + local.get $3 + i32.load offset=8 + call $~lib/memory/memory.fill + local.get $3 + i32.const 0 + i32.store offset=12 + local.get $3 + ) + (func $std/array/Proxy#constructor (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 i32.eqz if block $~lib/runtime/REGISTER>|inlined.0 (result i32) - block $~lib/runtime/ALLOCATE|inlined.8 (result i32) + block $~lib/runtime/ALLOCATE|inlined.5 (result i32) i32.const 4 local.set $2 local.get $2 @@ -7945,86 +8029,26 @@ i32.store local.get $0 ) - (func $~lib/array/Array>#constructor (; 163 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.7 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate - end - local.set $2 - local.get $2 - i32.const 12 - call $~lib/runtime/doRegister - end - local.get $1 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - block - local.get $2 - block $~lib/runtime/RETAIN,Array>>|inlined.0 (result i32) - i32.const 0 - i32.const 0 - call $std/array/Proxy#constructor - local.set $5 - local.get $0 - local.set $4 - local.get $5 - local.get $4 - call $~lib/runtime/doRetain - local.get $5 - end - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - end - br $continue|0 - end - end - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array>#get:length (; 164 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array>#__set (; 165 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array>#__set (; 164 ;) (type $FUNCSIG$viii) (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.get $0 + i32.load offset=12 + local.set $3 + local.get $1 + local.get $3 + i32.gt_u + if + i32.const 0 + i32.const 272 + i32.const 109 + i32.const 38 + call $~lib/env/abort + unreachable + end local.get $0 local.get $1 i32.const 1 @@ -8037,44 +8061,41 @@ i32.const 2 i32.shl i32.add - local.set $3 - local.get $3 - i32.load local.set $4 - local.get $2 local.get $4 + i32.load + local.set $5 + local.get $2 + local.get $5 i32.ne if - block $~lib/runtime/RELEASE,Array>>|inlined.0 - local.get $4 - local.set $6 - local.get $0 - local.set $5 - local.get $6 - i32.const 0 - i32.ne - if - local.get $6 - local.get $5 - call $~lib/runtime/doRelease - end - end - local.get $3 - block $~lib/runtime/RETAIN,Array>>|inlined.1 (result i32) - local.get $2 - local.set $6 - local.get $0 - local.set $5 - local.get $6 + local.get $5 + i32.const 0 + i32.ne + if local.get $5 - call $~lib/runtime/doRetain + local.set $7 + local.get $0 + local.set $6 + local.get $7 local.get $6 + call $~lib/runtime/doRelease + end + local.get $4 + block $~lib/runtime/RETAIN,Array>>|inlined.0 (result i32) + local.get $2 + local.set $7 + local.get $0 + local.set $6 + local.get $7 + local.get $6 + call $~lib/runtime/doRetain + local.get $7 end i32.store end local.get $1 - local.get $0 - i32.load offset=12 + local.get $3 i32.ge_s if local.get $0 @@ -8084,28 +8105,25 @@ i32.store offset=12 end ) - (func $std/array/createReverseOrderedElementsArray (; 166 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $std/array/createReverseOrderedElementsArray (; 165 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - i32.const 0 local.get $0 - call $~lib/array/Array>#constructor + call $~lib/array/Array.create> local.set $1 block $break|0 i32.const 0 local.set $2 loop $repeat|0 local.get $2 - local.get $1 - call $~lib/array/Array>#get:length + local.get $0 i32.lt_s i32.eqz br_if $break|0 local.get $1 local.get $2 i32.const 0 - local.get $1 - call $~lib/array/Array>#get:length + local.get $0 i32.const 1 i32.sub local.get $2 @@ -8123,14 +8141,14 @@ end local.get $1 ) - (func $start:std/array~anonymous|48 (; 167 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|48 (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load local.get $1 i32.load i32.sub ) - (func $~lib/util/sort/insertionSort> (; 168 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/insertionSort> (; 167 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8226,7 +8244,7 @@ unreachable end ) - (func $~lib/array/Array>#sort (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#sort (; 168 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8237,7 +8255,7 @@ if i32.const 0 i32.const 272 - i32.const 393 + i32.const 418 i32.const 4 call $~lib/env/abort unreachable @@ -8300,7 +8318,23 @@ end local.get $0 ) + (func $~lib/array/Array>#get:length (; 169 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) (func $~lib/array/Array>#__get (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 0 + i32.const 272 + i32.const 97 + i32.const 45 + call $~lib/env/abort + unreachable + end local.get $1 local.get $0 i32.load offset=8 @@ -8310,7 +8344,7 @@ if i32.const 0 i32.const 272 - i32.const 85 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -8381,7 +8415,7 @@ if i32.const 0 i32.const 152 - i32.const 813 + i32.const 814 i32.const 2 call $~lib/env/abort unreachable @@ -8494,7 +8528,7 @@ if i32.const 0 i32.const 272 - i32.const 393 + i32.const 418 i32.const 4 call $~lib/env/abort unreachable @@ -8562,6 +8596,18 @@ i32.load offset=12 ) (func $~lib/array/Array#__get (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 0 + i32.const 272 + i32.const 97 + i32.const 45 + call $~lib/env/abort + unreachable + end local.get $1 local.get $0 i32.load offset=8 @@ -8571,7 +8617,7 @@ if i32.const 0 i32.const 272 - i32.const 85 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -8642,7 +8688,7 @@ if i32.const 0 i32.const 152 - i32.const 813 + i32.const 814 i32.const 2 call $~lib/env/abort unreachable @@ -8908,63 +8954,45 @@ end i32.const 1 ) - (func $~lib/array/Array#constructor (; 186 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array.create (; 186 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.9 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate - end - local.set $2 - local.get $2 - i32.const 14 - call $~lib/runtime/doRegister - end - local.get $1 + global.get $~lib/runtime/MAX_BYTELENGTH i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 + i32.shr_u + i32.gt_u + if + i32.const 0 + i32.const 272 + i32.const 44 + i32.const 62 + call $~lib/env/abort + unreachable + end + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + local.get $0 + local.set $2 + i32.const 0 + local.set $1 + local.get $2 + local.get $1 + i32.const 14 + i32.const 2 + call $~lib/runtime/doMakeArray + end + local.set $3 + local.get $3 + i32.load offset=4 + i32.const 0 + local.get $3 + i32.load offset=8 + call $~lib/memory/memory.fill + local.get $3 i32.const 0 i32.store offset=12 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - block - local.get $2 - i32.const 4200 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - end - br $continue|0 - end - end - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 + local.get $3 ) (func $~lib/string/String#charAt (; 187 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -8976,7 +9004,7 @@ if i32.const 0 i32.const 4376 - i32.const 36 + i32.const 37 i32.const 4 call $~lib/env/abort unreachable @@ -8989,7 +9017,7 @@ i32.const 4200 return end - block $~lib/runtime/ALLOCATE|inlined.10 (result i32) + block $~lib/runtime/ALLOCATE|inlined.6 (result i32) i32.const 2 local.set $2 local.get $2 @@ -9046,7 +9074,7 @@ i32.const 4200 return end - block $~lib/runtime/ALLOCATE|inlined.11 (result i32) + block $~lib/runtime/ALLOCATE|inlined.7 (result i32) local.get $4 local.set $5 local.get $5 @@ -9128,6 +9156,21 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + local.get $0 + i32.load offset=12 + local.set $3 + local.get $1 + local.get $3 + i32.gt_u + if + i32.const 0 + i32.const 272 + i32.const 109 + i32.const 38 + call $~lib/env/abort + unreachable + end local.get $0 local.get $1 i32.const 1 @@ -9140,44 +9183,41 @@ i32.const 2 i32.shl i32.add - local.set $3 - local.get $3 - i32.load local.set $4 - local.get $2 local.get $4 + i32.load + local.set $5 + local.get $2 + local.get $5 i32.ne if - block $~lib/runtime/RELEASE>|inlined.0 - local.get $4 - local.set $6 + local.get $5 + i32.const 0 + i32.ne + if + local.get $5 + local.set $7 local.get $0 - local.set $5 + local.set $6 + local.get $7 local.get $6 - i32.const 0 - i32.ne - if - local.get $6 - local.get $5 - call $~lib/runtime/doRelease - end + call $~lib/runtime/doRelease end - local.get $3 + local.get $4 block $~lib/runtime/RETAIN>|inlined.0 (result i32) local.get $2 - local.set $6 + local.set $7 local.get $0 - local.set $5 + local.set $6 + local.get $7 local.get $6 - local.get $5 call $~lib/runtime/doRetain - local.get $6 + local.get $7 end i32.store end local.get $1 - local.get $0 - i32.load offset=12 + local.get $3 i32.ge_s if local.get $0 @@ -9190,17 +9230,15 @@ (func $std/array/createRandomStringArray (; 192 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - i32.const 0 local.get $0 - call $~lib/array/Array#constructor + call $~lib/array/Array.create local.set $1 block $break|0 i32.const 0 local.set $2 loop $repeat|0 local.get $2 - local.get $1 - call $~lib/array/Array#get:length + local.get $0 i32.lt_s i32.eqz br_if $break|0 @@ -9239,7 +9277,7 @@ if i32.const 0 i32.const 4376 - i32.const 186 + i32.const 187 i32.const 4 call $~lib/env/abort unreachable @@ -9328,7 +9366,7 @@ local.get $0 return end - block $~lib/runtime/ALLOCATE|inlined.13 (result i32) + block $~lib/runtime/ALLOCATE|inlined.9 (result i32) local.get $3 local.set $4 local.get $4 @@ -9408,7 +9446,7 @@ local.get $5 i32.add local.set $6 - block $~lib/runtime/ALLOCATE|inlined.12 (result i32) + block $~lib/runtime/ALLOCATE|inlined.8 (result i32) local.get $6 i32.const 1 i32.shl @@ -9791,7 +9829,7 @@ local.get $1 i32.add local.set $2 - block $~lib/runtime/ALLOCATE|inlined.14 (result i32) + block $~lib/runtime/ALLOCATE|inlined.10 (result i32) local.get $2 i32.const 1 i32.shl @@ -9934,7 +9972,7 @@ i32.const 11 i32.add local.set $5 - block $~lib/runtime/ALLOCATE|inlined.15 (result i32) + block $~lib/runtime/ALLOCATE|inlined.11 (result i32) local.get $5 i32.const 1 i32.shl @@ -10057,7 +10095,7 @@ local.get $0 call $~lib/util/number/decimalCount32 local.set $1 - block $~lib/runtime/ALLOCATE|inlined.16 (result i32) + block $~lib/runtime/ALLOCATE|inlined.12 (result i32) local.get $1 i32.const 1 i32.shl @@ -10174,7 +10212,7 @@ i32.const 10 i32.add local.set $5 - block $~lib/runtime/ALLOCATE|inlined.17 (result i32) + block $~lib/runtime/ALLOCATE|inlined.13 (result i32) local.get $5 i32.const 1 i32.shl @@ -11669,7 +11707,7 @@ select return end - block $~lib/runtime/ALLOCATE|inlined.18 (result i32) + block $~lib/runtime/ALLOCATE|inlined.14 (result i32) i32.const 28 i32.const 1 i32.shl @@ -11813,7 +11851,7 @@ i32.const 28 i32.add local.set $5 - block $~lib/runtime/ALLOCATE|inlined.19 (result i32) + block $~lib/runtime/ALLOCATE|inlined.15 (result i32) local.get $5 i32.const 1 i32.shl @@ -12003,7 +12041,7 @@ end i32.const 0 local.set $9 - block $~lib/runtime/ALLOCATE|inlined.20 (result i32) + block $~lib/runtime/ALLOCATE|inlined.16 (result i32) local.get $5 local.get $4 local.get $2 @@ -12125,7 +12163,7 @@ i32.eqz if block $~lib/runtime/REGISTER|inlined.0 (result i32) - block $~lib/runtime/ALLOCATE|inlined.21 (result i32) + block $~lib/runtime/ALLOCATE|inlined.17 (result i32) i32.const 0 local.set $1 local.get $1 @@ -12140,36 +12178,7 @@ end local.get $0 ) - (func $~lib/array/Array#constructor (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.22 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate - end - local.set $2 - local.get $2 - i32.const 19 - call $~lib/runtime/doRegister - end - local.get $1 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array#join_ref (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_ref (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12211,7 +12220,7 @@ i32.const 15 i32.add local.set $5 - block $~lib/runtime/ALLOCATE|inlined.23 (result i32) + block $~lib/runtime/ALLOCATE|inlined.18 (result i32) local.get $5 i32.const 1 i32.shl @@ -12331,18 +12340,18 @@ call $~lib/runtime/doRegister end ) - (func $~lib/array/Array#join (; 222 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_ref return ) - (func $~lib/array/Array#toString (; 223 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 222 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa (; 224 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 223 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -12351,7 +12360,7 @@ call $~lib/util/number/itoa32 return ) - (func $~lib/util/number/itoa_stream (; 225 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 224 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12426,7 +12435,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 226 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 225 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12470,7 +12479,7 @@ i32.const 11 i32.add local.set $5 - block $~lib/runtime/ALLOCATE|inlined.24 (result i32) + block $~lib/runtime/ALLOCATE|inlined.19 (result i32) local.get $5 i32.const 1 i32.shl @@ -12572,25 +12581,25 @@ call $~lib/runtime/doRegister end ) - (func $~lib/array/Array#join (; 227 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 226 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int return ) - (func $~lib/array/Array#toString (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 227 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa (; 229 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 228 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 65535 i32.and call $~lib/util/number/utoa32 return ) - (func $~lib/util/number/itoa_stream (; 230 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 229 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12635,7 +12644,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 230 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12679,7 +12688,7 @@ i32.const 10 i32.add local.set $5 - block $~lib/runtime/ALLOCATE|inlined.25 (result i32) + block $~lib/runtime/ALLOCATE|inlined.20 (result i32) local.get $5 i32.const 1 i32.shl @@ -12781,18 +12790,18 @@ call $~lib/runtime/doRegister end ) - (func $~lib/array/Array#join (; 232 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 231 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int return ) - (func $~lib/array/Array#toString (; 233 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 232 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/util/number/decimalCount64 (; 234 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 233 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -12861,7 +12870,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa64_lut (; 235 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 234 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -12989,7 +12998,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 236 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 235 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13014,7 +13023,7 @@ local.get $2 call $~lib/util/number/decimalCount32 local.set $3 - block $~lib/runtime/ALLOCATE|inlined.26 (result i32) + block $~lib/runtime/ALLOCATE|inlined.21 (result i32) local.get $3 i32.const 1 i32.shl @@ -13039,7 +13048,7 @@ local.get $0 call $~lib/util/number/decimalCount64 local.set $3 - block $~lib/runtime/ALLOCATE|inlined.27 (result i32) + block $~lib/runtime/ALLOCATE|inlined.22 (result i32) local.get $3 i32.const 1 i32.shl @@ -13069,12 +13078,12 @@ call $~lib/runtime/doRegister end ) - (func $~lib/util/number/itoa (; 237 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 236 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/utoa64 return ) - (func $~lib/util/number/itoa_stream (; 238 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 237 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13140,7 +13149,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 238 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13184,7 +13193,7 @@ i32.const 20 i32.add local.set $5 - block $~lib/runtime/ALLOCATE|inlined.28 (result i32) + block $~lib/runtime/ALLOCATE|inlined.23 (result i32) local.get $5 i32.const 1 i32.shl @@ -13286,18 +13295,18 @@ call $~lib/runtime/doRegister end ) - (func $~lib/array/Array#join (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 239 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int return ) - (func $~lib/array/Array#toString (; 241 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 240 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/util/number/itoa64 (; 242 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 241 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13336,7 +13345,7 @@ local.get $1 i32.add local.set $4 - block $~lib/runtime/ALLOCATE|inlined.29 (result i32) + block $~lib/runtime/ALLOCATE|inlined.24 (result i32) local.get $4 i32.const 1 i32.shl @@ -13363,7 +13372,7 @@ local.get $1 i32.add local.set $4 - block $~lib/runtime/ALLOCATE|inlined.30 (result i32) + block $~lib/runtime/ALLOCATE|inlined.25 (result i32) local.get $4 i32.const 1 i32.shl @@ -13399,12 +13408,12 @@ call $~lib/runtime/doRegister end ) - (func $~lib/util/number/itoa (; 243 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa (; 242 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 call $~lib/util/number/itoa64 return ) - (func $~lib/util/number/itoa_stream (; 244 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) + (func $~lib/util/number/itoa_stream (; 243 ;) (type $FUNCSIG$iiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13492,7 +13501,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 245 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 244 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13536,7 +13545,7 @@ i32.const 21 i32.add local.set $5 - block $~lib/runtime/ALLOCATE|inlined.31 (result i32) + block $~lib/runtime/ALLOCATE|inlined.26 (result i32) local.get $5 i32.const 1 i32.shl @@ -13638,23 +13647,23 @@ call $~lib/runtime/doRegister end ) - (func $~lib/array/Array#join (; 246 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 245 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int return ) - (func $~lib/array/Array#toString (; 247 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 246 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/array/Array#toString (; 248 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#toString (; 247 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array#join ) - (func $~lib/array/Array>#join_arr (; 249 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#join_arr (; 248 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13758,125 +13767,25 @@ end local.get $3 ) - (func $~lib/array/Array>#join (; 250 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#join (; 249 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array>#join_arr return ) - (func $~lib/array/Array>#toString (; 251 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#toString (; 250 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array>#join ) - (func $~lib/array/Array#constructor (; 252 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.33 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate - end - local.set $2 - local.get $2 - i32.const 7 - call $~lib/runtime/doRegister - end - local.get $1 - i32.const 0 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array>#constructor (; 253 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.32 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate - end - local.set $2 - local.get $2 - i32.const 23 - call $~lib/runtime/doRegister - end - local.get $1 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - block - local.get $2 - block $~lib/runtime/RETAIN,Array>>|inlined.0 (result i32) - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.set $5 - local.get $0 - local.set $4 - local.get $5 - local.get $4 - call $~lib/runtime/doRetain - local.get $5 - end - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - end - br $continue|0 - end - end - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/util/number/itoa (; 254 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa (; 251 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 255 i32.and call $~lib/util/number/utoa32 return ) - (func $~lib/util/number/itoa_stream (; 255 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_stream (; 252 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13921,7 +13830,7 @@ end local.get $3 ) - (func $~lib/array/Array#join_int (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join_int (; 253 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13965,7 +13874,7 @@ i32.const 10 i32.add local.set $5 - block $~lib/runtime/ALLOCATE|inlined.34 (result i32) + block $~lib/runtime/ALLOCATE|inlined.27 (result i32) local.get $5 i32.const 1 i32.shl @@ -14067,13 +13976,13 @@ call $~lib/runtime/doRegister end ) - (func $~lib/array/Array#join (; 257 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (; 254 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array#join_int return ) - (func $~lib/array/Array>#join_arr (; 258 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#join_arr (; 255 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14177,189 +14086,18 @@ end local.get $3 ) - (func $~lib/array/Array>#join (; 259 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#join (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array>#join_arr return ) - (func $~lib/array/Array>#toString (; 260 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>#toString (; 257 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array>#join ) - (func $~lib/array/Array#constructor (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.36 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate - end - local.set $2 - local.get $2 - i32.const 8 - call $~lib/runtime/doRegister - end - local.get $1 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array>#constructor (; 262 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.35 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate - end - local.set $2 - local.get $2 - i32.const 24 - call $~lib/runtime/doRegister - end - local.get $1 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - block - local.get $2 - block $~lib/runtime/RETAIN,Array>>|inlined.0 (result i32) - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.set $5 - local.get $0 - local.set $4 - local.get $5 - local.get $4 - call $~lib/runtime/doRetain - local.get $5 - end - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - end - br $continue|0 - end - end - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array>>#constructor (; 263 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.37 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate - end - local.set $2 - local.get $2 - i32.const 25 - call $~lib/runtime/doRegister - end - local.get $1 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - if - block - local.get $2 - block $~lib/runtime/RETAIN>,Array>>>|inlined.0 (result i32) - i32.const 0 - i32.const 0 - call $~lib/array/Array>#constructor - local.set $5 - local.get $0 - local.set $4 - local.get $5 - local.get $4 - call $~lib/runtime/doRetain - local.get $5 - end - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - end - br $continue|0 - end - end - end - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/array/Array>#join_arr (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#join_arr (; 258 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14463,13 +14201,13 @@ end local.get $3 ) - (func $~lib/array/Array>#join (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>#join (; 259 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array>#join_arr return ) - (func $~lib/array/Array>>#join_arr (; 266 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>>#join_arr (; 260 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14573,23 +14311,24 @@ end local.get $3 ) - (func $~lib/array/Array>>#join (; 267 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array>>#join (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/array/Array>>#join_arr return ) - (func $~lib/array/Array>>#toString (; 268 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array>>#toString (; 262 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 4528 call $~lib/array/Array>>#join ) - (func $start:std/array (; 269 ;) (type $FUNCSIG$v) + (func $start:std/array (; 263 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/HEAP_BASE i32.const 7 i32.add @@ -14692,13 +14431,16 @@ call $~lib/array/Array#fill drop global.get $std/array/arr8 - block $~lib/runtime/WRAPARRAY|inlined.0 (result i32) - i32.const 248 + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + i32.const 5 local.set $0 + i32.const 248 + local.set $1 local.get $0 + local.get $1 i32.const 7 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -14718,13 +14460,16 @@ call $~lib/array/Array#fill drop global.get $std/array/arr8 - block $~lib/runtime/WRAPARRAY|inlined.1 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.1 (result i32) + i32.const 5 + local.set $1 i32.const 320 local.set $0 + local.get $1 local.get $0 i32.const 7 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -14744,13 +14489,16 @@ call $~lib/array/Array#fill drop global.get $std/array/arr8 - block $~lib/runtime/WRAPARRAY|inlined.2 (result i32) - i32.const 344 + block $~lib/runtime/MAKEARRAY|inlined.2 (result i32) + i32.const 5 local.set $0 + i32.const 344 + local.set $1 local.get $0 + local.get $1 i32.const 7 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -14770,13 +14518,16 @@ call $~lib/array/Array#fill drop global.get $std/array/arr8 - block $~lib/runtime/WRAPARRAY|inlined.3 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.3 (result i32) + i32.const 5 + local.set $1 i32.const 368 local.set $0 + local.get $1 local.get $0 i32.const 7 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -14796,13 +14547,16 @@ call $~lib/array/Array#fill drop global.get $std/array/arr8 - block $~lib/runtime/WRAPARRAY|inlined.4 (result i32) - i32.const 392 + block $~lib/runtime/MAKEARRAY|inlined.4 (result i32) + i32.const 5 local.set $0 + i32.const 392 + local.set $1 local.get $0 + local.get $1 i32.const 7 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -14822,13 +14576,16 @@ call $~lib/array/Array#fill drop global.get $std/array/arr32 - block $~lib/runtime/WRAPARRAY|inlined.0 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + i32.const 5 + local.set $1 i32.const 488 local.set $0 + local.get $1 local.get $0 i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -14848,13 +14605,16 @@ call $~lib/array/Array#fill drop global.get $std/array/arr32 - block $~lib/runtime/WRAPARRAY|inlined.1 (result i32) - i32.const 528 + block $~lib/runtime/MAKEARRAY|inlined.1 (result i32) + i32.const 5 local.set $0 + i32.const 528 + local.set $1 local.get $0 + local.get $1 i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -14874,13 +14634,16 @@ call $~lib/array/Array#fill drop global.get $std/array/arr32 - block $~lib/runtime/WRAPARRAY|inlined.2 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.2 (result i32) + i32.const 5 + local.set $1 i32.const 568 local.set $0 + local.get $1 local.get $0 i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -14900,13 +14663,16 @@ call $~lib/array/Array#fill drop global.get $std/array/arr32 - block $~lib/runtime/WRAPARRAY|inlined.3 (result i32) - i32.const 608 + block $~lib/runtime/MAKEARRAY|inlined.3 (result i32) + i32.const 5 local.set $0 + i32.const 608 + local.set $1 local.get $0 + local.get $1 i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -14926,13 +14692,16 @@ call $~lib/array/Array#fill drop global.get $std/array/arr32 - block $~lib/runtime/WRAPARRAY|inlined.4 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.4 (result i32) + i32.const 5 + local.set $1 i32.const 648 local.set $0 + local.get $1 local.get $0 i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -15278,13 +15047,16 @@ unreachable end global.get $std/array/out - block $~lib/runtime/WRAPARRAY|inlined.0 (result i32) - i32.const 688 + block $~lib/runtime/MAKEARRAY|inlined.1 (result i32) + i32.const 0 local.set $0 + i32.const 688 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $~lib/array/Array#concat drop @@ -15554,13 +15326,16 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.1 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.2 (result i32) + i32.const 5 + local.set $1 i32.const 752 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15568,13 +15343,16 @@ i32.const 3 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - block $~lib/runtime/WRAPARRAY|inlined.2 (result i32) - i32.const 792 + block $~lib/runtime/MAKEARRAY|inlined.3 (result i32) + i32.const 5 local.set $0 + i32.const 792 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -15587,13 +15365,16 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.3 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.4 (result i32) + i32.const 5 + local.set $1 i32.const 832 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15601,13 +15382,16 @@ i32.const 3 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - block $~lib/runtime/WRAPARRAY|inlined.4 (result i32) - i32.const 872 + block $~lib/runtime/MAKEARRAY|inlined.5 (result i32) + i32.const 5 local.set $0 + i32.const 872 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -15620,13 +15404,16 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.5 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.6 (result i32) + i32.const 5 + local.set $1 i32.const 912 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15634,13 +15421,16 @@ i32.const 2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - block $~lib/runtime/WRAPARRAY|inlined.6 (result i32) - i32.const 952 + block $~lib/runtime/MAKEARRAY|inlined.7 (result i32) + i32.const 5 local.set $0 + i32.const 952 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -15653,13 +15443,16 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.7 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.8 (result i32) + i32.const 5 + local.set $1 i32.const 992 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15667,13 +15460,16 @@ i32.const 2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - block $~lib/runtime/WRAPARRAY|inlined.8 (result i32) - i32.const 1032 + block $~lib/runtime/MAKEARRAY|inlined.9 (result i32) + i32.const 5 local.set $0 + i32.const 1032 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -15686,13 +15482,16 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.9 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.10 (result i32) + i32.const 5 + local.set $1 i32.const 1072 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15700,13 +15499,16 @@ i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - block $~lib/runtime/WRAPARRAY|inlined.10 (result i32) - i32.const 1112 + block $~lib/runtime/MAKEARRAY|inlined.11 (result i32) + i32.const 5 local.set $0 + i32.const 1112 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -15719,13 +15521,16 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.11 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.12 (result i32) + i32.const 5 + local.set $1 i32.const 1152 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15733,13 +15538,16 @@ i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - block $~lib/runtime/WRAPARRAY|inlined.12 (result i32) - i32.const 1192 + block $~lib/runtime/MAKEARRAY|inlined.13 (result i32) + i32.const 5 local.set $0 + i32.const 1192 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -15752,13 +15560,16 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.13 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.14 (result i32) + i32.const 5 + local.set $1 i32.const 1232 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15766,13 +15577,16 @@ i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - block $~lib/runtime/WRAPARRAY|inlined.14 (result i32) - i32.const 1272 + block $~lib/runtime/MAKEARRAY|inlined.15 (result i32) + i32.const 5 local.set $0 + i32.const 1272 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -15785,13 +15599,16 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.15 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.16 (result i32) + i32.const 5 + local.set $1 i32.const 1312 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15799,13 +15616,16 @@ i32.const -2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - block $~lib/runtime/WRAPARRAY|inlined.16 (result i32) - i32.const 1352 + block $~lib/runtime/MAKEARRAY|inlined.17 (result i32) + i32.const 5 local.set $0 + i32.const 1352 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -15818,13 +15638,16 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.17 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.18 (result i32) + i32.const 5 + local.set $1 i32.const 1392 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15832,13 +15655,16 @@ i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - block $~lib/runtime/WRAPARRAY|inlined.18 (result i32) - i32.const 1432 + block $~lib/runtime/MAKEARRAY|inlined.19 (result i32) + i32.const 5 local.set $0 + i32.const 1432 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -15851,13 +15677,16 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.19 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.20 (result i32) + i32.const 5 + local.set $1 i32.const 1472 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15865,13 +15694,16 @@ i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - block $~lib/runtime/WRAPARRAY|inlined.20 (result i32) - i32.const 1512 + block $~lib/runtime/MAKEARRAY|inlined.21 (result i32) + i32.const 5 local.set $0 + i32.const 1512 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -15884,13 +15716,16 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.21 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.22 (result i32) + i32.const 5 + local.set $1 i32.const 1552 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15898,13 +15733,16 @@ i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - block $~lib/runtime/WRAPARRAY|inlined.22 (result i32) - i32.const 1592 + block $~lib/runtime/MAKEARRAY|inlined.23 (result i32) + i32.const 5 local.set $0 + i32.const 1592 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -15917,13 +15755,16 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.23 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.24 (result i32) + i32.const 5 + local.set $1 i32.const 1632 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/cwArr global.get $std/array/cwArr @@ -15931,13 +15772,16 @@ i32.const -3 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - block $~lib/runtime/WRAPARRAY|inlined.24 (result i32) - i32.const 1672 + block $~lib/runtime/MAKEARRAY|inlined.25 (result i32) + i32.const 5 local.set $0 + i32.const 1672 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -16798,13 +16642,16 @@ i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#splice - block $~lib/runtime/WRAPARRAY|inlined.25 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.27 (result i32) + i32.const 5 + local.set $1 i32.const 1784 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -16818,13 +16665,16 @@ unreachable end global.get $std/array/sarr - block $~lib/runtime/WRAPARRAY|inlined.26 (result i32) - i32.const 1824 + block $~lib/runtime/MAKEARRAY|inlined.28 (result i32) + i32.const 0 local.set $0 + i32.const 1824 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -16837,26 +16687,32 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.27 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.29 (result i32) + i32.const 5 + local.set $1 i32.const 1840 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/sarr global.get $std/array/sarr i32.const 2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#splice - block $~lib/runtime/WRAPARRAY|inlined.28 (result i32) - i32.const 1880 + block $~lib/runtime/MAKEARRAY|inlined.30 (result i32) + i32.const 3 local.set $0 + i32.const 1880 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -16870,13 +16726,16 @@ unreachable end global.get $std/array/sarr - block $~lib/runtime/WRAPARRAY|inlined.29 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.31 (result i32) + i32.const 2 + local.set $1 i32.const 1912 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -16889,26 +16748,32 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.30 (result i32) - i32.const 1936 + block $~lib/runtime/MAKEARRAY|inlined.32 (result i32) + i32.const 5 local.set $0 + i32.const 1936 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/sarr global.get $std/array/sarr i32.const 2 i32.const 2 call $~lib/array/Array#splice - block $~lib/runtime/WRAPARRAY|inlined.31 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.33 (result i32) + i32.const 2 + local.set $1 i32.const 1976 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -16922,13 +16787,16 @@ unreachable end global.get $std/array/sarr - block $~lib/runtime/WRAPARRAY|inlined.32 (result i32) - i32.const 2000 + block $~lib/runtime/MAKEARRAY|inlined.34 (result i32) + i32.const 3 local.set $0 + i32.const 2000 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -16941,26 +16809,32 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.33 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.35 (result i32) + i32.const 5 + local.set $1 i32.const 2032 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/sarr global.get $std/array/sarr i32.const 0 i32.const 1 call $~lib/array/Array#splice - block $~lib/runtime/WRAPARRAY|inlined.34 (result i32) - i32.const 2072 + block $~lib/runtime/MAKEARRAY|inlined.36 (result i32) + i32.const 1 local.set $0 + i32.const 2072 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -16974,13 +16848,16 @@ unreachable end global.get $std/array/sarr - block $~lib/runtime/WRAPARRAY|inlined.35 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.37 (result i32) + i32.const 4 + local.set $1 i32.const 2096 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -16993,26 +16870,32 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.36 (result i32) - i32.const 2128 + block $~lib/runtime/MAKEARRAY|inlined.38 (result i32) + i32.const 5 local.set $0 + i32.const 2128 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/sarr global.get $std/array/sarr i32.const -1 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#splice - block $~lib/runtime/WRAPARRAY|inlined.37 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.39 (result i32) + i32.const 1 + local.set $1 i32.const 2168 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17026,13 +16909,16 @@ unreachable end global.get $std/array/sarr - block $~lib/runtime/WRAPARRAY|inlined.38 (result i32) - i32.const 2192 + block $~lib/runtime/MAKEARRAY|inlined.40 (result i32) + i32.const 4 local.set $0 + i32.const 2192 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17045,26 +16931,32 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.39 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.41 (result i32) + i32.const 5 + local.set $1 i32.const 2224 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/sarr global.get $std/array/sarr i32.const -2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#splice - block $~lib/runtime/WRAPARRAY|inlined.40 (result i32) - i32.const 2264 + block $~lib/runtime/MAKEARRAY|inlined.42 (result i32) + i32.const 2 local.set $0 + i32.const 2264 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17078,13 +16970,16 @@ unreachable end global.get $std/array/sarr - block $~lib/runtime/WRAPARRAY|inlined.41 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.43 (result i32) + i32.const 3 + local.set $1 i32.const 2288 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17097,26 +16992,32 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.42 (result i32) - i32.const 2320 + block $~lib/runtime/MAKEARRAY|inlined.44 (result i32) + i32.const 5 local.set $0 + i32.const 2320 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/sarr global.get $std/array/sarr i32.const -2 i32.const 1 call $~lib/array/Array#splice - block $~lib/runtime/WRAPARRAY|inlined.43 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.45 (result i32) + i32.const 1 + local.set $1 i32.const 2360 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17130,13 +17031,16 @@ unreachable end global.get $std/array/sarr - block $~lib/runtime/WRAPARRAY|inlined.44 (result i32) - i32.const 2384 + block $~lib/runtime/MAKEARRAY|inlined.46 (result i32) + i32.const 4 local.set $0 + i32.const 2384 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17149,26 +17053,32 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.45 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.47 (result i32) + i32.const 5 + local.set $1 i32.const 2416 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/sarr global.get $std/array/sarr i32.const -7 i32.const 1 call $~lib/array/Array#splice - block $~lib/runtime/WRAPARRAY|inlined.46 (result i32) - i32.const 2456 + block $~lib/runtime/MAKEARRAY|inlined.48 (result i32) + i32.const 1 local.set $0 + i32.const 2456 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17182,13 +17092,16 @@ unreachable end global.get $std/array/sarr - block $~lib/runtime/WRAPARRAY|inlined.47 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.49 (result i32) + i32.const 4 + local.set $1 i32.const 2480 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17201,26 +17114,32 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.48 (result i32) - i32.const 2512 + block $~lib/runtime/MAKEARRAY|inlined.50 (result i32) + i32.const 5 local.set $0 + i32.const 2512 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/sarr global.get $std/array/sarr i32.const -2 i32.const -1 call $~lib/array/Array#splice - block $~lib/runtime/WRAPARRAY|inlined.49 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.51 (result i32) + i32.const 0 + local.set $1 i32.const 2552 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17234,13 +17153,16 @@ unreachable end global.get $std/array/sarr - block $~lib/runtime/WRAPARRAY|inlined.50 (result i32) - i32.const 2568 + block $~lib/runtime/MAKEARRAY|inlined.52 (result i32) + i32.const 5 local.set $0 + i32.const 2568 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17253,26 +17175,32 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.51 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.53 (result i32) + i32.const 5 + local.set $1 i32.const 2608 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/sarr global.get $std/array/sarr i32.const 1 i32.const -2 call $~lib/array/Array#splice - block $~lib/runtime/WRAPARRAY|inlined.52 (result i32) - i32.const 2648 + block $~lib/runtime/MAKEARRAY|inlined.54 (result i32) + i32.const 0 local.set $0 + i32.const 2648 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17286,13 +17214,16 @@ unreachable end global.get $std/array/sarr - block $~lib/runtime/WRAPARRAY|inlined.53 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.55 (result i32) + i32.const 5 + local.set $1 i32.const 2664 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17305,26 +17236,32 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.54 (result i32) - i32.const 2704 + block $~lib/runtime/MAKEARRAY|inlined.56 (result i32) + i32.const 5 local.set $0 + i32.const 2704 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/sarr global.get $std/array/sarr i32.const 4 i32.const 0 call $~lib/array/Array#splice - block $~lib/runtime/WRAPARRAY|inlined.55 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.57 (result i32) + i32.const 0 + local.set $1 i32.const 2744 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17338,13 +17275,16 @@ unreachable end global.get $std/array/sarr - block $~lib/runtime/WRAPARRAY|inlined.56 (result i32) - i32.const 2760 + block $~lib/runtime/MAKEARRAY|inlined.58 (result i32) + i32.const 5 local.set $0 + i32.const 2760 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17357,26 +17297,32 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.57 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.59 (result i32) + i32.const 5 + local.set $1 i32.const 2800 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/sarr global.get $std/array/sarr i32.const 7 i32.const 0 call $~lib/array/Array#splice - block $~lib/runtime/WRAPARRAY|inlined.58 (result i32) - i32.const 2840 + block $~lib/runtime/MAKEARRAY|inlined.60 (result i32) + i32.const 0 local.set $0 + i32.const 2840 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17390,13 +17336,16 @@ unreachable end global.get $std/array/sarr - block $~lib/runtime/WRAPARRAY|inlined.59 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.61 (result i32) + i32.const 5 + local.set $1 i32.const 2856 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17409,26 +17358,32 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.60 (result i32) - i32.const 2896 + block $~lib/runtime/MAKEARRAY|inlined.62 (result i32) + i32.const 5 local.set $0 + i32.const 2896 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end global.set $std/array/sarr global.get $std/array/sarr i32.const 7 i32.const 5 call $~lib/array/Array#splice - block $~lib/runtime/WRAPARRAY|inlined.61 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.63 (result i32) + i32.const 0 + local.set $1 i32.const 2936 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -17442,13 +17397,16 @@ unreachable end global.get $std/array/sarr - block $~lib/runtime/WRAPARRAY|inlined.62 (result i32) - i32.const 2952 + block $~lib/runtime/MAKEARRAY|inlined.64 (result i32) + i32.const 5 local.set $0 + i32.const 2952 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -18003,9 +17961,9 @@ end block $break|0 i32.const 0 - local.set $0 + local.set $1 loop $repeat|0 - local.get $0 + local.get $1 i32.const 100 i32.lt_s i32.eqz @@ -18013,10 +17971,10 @@ global.get $std/array/arr call $~lib/array/Array#pop drop - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $repeat|0 unreachable end @@ -18647,13 +18605,16 @@ end drop global.get $std/array/f32ArrayTyped - block $~lib/runtime/WRAPARRAY|inlined.0 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.1 (result i32) + i32.const 8 + local.set $1 i32.const 3304 local.set $0 + local.get $1 local.get $0 i32.const 9 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -18661,7 +18622,7 @@ if i32.const 0 i32.const 152 - i32.const 824 + i32.const 825 i32.const 0 call $~lib/env/abort unreachable @@ -18675,13 +18636,16 @@ end drop global.get $std/array/f64ArrayTyped - block $~lib/runtime/WRAPARRAY|inlined.0 (result i32) - i32.const 3464 + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + i32.const 8 local.set $0 + i32.const 3464 + local.set $1 local.get $0 + local.get $1 i32.const 10 i32.const 3 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -18689,7 +18653,7 @@ if i32.const 0 i32.const 152 - i32.const 828 + i32.const 829 i32.const 0 call $~lib/env/abort unreachable @@ -18703,13 +18667,16 @@ end drop global.get $std/array/i32ArrayTyped - block $~lib/runtime/WRAPARRAY|inlined.63 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.67 (result i32) + i32.const 5 + local.set $1 i32.const 3616 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -18717,7 +18684,7 @@ if i32.const 0 i32.const 152 - i32.const 832 + i32.const 833 i32.const 0 call $~lib/env/abort unreachable @@ -18731,13 +18698,16 @@ end drop global.get $std/array/u32ArrayTyped - block $~lib/runtime/WRAPARRAY|inlined.5 (result i32) - i32.const 3728 + block $~lib/runtime/MAKEARRAY|inlined.5 (result i32) + i32.const 5 local.set $0 + i32.const 3728 + local.set $1 local.get $0 + local.get $1 i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -18745,7 +18715,7 @@ if i32.const 0 i32.const 152 - i32.const 836 + i32.const 837 i32.const 0 call $~lib/env/abort unreachable @@ -18770,13 +18740,16 @@ global.get $std/array/reversed1 call $std/array/assertSortedDefault global.get $std/array/reversed1 - block $~lib/runtime/WRAPARRAY|inlined.64 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.69 (result i32) + i32.const 1 + local.set $1 i32.const 4056 local.set $0 + local.get $1 local.get $0 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -18784,7 +18757,7 @@ if i32.const 0 i32.const 152 - i32.const 856 + i32.const 857 i32.const 0 call $~lib/env/abort unreachable @@ -18792,13 +18765,16 @@ global.get $std/array/reversed2 call $std/array/assertSortedDefault global.get $std/array/reversed2 - block $~lib/runtime/WRAPARRAY|inlined.65 (result i32) - i32.const 4080 + block $~lib/runtime/MAKEARRAY|inlined.70 (result i32) + i32.const 2 local.set $0 + i32.const 4080 + local.set $1 local.get $0 + local.get $1 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 0 call $std/array/isArraysEqual @@ -18806,7 +18782,7 @@ if i32.const 0 i32.const 152 - i32.const 859 + i32.const 860 i32.const 0 call $~lib/env/abort unreachable @@ -18821,7 +18797,7 @@ if i32.const 0 i32.const 152 - i32.const 862 + i32.const 863 i32.const 0 call $~lib/env/abort unreachable @@ -18836,7 +18812,7 @@ if i32.const 0 i32.const 152 - i32.const 865 + i32.const 866 i32.const 0 call $~lib/env/abort unreachable @@ -18851,7 +18827,7 @@ if i32.const 0 i32.const 152 - i32.const 868 + i32.const 869 i32.const 0 call $~lib/env/abort unreachable @@ -18866,7 +18842,7 @@ if i32.const 0 i32.const 152 - i32.const 871 + i32.const 872 i32.const 0 call $~lib/env/abort unreachable @@ -18881,7 +18857,7 @@ if i32.const 0 i32.const 152 - i32.const 874 + i32.const 875 i32.const 0 call $~lib/env/abort unreachable @@ -18933,7 +18909,7 @@ if i32.const 0 i32.const 152 - i32.const 904 + i32.const 905 i32.const 0 call $~lib/env/abort unreachable @@ -18948,40 +18924,22 @@ i32.const 0 call $std/array/assertSorted|trampoline end - block $~lib/runtime/WRAPARRAY|inlined.1 (result i32) - i32.const 4552 + block $~lib/runtime/MAKEARRAY|inlined.1 (result i32) + i32.const 2 local.set $0 + i32.const 4552 + local.set $1 local.get $0 + local.get $1 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end i32.const 4528 call $~lib/array/Array#join i32.const 4576 call $~lib/string/String.__eq i32.eqz - if - i32.const 0 - i32.const 152 - i32.const 913 - i32.const 0 - call $~lib/env/abort - unreachable - end - block $~lib/runtime/WRAPARRAY|inlined.67 (result i32) - i32.const 5120 - local.set $0 - local.get $0 - i32.const 4 - i32.const 2 - call $~lib/runtime/doWrapArray - end - i32.const 4200 - call $~lib/array/Array#join - i32.const 5152 - call $~lib/string/String.__eq - i32.eqz if i32.const 0 i32.const 152 @@ -18990,16 +18948,19 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.7 (result i32) - i32.const 5240 + block $~lib/runtime/MAKEARRAY|inlined.72 (result i32) + i32.const 3 local.set $0 + i32.const 5120 + local.set $1 local.get $0 - i32.const 8 + local.get $1 + i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end - i32.const 5216 - call $~lib/array/Array#join + i32.const 4200 + call $~lib/array/Array#join i32.const 5152 call $~lib/string/String.__eq i32.eqz @@ -19011,17 +18972,20 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.69 (result i32) - i32.const 5320 + block $~lib/runtime/MAKEARRAY|inlined.7 (result i32) + i32.const 3 local.set $0 + i32.const 5240 + local.set $1 local.get $0 - i32.const 4 + local.get $1 + i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end - i32.const 5296 - call $~lib/array/Array#join - i32.const 5344 + i32.const 5216 + call $~lib/array/Array#join + i32.const 5152 call $~lib/string/String.__eq i32.eqz if @@ -19032,17 +18996,20 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.2 (result i32) - i32.const 6672 + block $~lib/runtime/MAKEARRAY|inlined.74 (result i32) + i32.const 2 local.set $0 + i32.const 5320 + local.set $1 local.get $0 - i32.const 10 - i32.const 3 - call $~lib/runtime/doWrapArray + local.get $1 + i32.const 4 + i32.const 2 + call $~lib/runtime/doMakeArray end - i32.const 5472 - call $~lib/array/Array#join - i32.const 6736 + i32.const 5296 + call $~lib/array/Array#join + i32.const 5344 call $~lib/string/String.__eq i32.eqz if @@ -19053,17 +19020,20 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.1 (result i32) - i32.const 6888 + block $~lib/runtime/MAKEARRAY|inlined.2 (result i32) + i32.const 6 local.set $0 + i32.const 6672 + local.set $1 local.get $0 - i32.const 14 - i32.const 2 - call $~lib/runtime/doWrapArray + local.get $1 + i32.const 10 + i32.const 3 + call $~lib/runtime/doMakeArray end - i32.const 4200 - call $~lib/array/Array#join - i32.const 6832 + i32.const 5472 + call $~lib/array/Array#join + i32.const 6736 call $~lib/string/String.__eq i32.eqz if @@ -19074,62 +19044,94 @@ call $~lib/env/abort unreachable end - block (result i32) - i32.const 0 + block $~lib/runtime/MAKEARRAY|inlined.2 (result i32) i32.const 3 - call $~lib/array/Array#constructor local.set $0 + i32.const 6888 + local.set $1 local.get $0 - i32.load offset=4 + local.get $1 + i32.const 14 + i32.const 2 + call $~lib/runtime/doMakeArray + end + i32.const 4200 + call $~lib/array/Array#join + i32.const 6832 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 152 + i32.const 919 + i32.const 0 + call $~lib/env/abort + unreachable + end + block (result i32) + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + i32.const 3 + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.get $3 + i32.const 19 + i32.const 2 + call $~lib/runtime/doMakeArray + end local.set $1 local.get $1 + i32.load offset=4 + local.set $0 + local.get $0 block $~lib/runtime/RETAIN>|inlined.0 (result i32) i32.const 0 call $std/array/Ref#constructor - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne if - local.get $2 - local.get $0 + local.get $3 + local.get $1 call $~lib/runtime/doRetain end - local.get $2 + local.get $3 end i32.store - local.get $1 + local.get $0 block $~lib/runtime/RETAIN>|inlined.1 (result i32) i32.const 0 - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne if - local.get $2 - local.get $0 + local.get $3 + local.get $1 call $~lib/runtime/doRetain end - local.get $2 + local.get $3 end i32.store offset=4 - local.get $1 + local.get $0 block $~lib/runtime/RETAIN>|inlined.2 (result i32) i32.const 0 call $std/array/Ref#constructor - local.set $2 - local.get $2 + local.set $3 + local.get $3 i32.const 0 i32.ne if - local.get $2 - local.get $0 + local.get $3 + local.get $1 call $~lib/runtime/doRetain end - local.get $2 + local.get $3 end i32.store offset=8 - local.get $0 + local.get $1 end global.set $std/array/refArr global.get $std/array/refArr @@ -19141,7 +19143,7 @@ if i32.const 0 i32.const 152 - i32.const 920 + i32.const 921 i32.const 0 call $~lib/env/abort unreachable @@ -19154,7 +19156,7 @@ if i32.const 0 i32.const 152 - i32.const 924 + i32.const 925 i32.const 0 call $~lib/env/abort unreachable @@ -19167,7 +19169,7 @@ if i32.const 0 i32.const 152 - i32.const 925 + i32.const 926 i32.const 0 call $~lib/env/abort unreachable @@ -19180,7 +19182,7 @@ if i32.const 0 i32.const 152 - i32.const 926 + i32.const 927 i32.const 0 call $~lib/env/abort unreachable @@ -19193,43 +19195,26 @@ if i32.const 0 i32.const 152 - i32.const 927 + i32.const 928 i32.const 0 call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.1 (result i32) - i32.const 7128 + block $~lib/runtime/MAKEARRAY|inlined.1 (result i32) + i32.const 3 local.set $1 + i32.const 7128 + local.set $0 local.get $1 + local.get $0 i32.const 20 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $~lib/array/Array#toString i32.const 7152 call $~lib/string/String.__eq i32.eqz - if - i32.const 0 - i32.const 152 - i32.const 929 - i32.const 0 - call $~lib/env/abort - unreachable - end - block $~lib/runtime/WRAPARRAY|inlined.1 (result i32) - i32.const 7208 - local.set $1 - local.get $1 - i32.const 21 - i32.const 1 - call $~lib/runtime/doWrapArray - end - call $~lib/array/Array#toString - i32.const 7232 - call $~lib/string/String.__eq - i32.eqz if i32.const 0 i32.const 152 @@ -19238,16 +19223,19 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.1 (result i32) - i32.const 7312 - local.set $1 - local.get $1 - i32.const 16 + block $~lib/runtime/MAKEARRAY|inlined.1 (result i32) i32.const 3 - call $~lib/runtime/doWrapArray + local.set $1 + i32.const 7208 + local.set $0 + local.get $1 + local.get $0 + i32.const 21 + i32.const 1 + call $~lib/runtime/doMakeArray end - call $~lib/array/Array#toString - i32.const 7352 + call $~lib/array/Array#toString + i32.const 7232 call $~lib/string/String.__eq i32.eqz if @@ -19258,13 +19246,39 @@ call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.1 (result i32) - i32.const 7464 + block $~lib/runtime/MAKEARRAY|inlined.1 (result i32) + i32.const 3 local.set $1 + i32.const 7312 + local.set $0 local.get $1 + local.get $0 + i32.const 16 + i32.const 3 + call $~lib/runtime/doMakeArray + end + call $~lib/array/Array#toString + i32.const 7352 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 152 + i32.const 932 + i32.const 0 + call $~lib/env/abort + unreachable + end + block $~lib/runtime/MAKEARRAY|inlined.1 (result i32) + i32.const 4 + local.set $1 + i32.const 7464 + local.set $0 + local.get $1 + local.get $0 i32.const 22 i32.const 3 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $~lib/array/Array#toString i32.const 7512 @@ -19273,7 +19287,7 @@ if i32.const 0 i32.const 152 - i32.const 932 + i32.const 933 i32.const 0 call $~lib/env/abort unreachable @@ -19286,18 +19300,21 @@ if i32.const 0 i32.const 152 - i32.const 933 + i32.const 934 i32.const 0 call $~lib/env/abort unreachable end - block $~lib/runtime/WRAPARRAY|inlined.3 (result i32) - i32.const 7744 + block $~lib/runtime/MAKEARRAY|inlined.4 (result i32) + i32.const 4 local.set $1 + i32.const 7744 + local.set $0 local.get $1 + local.get $0 i32.const 14 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $~lib/array/Array#toString i32.const 7776 @@ -19306,45 +19323,59 @@ if i32.const 0 i32.const 152 - i32.const 934 + i32.const 935 i32.const 0 call $~lib/env/abort unreachable end block (result i32) - i32.const 0 - i32.const 2 - call $~lib/array/Array>#constructor + block $~lib/runtime/MAKEARRAY>|inlined.1 (result i32) + i32.const 2 + local.set $3 + i32.const 0 + local.set $2 + local.get $3 + local.get $2 + i32.const 11 + i32.const 2 + call $~lib/runtime/doMakeArray + end local.set $1 local.get $1 i32.load offset=4 local.set $0 local.get $0 - block $~lib/runtime/RETAIN,Array>>|inlined.2 (result i32) - block $~lib/runtime/WRAPARRAY|inlined.71 (result i32) - i32.const 7832 + block $~lib/runtime/RETAIN,Array>>|inlined.1 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.76 (result i32) + i32.const 2 local.set $2 + i32.const 7832 + local.set $3 local.get $2 + local.get $3 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end - local.set $2 - local.get $2 + local.set $3 + local.get $3 local.get $1 call $~lib/runtime/doRetain - local.get $2 + local.get $3 end i32.store local.get $0 - block $~lib/runtime/RETAIN,Array>>|inlined.3 (result i32) - block $~lib/runtime/WRAPARRAY|inlined.72 (result i32) + block $~lib/runtime/RETAIN,Array>>|inlined.2 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.77 (result i32) + i32.const 2 + local.set $3 i32.const 7856 local.set $2 + local.get $3 local.get $2 i32.const 4 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end local.set $2 local.get $2 @@ -19364,54 +19395,68 @@ if i32.const 0 i32.const 152 - i32.const 937 + i32.const 938 i32.const 0 call $~lib/env/abort unreachable end block (result i32) - i32.const 0 - i32.const 2 - call $~lib/array/Array>#constructor - local.set $0 - local.get $0 - i32.load offset=4 + block $~lib/runtime/MAKEARRAY>|inlined.0 (result i32) + i32.const 2 + local.set $2 + i32.const 0 + local.set $3 + local.get $2 + local.get $3 + i32.const 23 + i32.const 2 + call $~lib/runtime/doMakeArray + end local.set $1 local.get $1 - block $~lib/runtime/RETAIN,Array>>|inlined.1 (result i32) - block $~lib/runtime/WRAPARRAY|inlined.6 (result i32) + i32.load offset=4 + local.set $0 + local.get $0 + block $~lib/runtime/RETAIN,Array>>|inlined.0 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.6 (result i32) + i32.const 2 + local.set $3 i32.const 7936 local.set $2 + local.get $3 local.get $2 i32.const 7 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end local.set $2 local.get $2 - local.get $0 + local.get $1 call $~lib/runtime/doRetain local.get $2 end i32.store - local.get $1 - block $~lib/runtime/RETAIN,Array>>|inlined.2 (result i32) - block $~lib/runtime/WRAPARRAY|inlined.7 (result i32) - i32.const 7960 + local.get $0 + block $~lib/runtime/RETAIN,Array>>|inlined.1 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.7 (result i32) + i32.const 2 local.set $2 + i32.const 7960 + local.set $3 local.get $2 + local.get $3 i32.const 7 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end - local.set $2 - local.get $2 - local.get $0 + local.set $3 + local.get $3 + local.get $1 call $~lib/runtime/doRetain - local.get $2 + local.get $3 end i32.store offset=4 - local.get $0 + local.get $1 end global.set $std/array/subarr8 global.get $std/array/subarr8 @@ -19422,53 +19467,72 @@ if i32.const 0 i32.const 152 - i32.const 940 + i32.const 941 i32.const 0 call $~lib/env/abort unreachable end block (result i32) - i32.const 0 - i32.const 1 - call $~lib/array/Array>>#constructor + block $~lib/runtime/MAKEARRAY>>|inlined.0 (result i32) + i32.const 1 + local.set $3 + i32.const 0 + local.set $2 + local.get $3 + local.get $2 + i32.const 25 + i32.const 2 + call $~lib/runtime/doMakeArray + end local.set $0 local.get $0 i32.load offset=4 local.set $1 local.get $1 - block $~lib/runtime/RETAIN>,Array>>>|inlined.1 (result i32) + block $~lib/runtime/RETAIN>,Array>>>|inlined.0 (result i32) block (result i32) - i32.const 0 - i32.const 1 - call $~lib/array/Array>#constructor - local.set $2 - local.get $2 - i32.load offset=4 + block $~lib/runtime/MAKEARRAY>|inlined.1 (result i32) + i32.const 1 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + local.get $5 + i32.const 24 + i32.const 2 + call $~lib/runtime/doMakeArray + end local.set $3 local.get $3 - block $~lib/runtime/RETAIN,Array>>|inlined.2 (result i32) - block $~lib/runtime/WRAPARRAY|inlined.11 (result i32) + i32.load offset=4 + local.set $2 + local.get $2 + block $~lib/runtime/RETAIN,Array>>|inlined.1 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.11 (result i32) + i32.const 1 + local.set $5 i32.const 8056 local.set $4 + local.get $5 local.get $4 i32.const 8 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end local.set $4 local.get $4 - local.get $2 + local.get $3 call $~lib/runtime/doRetain local.get $4 end i32.store - local.get $2 + local.get $3 end - local.set $3 - local.get $3 + local.set $2 + local.get $2 local.get $0 call $~lib/runtime/doRetain - local.get $3 + local.get $2 end i32.store local.get $0 @@ -19482,13 +19546,13 @@ if i32.const 0 i32.const 152 - i32.const 943 + i32.const 944 i32.const 0 call $~lib/env/abort unreachable end ) - (func $std/array/main (; 270 ;) (type $FUNCSIG$v) + (func $std/array/main (; 264 ;) (type $FUNCSIG$v) global.get $~lib/started i32.eqz if @@ -19497,9 +19561,9 @@ global.set $~lib/started end ) - (func $start (; 271 ;) (type $FUNCSIG$v) + (func $start (; 265 ;) (type $FUNCSIG$v) call $start:std/array ) - (func $null (; 272 ;) (type $FUNCSIG$v) + (func $null (; 266 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index ab1b14bc..9ae8355e 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -326,7 +326,7 @@ if i32.const 0 i32.const 64 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -340,7 +340,7 @@ if i32.const 0 i32.const 64 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -364,7 +364,7 @@ if i32.const 0 i32.const 16 - i32.const 24 + i32.const 25 i32.const 43 call $~lib/env/abort unreachable @@ -1552,7 +1552,7 @@ if i32.const 0 i32.const 64 - i32.const 251 + i32.const 348 i32.const 57 call $~lib/env/abort unreachable @@ -1592,37 +1592,32 @@ i32.store offset=8 local.get $0 ) - (func $~lib/runtime/doWrapArray (; 11 ;) (type $FUNCSIG$i) (result i32) + (func $~lib/runtime/doMakeArray (; 11 ;) (type $FUNCSIG$i) (result i32) (local $0 i32) (local $1 i32) - (local $2 i32) i32.const 16 call $~lib/runtime/doAllocate i32.const 5 call $~lib/runtime/doRegister local.tee $0 - i32.const 148 - i32.load - local.tee $1 + i32.const 8 call $~lib/runtime/doAllocate - i32.const 5 + i32.const 2 call $~lib/runtime/doRegister - local.tee $2 + local.tee $1 i32.store local.get $0 - local.get $2 + local.get $1 i32.store offset=4 local.get $0 - local.get $1 + i32.const 8 i32.store offset=8 local.get $0 - local.get $1 i32.const 2 - i32.shr_u i32.store offset=12 - local.get $2 - i32.const 152 local.get $1 + i32.const 152 + i32.const 8 call $~lib/memory/memory.copy local.get $0 ) @@ -1636,25 +1631,18 @@ local.tee $2 i32.const 1073741816 i32.gt_u - if - i32.const 0 - i32.const 168 - i32.const 18 - i32.const 47 - call $~lib/env/abort - unreachable - end local.get $2 local.get $0 i32.const 8 i32.sub i32.load offset=4 i32.gt_u + i32.or if i32.const 0 i32.const 168 - i32.const 19 - i32.const 63 + i32.const 22 + i32.const 6 call $~lib/env/abort unreachable end @@ -1882,7 +1870,7 @@ i32.const 0 call $~lib/runtime/ArrayBufferView#constructor global.set $std/arraybuffer/arr8 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray drop global.get $std/arraybuffer/arr8 if (result i32) diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 234c9b46..22b2ee62 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -409,7 +409,7 @@ if i32.const 0 i32.const 64 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -424,7 +424,7 @@ if i32.const 0 i32.const 64 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -449,7 +449,7 @@ if i32.const 0 i32.const 16 - i32.const 24 + i32.const 25 i32.const 43 call $~lib/env/abort unreachable @@ -2051,7 +2051,7 @@ if i32.const 0 i32.const 64 - i32.const 251 + i32.const 348 i32.const 57 call $~lib/env/abort unreachable @@ -2125,42 +2125,46 @@ local.set $0 local.get $0 ) - (func $~lib/runtime/doWrapArray (; 19 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/runtime/doMakeArray (; 19 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) + (local $6 i32) i32.const 16 call $~lib/runtime/doAllocate - local.get $1 - call $~lib/runtime/doRegister - local.set $3 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $4 - local.get $4 - call $~lib/runtime/doAllocate - local.get $1 - call $~lib/runtime/doRegister - local.set $5 - local.get $3 - local.get $5 - i32.store - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store offset=8 - local.get $3 - local.get $4 local.get $2 - i32.shr_u - i32.store offset=12 - local.get $5 + call $~lib/runtime/doRegister + local.set $4 local.get $0 - local.get $4 - call $~lib/memory/memory.copy local.get $3 + i32.shl + local.set $5 + local.get $0 + local.get $3 + i32.shl + call $~lib/runtime/doAllocate + i32.const 2 + call $~lib/runtime/doRegister + local.set $6 + local.get $4 + local.get $6 + i32.store + local.get $4 + local.get $6 + i32.store offset=4 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $0 + i32.store offset=12 + local.get $1 + if + local.get $6 + local.get $1 + local.get $5 + call $~lib/memory/memory.copy + end + local.get $4 ) (func $~lib/typedarray/Int32Array#constructor (; 20 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2201,25 +2205,18 @@ local.get $3 global.get $~lib/runtime/MAX_BYTELENGTH i32.gt_u - if - i32.const 0 - i32.const 168 - i32.const 18 - i32.const 47 - call $~lib/env/abort - unreachable - end local.get $2 local.get $3 i32.add local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.gt_u + i32.or if i32.const 0 i32.const 168 - i32.const 19 - i32.const 63 + i32.const 22 + i32.const 6 call $~lib/env/abort unreachable end @@ -2272,6 +2269,7 @@ ) (func $start:std/arraybuffer (; 23 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) global.get $~lib/memory/HEAP_BASE i32.const 7 i32.add @@ -2531,13 +2529,16 @@ i32.const 1 call $~lib/typedarray/Uint8Array#constructor global.set $std/arraybuffer/arr8 - block $~lib/runtime/WRAPARRAY|inlined.0 (result i32) - i32.const 152 + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + i32.const 2 local.set $0 + i32.const 152 + local.set $1 local.get $0 + local.get $1 i32.const 5 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $~lib/arraybuffer/ArrayBuffer.isView> i32.eqz diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 7da2c2e4..5ec57987 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -163,7 +163,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -177,7 +177,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -240,7 +240,7 @@ if i32.const 0 i32.const 104 - i32.const 113 + i32.const 114 i32.const 44 call $~lib/env/abort unreachable @@ -270,28 +270,21 @@ local.get $2 i32.const 1073741816 i32.gt_u + local.get $1 + local.get $2 + i32.add + local.get $0 + i32.const 8 + i32.sub + i32.load offset=4 + i32.gt_u + i32.or end if i32.const 0 i32.const 152 - i32.const 18 - i32.const 47 - call $~lib/env/abort - unreachable - end - local.get $1 - local.get $2 - i32.add - local.get $0 - i32.const 8 - i32.sub - i32.load offset=4 - i32.gt_u - if - i32.const 0 - i32.const 152 - i32.const 19 - i32.const 63 + i32.const 22 + i32.const 6 call $~lib/env/abort unreachable end @@ -335,7 +328,7 @@ if i32.const 0 i32.const 152 - i32.const 42 + i32.const 45 i32.const 6 call $~lib/env/abort unreachable @@ -401,7 +394,7 @@ if i32.const 0 i32.const 152 - i32.const 56 + i32.const 59 i32.const 7 call $~lib/env/abort unreachable @@ -427,7 +420,7 @@ if i32.const 0 i32.const 152 - i32.const 67 + i32.const 70 i32.const 49 call $~lib/env/abort unreachable @@ -452,7 +445,7 @@ if i32.const 0 i32.const 152 - i32.const 75 + i32.const 78 i32.const 7 call $~lib/env/abort unreachable @@ -494,7 +487,7 @@ if i32.const 0 i32.const 152 - i32.const 84 + i32.const 87 i32.const 7 call $~lib/env/abort unreachable @@ -531,7 +524,7 @@ if i32.const 0 i32.const 152 - i32.const 178 + i32.const 181 i32.const 6 call $~lib/env/abort unreachable @@ -556,7 +549,7 @@ if i32.const 0 i32.const 152 - i32.const 90 + i32.const 93 i32.const 49 call $~lib/env/abort unreachable @@ -581,7 +574,7 @@ if i32.const 0 i32.const 152 - i32.const 98 + i32.const 101 i32.const 6 call $~lib/env/abort unreachable @@ -621,7 +614,7 @@ if i32.const 0 i32.const 152 - i32.const 107 + i32.const 110 i32.const 6 call $~lib/env/abort unreachable @@ -658,7 +651,7 @@ if i32.const 0 i32.const 152 - i32.const 187 + i32.const 190 i32.const 6 call $~lib/env/abort unreachable @@ -683,7 +676,7 @@ if i32.const 0 i32.const 152 - i32.const 116 + i32.const 119 i32.const 6 call $~lib/env/abort unreachable @@ -721,7 +714,7 @@ if i32.const 0 i32.const 152 - i32.const 125 + i32.const 128 i32.const 6 call $~lib/env/abort unreachable @@ -749,7 +742,7 @@ if i32.const 0 i32.const 152 - i32.const 131 + i32.const 134 i32.const 49 call $~lib/env/abort unreachable @@ -767,7 +760,7 @@ if i32.const 0 i32.const 152 - i32.const 139 + i32.const 142 i32.const 6 call $~lib/env/abort unreachable @@ -803,7 +796,7 @@ if i32.const 0 i32.const 152 - i32.const 147 + i32.const 150 i32.const 6 call $~lib/env/abort unreachable @@ -839,7 +832,7 @@ if i32.const 0 i32.const 152 - i32.const 196 + i32.const 199 i32.const 6 call $~lib/env/abort unreachable @@ -863,7 +856,7 @@ if i32.const 0 i32.const 152 - i32.const 152 + i32.const 155 i32.const 49 call $~lib/env/abort unreachable @@ -881,7 +874,7 @@ if i32.const 0 i32.const 152 - i32.const 160 + i32.const 163 i32.const 6 call $~lib/env/abort unreachable @@ -915,7 +908,7 @@ if i32.const 0 i32.const 152 - i32.const 168 + i32.const 171 i32.const 6 call $~lib/env/abort unreachable @@ -951,7 +944,7 @@ if i32.const 0 i32.const 152 - i32.const 204 + i32.const 207 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 341c0304..76ae06d9 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -415,7 +415,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -430,7 +430,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -455,7 +455,7 @@ if i32.const 0 i32.const 56 - i32.const 24 + i32.const 25 i32.const 43 call $~lib/env/abort unreachable @@ -490,7 +490,7 @@ if i32.const 0 i32.const 16 - i32.const 251 + i32.const 348 i32.const 57 call $~lib/env/abort unreachable @@ -572,7 +572,7 @@ if i32.const 0 i32.const 104 - i32.const 113 + i32.const 114 i32.const 44 call $~lib/env/abort unreachable @@ -606,25 +606,18 @@ local.get $3 global.get $~lib/runtime/MAX_BYTELENGTH i32.gt_u - if - i32.const 0 - i32.const 152 - i32.const 18 - i32.const 47 - call $~lib/env/abort - unreachable - end local.get $2 local.get $3 i32.add local.get $1 call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.gt_u + i32.or if i32.const 0 i32.const 152 - i32.const 19 - i32.const 63 + i32.const 22 + i32.const 6 call $~lib/env/abort unreachable end @@ -714,7 +707,7 @@ if i32.const 0 i32.const 152 - i32.const 42 + i32.const 45 i32.const 6 call $~lib/env/abort unreachable @@ -791,7 +784,7 @@ if i32.const 0 i32.const 152 - i32.const 56 + i32.const 59 i32.const 7 call $~lib/env/abort unreachable @@ -823,7 +816,7 @@ if i32.const 0 i32.const 152 - i32.const 67 + i32.const 70 i32.const 49 call $~lib/env/abort unreachable @@ -865,7 +858,7 @@ if i32.const 0 i32.const 152 - i32.const 75 + i32.const 78 i32.const 7 call $~lib/env/abort unreachable @@ -915,7 +908,7 @@ if i32.const 0 i32.const 152 - i32.const 84 + i32.const 87 i32.const 7 call $~lib/env/abort unreachable @@ -990,7 +983,7 @@ if i32.const 0 i32.const 152 - i32.const 178 + i32.const 181 i32.const 6 call $~lib/env/abort unreachable @@ -1019,7 +1012,7 @@ if i32.const 0 i32.const 152 - i32.const 90 + i32.const 93 i32.const 49 call $~lib/env/abort unreachable @@ -1059,7 +1052,7 @@ if i32.const 0 i32.const 152 - i32.const 98 + i32.const 101 i32.const 6 call $~lib/env/abort unreachable @@ -1095,7 +1088,7 @@ if i32.const 0 i32.const 152 - i32.const 107 + i32.const 110 i32.const 6 call $~lib/env/abort unreachable @@ -1131,7 +1124,7 @@ if i32.const 0 i32.const 152 - i32.const 187 + i32.const 190 i32.const 6 call $~lib/env/abort unreachable @@ -1166,7 +1159,7 @@ if i32.const 0 i32.const 152 - i32.const 116 + i32.const 119 i32.const 6 call $~lib/env/abort unreachable @@ -1206,7 +1199,7 @@ if i32.const 0 i32.const 152 - i32.const 125 + i32.const 128 i32.const 6 call $~lib/env/abort unreachable @@ -1240,7 +1233,7 @@ if i32.const 0 i32.const 152 - i32.const 131 + i32.const 134 i32.const 49 call $~lib/env/abort unreachable @@ -1266,7 +1259,7 @@ if i32.const 0 i32.const 152 - i32.const 139 + i32.const 142 i32.const 6 call $~lib/env/abort unreachable @@ -1300,7 +1293,7 @@ if i32.const 0 i32.const 152 - i32.const 147 + i32.const 150 i32.const 6 call $~lib/env/abort unreachable @@ -1334,7 +1327,7 @@ if i32.const 0 i32.const 152 - i32.const 196 + i32.const 199 i32.const 6 call $~lib/env/abort unreachable @@ -1362,7 +1355,7 @@ if i32.const 0 i32.const 152 - i32.const 152 + i32.const 155 i32.const 49 call $~lib/env/abort unreachable @@ -1388,7 +1381,7 @@ if i32.const 0 i32.const 152 - i32.const 160 + i32.const 163 i32.const 6 call $~lib/env/abort unreachable @@ -1422,7 +1415,7 @@ if i32.const 0 i32.const 152 - i32.const 168 + i32.const 171 i32.const 6 call $~lib/env/abort unreachable @@ -1456,7 +1449,7 @@ if i32.const 0 i32.const 152 - i32.const 204 + i32.const 207 i32.const 6 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index b247ef68..cae69d82 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -90,7 +90,7 @@ if i32.const 0 i32.const 48 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -104,7 +104,7 @@ if i32.const 0 i32.const 48 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 85867289..48194f0e 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -150,7 +150,7 @@ if i32.const 0 i32.const 48 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -165,7 +165,7 @@ if i32.const 0 i32.const 48 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index cbd76685..feb6b7cd 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -123,7 +123,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -137,7 +137,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -372,7 +372,7 @@ if i32.const 0 i32.const 56 - i32.const 24 + i32.const 25 i32.const 43 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 772abc7c..3387747c 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -156,7 +156,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -171,7 +171,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -453,7 +453,7 @@ if i32.const 0 i32.const 56 - i32.const 24 + i32.const 25 i32.const 43 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index 8789eb60..9e8d6bd3 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -84,7 +84,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -98,7 +98,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index da0ceebc..ed9fb286 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -143,7 +143,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -158,7 +158,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index a832a224..dc664bda 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -167,7 +167,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -181,7 +181,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index 08efa6cb..842394a7 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -211,7 +211,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -226,7 +226,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/runtime.optimized.wat b/tests/compiler/std/runtime.optimized.wat index 15d8230d..240f256f 100644 --- a/tests/compiler/std/runtime.optimized.wat +++ b/tests/compiler/std/runtime.optimized.wat @@ -2616,7 +2616,7 @@ if i32.const 0 i32.const 232 - i32.const 107 + i32.const 133 i32.const 8 call $~lib/env/abort unreachable @@ -2653,7 +2653,7 @@ if i32.const 0 i32.const 232 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -2667,7 +2667,7 @@ if i32.const 0 i32.const 232 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/runtime.untouched.wat b/tests/compiler/std/runtime.untouched.wat index 59331d29..41a292af 100644 --- a/tests/compiler/std/runtime.untouched.wat +++ b/tests/compiler/std/runtime.untouched.wat @@ -3304,7 +3304,7 @@ if i32.const 0 i32.const 232 - i32.const 107 + i32.const 133 i32.const 8 call $~lib/env/abort unreachable @@ -3345,7 +3345,7 @@ if i32.const 0 i32.const 232 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -3360,7 +3360,7 @@ if i32.const 0 i32.const 232 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index e660806a..c0ecab42 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -119,7 +119,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -133,7 +133,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -368,7 +368,7 @@ if i32.const 0 i32.const 56 - i32.const 24 + i32.const 25 i32.const 43 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 603f72da..17a61b71 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -156,7 +156,7 @@ if i32.const 0 i32.const 16 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -171,7 +171,7 @@ if i32.const 0 i32.const 16 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -453,7 +453,7 @@ if i32.const 0 i32.const 56 - i32.const 24 + i32.const 25 i32.const 43 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index f454ea81..da37a58e 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -36,7 +36,7 @@ if i32.const 0 i32.const 240 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -329,7 +329,7 @@ if i32.const 0 i32.const 240 - i32.const 10 + i32.const 14 i32.const 64 call $~lib/env/abort unreachable @@ -360,6 +360,10 @@ end ) (func $~lib/array/Array#__set (; 5 ;) (type $FUNCSIG$v) + (local $0 i32) + i32.const 44 + i32.load + local.set $0 i32.const 32 i32.const 2 call $~lib/array/ensureCapacity @@ -368,8 +372,7 @@ i32.const 2 i32.store i32.const 0 - i32.const 44 - i32.load + local.get $0 i32.ge_s if i32.const 44 @@ -387,7 +390,7 @@ if i32.const 0 i32.const 240 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -401,6 +404,10 @@ i64.load ) (func $~lib/array/Array#__set (; 7 ;) (type $FUNCSIG$v) + (local $0 i32) + i32.const 92 + i32.load + local.set $0 i32.const 80 i32.const 3 call $~lib/array/ensureCapacity @@ -409,8 +416,7 @@ i64.const 4 i64.store i32.const 0 - i32.const 92 - i32.load + local.get $0 i32.ge_s if i32.const 92 @@ -428,7 +434,7 @@ if i32.const 0 i32.const 240 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -442,6 +448,10 @@ f32.load ) (func $~lib/array/Array#__set (; 9 ;) (type $FUNCSIG$v) + (local $0 i32) + i32.const 132 + i32.load + local.set $0 i32.const 120 i32.const 2 call $~lib/array/ensureCapacity @@ -450,8 +460,7 @@ f32.const 2.5 f32.store i32.const 0 - i32.const 132 - i32.load + local.get $0 i32.ge_s if i32.const 132 @@ -469,7 +478,7 @@ if i32.const 0 i32.const 240 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -483,6 +492,10 @@ f64.load ) (func $~lib/array/Array#__set (; 11 ;) (type $FUNCSIG$v) + (local $0 i32) + i32.const 180 + i32.load + local.set $0 i32.const 168 i32.const 3 call $~lib/array/ensureCapacity @@ -491,8 +504,7 @@ f64.const 2.25 f64.store i32.const 0 - i32.const 180 - i32.load + local.get $0 i32.ge_s if i32.const 180 diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 7933e163..29eefd5c 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -52,7 +52,7 @@ if i32.const 0 i32.const 240 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -1837,7 +1837,7 @@ if i32.const 0 i32.const 280 - i32.const 107 + i32.const 133 i32.const 8 call $~lib/env/abort unreachable @@ -1889,7 +1889,7 @@ if i32.const 0 i32.const 240 - i32.const 10 + i32.const 14 i32.const 64 call $~lib/env/abort unreachable @@ -1928,6 +1928,10 @@ end ) (func $~lib/array/Array#__set (; 11 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $3 local.get $0 local.get $1 i32.const 1 @@ -1943,8 +1947,7 @@ local.get $2 i32.store local.get $1 - local.get $0 - i32.load offset=12 + local.get $3 i32.ge_s if local.get $0 @@ -1968,7 +1971,7 @@ if i32.const 0 i32.const 240 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -1982,6 +1985,10 @@ i64.load ) (func $~lib/array/Array#__set (; 14 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $3 local.get $0 local.get $1 i32.const 1 @@ -1997,8 +2004,7 @@ local.get $2 i64.store local.get $1 - local.get $0 - i32.load offset=12 + local.get $3 i32.ge_s if local.get $0 @@ -2022,7 +2028,7 @@ if i32.const 0 i32.const 240 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -2036,6 +2042,10 @@ f32.load ) (func $~lib/array/Array#__set (; 17 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $3 local.get $0 local.get $1 i32.const 1 @@ -2051,8 +2061,7 @@ local.get $2 f32.store local.get $1 - local.get $0 - i32.load offset=12 + local.get $3 i32.ge_s if local.get $0 @@ -2076,7 +2085,7 @@ if i32.const 0 i32.const 240 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -2090,6 +2099,10 @@ f64.load ) (func $~lib/array/Array#__set (; 20 ;) (type $FUNCSIG$viid) (param $0 i32) (param $1 i32) (param $2 f64) + (local $3 i32) + local.get $0 + i32.load offset=12 + local.set $3 local.get $0 local.get $1 i32.const 1 @@ -2105,8 +2118,7 @@ local.get $2 f64.store local.get $1 - local.get $0 - i32.load offset=12 + local.get $3 i32.ge_s if local.get $0 diff --git a/tests/compiler/std/string-utf8.optimized.wat b/tests/compiler/std/string-utf8.optimized.wat index 17aeccc5..0c17afed 100644 --- a/tests/compiler/std/string-utf8.optimized.wat +++ b/tests/compiler/std/string-utf8.optimized.wat @@ -1514,7 +1514,7 @@ if i32.const 0 i32.const 136 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -1528,7 +1528,7 @@ if i32.const 0 i32.const 136 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -1596,7 +1596,7 @@ if i32.const 0 i32.const 96 - i32.const 447 + i32.const 448 i32.const 8 call $~lib/env/abort unreachable @@ -1643,7 +1643,7 @@ if i32.const 0 i32.const 96 - i32.const 451 + i32.const 452 i32.const 8 call $~lib/env/abort unreachable @@ -1716,7 +1716,7 @@ if i32.const 0 i32.const 96 - i32.const 463 + i32.const 464 i32.const 8 call $~lib/env/abort unreachable @@ -1769,7 +1769,7 @@ if i32.const 0 i32.const 96 - i32.const 472 + i32.const 473 i32.const 4 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/string-utf8.untouched.wat b/tests/compiler/std/string-utf8.untouched.wat index a9a73b14..d2237c0f 100644 --- a/tests/compiler/std/string-utf8.untouched.wat +++ b/tests/compiler/std/string-utf8.untouched.wat @@ -1928,7 +1928,7 @@ if i32.const 0 i32.const 136 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -1943,7 +1943,7 @@ if i32.const 0 i32.const 136 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -2036,7 +2036,7 @@ if i32.const 0 i32.const 96 - i32.const 447 + i32.const 448 i32.const 8 call $~lib/env/abort unreachable @@ -2090,7 +2090,7 @@ if i32.const 0 i32.const 96 - i32.const 451 + i32.const 452 i32.const 8 call $~lib/env/abort unreachable @@ -2185,7 +2185,7 @@ if i32.const 0 i32.const 96 - i32.const 463 + i32.const 464 i32.const 8 call $~lib/env/abort unreachable @@ -2248,7 +2248,7 @@ if i32.const 0 i32.const 96 - i32.const 472 + i32.const 473 i32.const 4 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 227ab041..3e975099 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -81,98 +81,97 @@ (data (i32.const 1296) "\01\00\00\00\n\00\00\00c\00d\00e\00f\00g") (data (i32.const 1320) "\01\00\00\00\n\00\00\00d\00e\00f\00g\00h") (data (i32.const 1344) "\01\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m") - (data (i32.const 1384) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1432) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1472) "\01\00\00\00\n\00\00\00a\00,\00b\00,\00c") - (data (i32.const 1496) "\01\00\00\00\02\00\00\00.") - (data (i32.const 1512) "\01\00\00\00\02\00\00\00c") - (data (i32.const 1528) "\01\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c") - (data (i32.const 1552) "\01\00\00\00\04\00\00\00,\00 ") - (data (i32.const 1568) "\01\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c") - (data (i32.const 1592) "\01\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c") - (data (i32.const 1616) "\01\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,") - (data (i32.const 1640) "\02\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009") - (data (i32.const 2048) "\05\00\00\00\10\00\00\00p\06\00\00p\06\00\00\90\01\00\00d") - (data (i32.const 2072) "\01\00\00\00\02\00\00\008") - (data (i32.const 2088) "\01\00\00\00\n\00\00\00-\001\000\000\000") - (data (i32.const 2112) "\01\00\00\00\08\00\00\001\002\003\004") - (data (i32.const 2128) "\01\00\00\00\n\00\00\001\002\003\004\005") - (data (i32.const 2152) "\01\00\00\00\0c\00\00\001\002\003\004\005\006") - (data (i32.const 2176) "\01\00\00\00\0e\00\00\001\001\001\001\001\001\001") - (data (i32.const 2200) "\01\00\00\00\0e\00\00\001\002\003\004\005\006\007") - (data (i32.const 2224) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006") - (data (i32.const 2256) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007") - (data (i32.const 2288) "\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 2320) "\01\00\00\00\04\00\00\00-\001") - (data (i32.const 2336) "\01\00\00\00\08\00\00\001\000\000\000") - (data (i32.const 2352) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008") - (data (i32.const 2384) "\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 2416) "\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009") - (data (i32.const 2440) "\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000") - (data (i32.const 2472) "\01\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2504) "\01\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2536) "\01\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2576) "\01\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2616) "\01\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2664) "\01\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005") - (data (i32.const 2712) "\01\00\00\00\n\00\00\00-\001\002\003\004") - (data (i32.const 2736) "\01\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005") - (data (i32.const 2768) "\01\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2800) "\01\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2840) "\01\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2880) "\01\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005") - (data (i32.const 2928) "\01\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007") - (data (i32.const 2976) "\01\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008") - (data (i32.const 3024) "\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 3040) "\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 3056) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 3088) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") - (data (i32.const 3112) "\02\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8#constructor (; 32 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - i32.const 16 - call $~lib/runtime/doAllocate - i32.const 4 - call $~lib/runtime/doRegister - local.get $0 - call $~lib/runtime/ArrayBufferView#constructor - local.tee $1 - i32.const 0 - i32.store offset=12 - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - ) - (func $~lib/runtime/doReallocate (; 33 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/doReallocate (; 31 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3132,7 +3074,7 @@ i32.shl i32.const 0 local.get $0 - i32.const 5544 + i32.const 5496 i32.gt_u select i32.const 1 @@ -3172,12 +3114,12 @@ i32.eq if local.get $0 - i32.const 5544 + i32.const 5496 i32.le_u if i32.const 0 i32.const 96 - i32.const 107 + i32.const 133 i32.const 8 call $~lib/env/abort unreachable @@ -3202,7 +3144,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/ensureCapacity (; 34 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/ensureCapacity (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $1 @@ -3217,8 +3159,8 @@ i32.gt_u if i32.const 0 - i32.const 1440 - i32.const 10 + i32.const 1392 + i32.const 14 i32.const 64 call $~lib/env/abort unreachable @@ -3247,7 +3189,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#push (; 35 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#push (; 33 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 local.get $0 @@ -3270,7 +3212,7 @@ local.get $1 i32.store ) - (func $~lib/string/String#split (; 36 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#split (; 34 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3284,217 +3226,231 @@ if i32.const 0 i32.const 168 - i32.const 347 + i32.const 348 i32.const 4 call $~lib/env/abort unreachable end - local.get $2 - i32.eqz - if - i32.const 0 - call $~lib/array/Array#constructor - return - end - block $folding-inner0 - local.get $1 - i32.eqz - br_if $folding-inner0 - local.get $0 - i32.const 8 - i32.sub - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - i32.const 2147483647 - local.get $2 - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $1 - i32.const 8 - i32.sub - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - local.set $9 - local.get $3 - if - local.get $4 - i32.eqz - if - i32.const 1 - call $~lib/array/Array#constructor - local.tee $3 - i32.load offset=4 - i32.const 312 - i32.store - local.get $3 - return - end - else - local.get $4 - i32.eqz - if - i32.const 0 - call $~lib/array/Array#constructor - return - end - local.get $4 + block $folding-inner1 + block $folding-inner0 local.get $2 - local.get $4 + i32.eqz + br_if $folding-inner0 + local.get $1 + i32.eqz + br_if $folding-inner1 + local.get $0 + i32.const 8 + i32.sub + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + i32.const 2147483647 local.get $2 + local.get $2 + i32.const 0 i32.lt_s select - local.tee $4 - call $~lib/array/Array#constructor - local.tee $7 + local.set $2 + local.get $1 + i32.const 8 + i32.sub i32.load offset=4 - local.set $3 - i32.const 0 - local.set $1 - loop $repeat|0 - local.get $1 + i32.const 1 + i32.shr_u + local.tee $3 + local.set $9 + local.get $3 + if local.get $4 - i32.lt_s + i32.eqz if - i32.const 2 - call $~lib/runtime/doAllocate - local.tee $2 - local.get $1 i32.const 1 - i32.shl - local.get $0 - i32.add - i32.load16_u - i32.store16 - local.get $1 - i32.const 2 - i32.shl - local.get $3 - i32.add - local.get $2 - i32.const 1 - call $~lib/runtime/doRegister + call $~lib/runtime/doMakeArray + local.tee $3 + i32.load offset=4 + i32.const 312 i32.store + local.get $3 + return + end + else + local.get $4 + i32.eqz + br_if $folding-inner0 + local.get $4 + local.get $2 + local.get $4 + local.get $2 + i32.lt_s + select + local.tee $4 + call $~lib/runtime/doMakeArray + local.tee $7 + i32.load offset=4 + local.set $3 + i32.const 0 + local.set $1 + loop $repeat|0 local.get $1 + local.get $4 + i32.lt_s + if + i32.const 2 + call $~lib/runtime/doAllocate + i32.const 1 + call $~lib/runtime/doRegister + local.tee $2 + local.get $1 + i32.const 1 + i32.shl + local.get $0 + i32.add + i32.load16_u + i32.store16 + local.get $1 + i32.const 2 + i32.shl + local.get $3 + i32.add + local.get $2 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $repeat|0 + end + end + local.get $7 + return + end + i32.const 0 + call $~lib/runtime/doMakeArray + local.set $5 + loop $continue|1 + local.get $1 + i32.eqz + if + unreachable + end + local.get $0 + local.get $1 + local.get $6 + call $~lib/string/String#indexOf + local.tee $8 + i32.const -1 + i32.ne + if + local.get $8 + local.get $6 + i32.sub + local.tee $3 + i32.const 0 + i32.gt_s + if + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + call $~lib/runtime/doAllocate + local.tee $7 + local.get $6 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $3 + call $~lib/memory/memory.copy + local.get $5 + local.get $7 + i32.const 1 + call $~lib/runtime/doRegister + call $~lib/array/Array#push + else + local.get $5 + i32.const 312 + call $~lib/array/Array#push + end + local.get $10 i32.const 1 i32.add - local.set $1 - br $repeat|0 + local.tee $10 + local.get $2 + i32.eq + if + local.get $5 + return + end + local.get $8 + local.get $9 + i32.add + local.set $6 + br $continue|1 end end - local.get $7 + local.get $6 + i32.eqz + br_if $folding-inner1 + local.get $4 + local.get $6 + i32.sub + local.tee $1 + i32.const 0 + i32.gt_s + if + local.get $1 + i32.const 1 + i32.shl + local.tee $1 + call $~lib/runtime/doAllocate + local.tee $3 + local.get $6 + i32.const 1 + i32.shl + local.get $0 + i32.add + local.get $1 + call $~lib/memory/memory.copy + local.get $5 + local.get $3 + i32.const 1 + call $~lib/runtime/doRegister + call $~lib/array/Array#push + else + local.get $5 + i32.const 312 + call $~lib/array/Array#push + end + local.get $5 return end i32.const 0 - call $~lib/array/Array#constructor - local.set $5 - loop $continue|1 - local.get $0 - local.get $1 - local.get $6 - call $~lib/string/String#indexOf - local.tee $8 - i32.const -1 - i32.ne - if - local.get $8 - local.get $6 - i32.sub - local.tee $3 - i32.const 0 - i32.gt_s - if - local.get $3 - i32.const 1 - i32.shl - local.tee $3 - call $~lib/runtime/doAllocate - local.tee $7 - local.get $6 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $5 - local.get $7 - i32.const 1 - call $~lib/runtime/doRegister - call $~lib/array/Array#push - else - local.get $5 - i32.const 312 - call $~lib/array/Array#push - end - local.get $10 - i32.const 1 - i32.add - local.tee $10 - local.get $2 - i32.eq - if - local.get $5 - return - end - local.get $8 - local.get $9 - i32.add - local.set $6 - br $continue|1 - end - end - local.get $6 - i32.eqz - br_if $folding-inner0 - local.get $4 - local.get $6 - i32.sub - local.tee $1 - i32.const 0 - i32.gt_s - if - local.get $1 - i32.const 1 - i32.shl - local.tee $1 - call $~lib/runtime/doAllocate - local.tee $3 - local.get $6 - i32.const 1 - i32.shl - local.get $0 - i32.add - local.get $1 - call $~lib/memory/memory.copy - local.get $5 - local.get $3 - i32.const 1 - call $~lib/runtime/doRegister - call $~lib/array/Array#push - else - local.get $5 - i32.const 312 - call $~lib/array/Array#push - end - local.get $5 + call $~lib/runtime/doMakeArray return end i32.const 1 - call $~lib/array/Array#constructor + call $~lib/runtime/doMakeArray local.tee $3 i32.load offset=4 local.get $0 i32.store local.get $3 ) - (func $~lib/array/Array#__get (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 35 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 0 + i32.const 1392 + i32.const 97 + i32.const 45 + call $~lib/env/abort + unreachable + end local.get $1 local.get $0 i32.load offset=8 @@ -3503,8 +3459,8 @@ i32.ge_u if i32.const 0 - i32.const 1440 - i32.const 69 + i32.const 1392 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -3517,7 +3473,7 @@ i32.add i32.load ) - (func $~lib/util/number/decimalCount32 (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 36 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.const 100000 i32.lt_u @@ -3571,10 +3527,10 @@ end end ) - (func $~lib/util/number/utoa32_lut (; 39 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 37 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - i32.const 2060 + i32.const 2012 i32.load local.set $3 loop $continue|0 @@ -3681,7 +3637,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 38 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3723,7 +3679,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/util/number/utoa32 (; 41 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 39 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 @@ -3746,7 +3702,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/util/number/decimalCount64 (; 42 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 40 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) local.get $0 i64.const 1000000000000000 i64.lt_u @@ -3800,12 +3756,12 @@ end end ) - (func $~lib/util/number/utoa64_lut (; 43 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 41 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 2060 + i32.const 2012 i32.load local.set $3 loop $continue|0 @@ -3897,7 +3853,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 44 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 42 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3939,7 +3895,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/util/number/itoa64 (; 45 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 43 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4004,7 +3960,7 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/util/number/genDigits (; 46 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/util/number/genDigits (; 44 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i64) (local $9 i32) @@ -4039,7 +3995,7 @@ local.tee $7 call $~lib/util/number/decimalCount32 local.set $9 - i32.const 4108 + i32.const 4060 i32.load local.set $13 loop $continue|0 @@ -4415,7 +4371,7 @@ local.get $2 end ) - (func $~lib/util/number/prettify (; 47 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 45 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4677,7 +4633,7 @@ end end ) - (func $~lib/util/number/dtoa_core (; 48 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 46 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i64) (local $3 i32) (local $4 i64) @@ -4796,13 +4752,13 @@ local.tee $8 i32.sub global.set $~lib/util/number/_K - i32.const 3828 + i32.const 3780 i32.load local.get $8 i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 4036 + i32.const 3988 i32.load local.get $3 i32.const 1 @@ -4988,7 +4944,7 @@ local.get $11 i32.add ) - (func $~lib/string/String#substring (; 49 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#substring (; 47 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4997,7 +4953,7 @@ if i32.const 0 i32.const 168 - i32.const 186 + i32.const 187 i32.const 4 call $~lib/env/abort unreachable @@ -5086,14 +5042,14 @@ i32.const 1 call $~lib/runtime/doRegister ) - (func $~lib/util/number/dtoa (; 50 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 48 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) local.get $0 f64.const 0 f64.eq if - i32.const 3032 + i32.const 2984 return end local.get $0 @@ -5106,11 +5062,11 @@ local.get $0 f64.ne if - i32.const 3048 + i32.const 3000 return end - i32.const 3064 - i32.const 3096 + i32.const 3016 + i32.const 3048 local.get $0 f64.const 0 f64.lt @@ -5131,7 +5087,7 @@ call $~lib/runtime/assertUnregistered local.get $1 ) - (func $start:std/string (; 51 ;) (type $FUNCSIG$v) + (func $start:std/string (; 49 ;) (type $FUNCSIG$v) (local $0 i32) global.get $std/string/str i32.const 16 @@ -5186,7 +5142,7 @@ call $~lib/env/abort unreachable end - i32.const 5544 + i32.const 5496 global.set $~lib/allocator/arena/startOffset global.get $~lib/allocator/arena/startOffset global.set $~lib/allocator/arena/offset @@ -6692,8 +6648,8 @@ call $~lib/env/abort unreachable end - i32.const 1480 - i32.const 1504 + i32.const 1432 + i32.const 1456 i32.const 2147483647 call $~lib/string/String#split global.set $std/string/sa @@ -6706,7 +6662,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 1480 + i32.const 1432 call $~lib/string/String.__eq local.set $0 end @@ -6720,7 +6676,7 @@ call $~lib/env/abort unreachable end - i32.const 1480 + i32.const 1432 i32.const 528 i32.const 2147483647 call $~lib/string/String#split @@ -6756,7 +6712,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq local.set $0 end @@ -6770,8 +6726,8 @@ call $~lib/env/abort unreachable end - i32.const 1536 - i32.const 1560 + i32.const 1488 + i32.const 1512 i32.const 2147483647 call $~lib/string/String#split global.set $std/string/sa @@ -6806,7 +6762,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq local.set $0 end @@ -6820,7 +6776,7 @@ call $~lib/env/abort unreachable end - i32.const 1576 + i32.const 1528 i32.const 528 i32.const 2147483647 call $~lib/string/String#split @@ -6867,7 +6823,7 @@ global.get $std/string/sa i32.const 3 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq local.set $0 end @@ -6881,7 +6837,7 @@ call $~lib/env/abort unreachable end - i32.const 1600 + i32.const 1552 i32.const 528 i32.const 2147483647 call $~lib/string/String#split @@ -6928,7 +6884,7 @@ global.get $std/string/sa i32.const 3 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq local.set $0 end @@ -6942,7 +6898,7 @@ call $~lib/env/abort unreachable end - i32.const 1624 + i32.const 1576 i32.const 528 i32.const 2147483647 call $~lib/string/String#split @@ -6979,7 +6935,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq local.set $0 end @@ -7039,7 +6995,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq local.set $0 end @@ -7096,7 +7052,7 @@ call $~lib/env/abort unreachable end - i32.const 1480 + i32.const 1432 i32.const 528 i32.const 1 call $~lib/string/String#split @@ -7160,7 +7116,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq local.set $0 end @@ -7210,7 +7166,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq local.set $0 end @@ -7224,7 +7180,7 @@ call $~lib/env/abort unreachable end - i32.const 1480 + i32.const 1432 i32.const 528 i32.const -1 call $~lib/string/String#split @@ -7260,7 +7216,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq local.set $0 end @@ -7302,7 +7258,7 @@ end i32.const 8 call $~lib/util/number/itoa32 - i32.const 2080 + i32.const 2032 call $~lib/string/String.__eq i32.eqz if @@ -7328,7 +7284,7 @@ end i32.const -1000 call $~lib/util/number/itoa32 - i32.const 2096 + i32.const 2048 call $~lib/string/String.__eq i32.eqz if @@ -7341,7 +7297,7 @@ end i32.const 1234 call $~lib/util/number/itoa32 - i32.const 2120 + i32.const 2072 call $~lib/string/String.__eq i32.eqz if @@ -7354,7 +7310,7 @@ end i32.const 12345 call $~lib/util/number/itoa32 - i32.const 2136 + i32.const 2088 call $~lib/string/String.__eq i32.eqz if @@ -7367,7 +7323,7 @@ end i32.const 123456 call $~lib/util/number/itoa32 - i32.const 2160 + i32.const 2112 call $~lib/string/String.__eq i32.eqz if @@ -7380,7 +7336,7 @@ end i32.const 1111111 call $~lib/util/number/itoa32 - i32.const 2184 + i32.const 2136 call $~lib/string/String.__eq i32.eqz if @@ -7393,7 +7349,7 @@ end i32.const 1234567 call $~lib/util/number/itoa32 - i32.const 2208 + i32.const 2160 call $~lib/string/String.__eq i32.eqz if @@ -7406,7 +7362,7 @@ end i32.const 2147483646 call $~lib/util/number/itoa32 - i32.const 2232 + i32.const 2184 call $~lib/string/String.__eq i32.eqz if @@ -7419,7 +7375,7 @@ end i32.const 2147483647 call $~lib/util/number/itoa32 - i32.const 2264 + i32.const 2216 call $~lib/string/String.__eq i32.eqz if @@ -7432,7 +7388,7 @@ end i32.const -2147483648 call $~lib/util/number/itoa32 - i32.const 2296 + i32.const 2248 call $~lib/string/String.__eq i32.eqz if @@ -7445,7 +7401,7 @@ end i32.const -1 call $~lib/util/number/itoa32 - i32.const 2328 + i32.const 2280 call $~lib/string/String.__eq i32.eqz if @@ -7471,7 +7427,7 @@ end i32.const 1000 call $~lib/util/number/utoa32 - i32.const 2344 + i32.const 2296 call $~lib/string/String.__eq i32.eqz if @@ -7484,7 +7440,7 @@ end i32.const 2147483647 call $~lib/util/number/utoa32 - i32.const 2264 + i32.const 2216 call $~lib/string/String.__eq i32.eqz if @@ -7497,7 +7453,7 @@ end i32.const -2147483648 call $~lib/util/number/utoa32 - i32.const 2360 + i32.const 2312 call $~lib/string/String.__eq i32.eqz if @@ -7510,7 +7466,7 @@ end i32.const -1 call $~lib/util/number/utoa32 - i32.const 2392 + i32.const 2344 call $~lib/string/String.__eq i32.eqz if @@ -7536,7 +7492,7 @@ end i64.const 1234 call $~lib/util/number/utoa64 - i32.const 2120 + i32.const 2072 call $~lib/string/String.__eq i32.eqz if @@ -7549,7 +7505,7 @@ end i64.const 99999999 call $~lib/util/number/utoa64 - i32.const 2424 + i32.const 2376 call $~lib/string/String.__eq i32.eqz if @@ -7562,7 +7518,7 @@ end i64.const 100000000 call $~lib/util/number/utoa64 - i32.const 2448 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if @@ -7575,7 +7531,7 @@ end i64.const 4294967295 call $~lib/util/number/utoa64 - i32.const 2392 + i32.const 2344 call $~lib/string/String.__eq i32.eqz if @@ -7588,7 +7544,7 @@ end i64.const 68719476735 call $~lib/util/number/utoa64 - i32.const 2480 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if @@ -7601,7 +7557,7 @@ end i64.const 868719476735 call $~lib/util/number/utoa64 - i32.const 2512 + i32.const 2464 call $~lib/string/String.__eq i32.eqz if @@ -7614,7 +7570,7 @@ end i64.const 999868719476735 call $~lib/util/number/utoa64 - i32.const 2544 + i32.const 2496 call $~lib/string/String.__eq i32.eqz if @@ -7627,7 +7583,7 @@ end i64.const 9999868719476735 call $~lib/util/number/utoa64 - i32.const 2584 + i32.const 2536 call $~lib/string/String.__eq i32.eqz if @@ -7640,7 +7596,7 @@ end i64.const 19999868719476735 call $~lib/util/number/utoa64 - i32.const 2624 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if @@ -7653,7 +7609,7 @@ end i64.const -1 call $~lib/util/number/utoa64 - i32.const 2672 + i32.const 2624 call $~lib/string/String.__eq i32.eqz if @@ -7679,7 +7635,7 @@ end i64.const -1234 call $~lib/util/number/itoa64 - i32.const 2720 + i32.const 2672 call $~lib/string/String.__eq i32.eqz if @@ -7692,7 +7648,7 @@ end i64.const 4294967295 call $~lib/util/number/itoa64 - i32.const 2392 + i32.const 2344 call $~lib/string/String.__eq i32.eqz if @@ -7705,7 +7661,7 @@ end i64.const -4294967295 call $~lib/util/number/itoa64 - i32.const 2744 + i32.const 2696 call $~lib/string/String.__eq i32.eqz if @@ -7718,7 +7674,7 @@ end i64.const 68719476735 call $~lib/util/number/itoa64 - i32.const 2480 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if @@ -7731,7 +7687,7 @@ end i64.const -68719476735 call $~lib/util/number/itoa64 - i32.const 2776 + i32.const 2728 call $~lib/string/String.__eq i32.eqz if @@ -7744,7 +7700,7 @@ end i64.const -868719476735 call $~lib/util/number/itoa64 - i32.const 2808 + i32.const 2760 call $~lib/string/String.__eq i32.eqz if @@ -7757,7 +7713,7 @@ end i64.const -999868719476735 call $~lib/util/number/itoa64 - i32.const 2848 + i32.const 2800 call $~lib/string/String.__eq i32.eqz if @@ -7770,7 +7726,7 @@ end i64.const -19999868719476735 call $~lib/util/number/itoa64 - i32.const 2888 + i32.const 2840 call $~lib/string/String.__eq i32.eqz if @@ -7783,7 +7739,7 @@ end i64.const 9223372036854775807 call $~lib/util/number/itoa64 - i32.const 2936 + i32.const 2888 call $~lib/string/String.__eq i32.eqz if @@ -7796,7 +7752,7 @@ end i64.const -9223372036854775808 call $~lib/util/number/itoa64 - i32.const 2984 + i32.const 2936 call $~lib/string/String.__eq i32.eqz if @@ -7809,7 +7765,7 @@ end f64.const 0 call $~lib/util/number/dtoa - i32.const 3032 + i32.const 2984 call $~lib/string/String.__eq i32.eqz if @@ -7822,7 +7778,7 @@ end f64.const -0 call $~lib/util/number/dtoa - i32.const 3032 + i32.const 2984 call $~lib/string/String.__eq i32.eqz if @@ -7835,7 +7791,7 @@ end f64.const nan:0x8000000000000 call $~lib/util/number/dtoa - i32.const 3048 + i32.const 3000 call $~lib/string/String.__eq i32.eqz if @@ -7848,7 +7804,7 @@ end f64.const inf call $~lib/util/number/dtoa - i32.const 3096 + i32.const 3048 call $~lib/string/String.__eq i32.eqz if @@ -7861,7 +7817,7 @@ end f64.const -inf call $~lib/util/number/dtoa - i32.const 3064 + i32.const 3016 call $~lib/string/String.__eq i32.eqz if @@ -7874,7 +7830,7 @@ end f64.const 2.220446049250313e-16 call $~lib/util/number/dtoa - i32.const 4128 + i32.const 4080 call $~lib/string/String.__eq i32.eqz if @@ -7887,7 +7843,7 @@ end f64.const -2.220446049250313e-16 call $~lib/util/number/dtoa - i32.const 4184 + i32.const 4136 call $~lib/string/String.__eq i32.eqz if @@ -7900,7 +7856,7 @@ end f64.const 1797693134862315708145274e284 call $~lib/util/number/dtoa - i32.const 4240 + i32.const 4192 call $~lib/string/String.__eq i32.eqz if @@ -7913,7 +7869,7 @@ end f64.const -1797693134862315708145274e284 call $~lib/util/number/dtoa - i32.const 4296 + i32.const 4248 call $~lib/string/String.__eq i32.eqz if @@ -7926,7 +7882,7 @@ end f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa - i32.const 4352 + i32.const 4304 call $~lib/string/String.__eq i32.eqz if @@ -7939,7 +7895,7 @@ end f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa - i32.const 4408 + i32.const 4360 call $~lib/string/String.__eq i32.eqz if @@ -7952,7 +7908,7 @@ end f64.const 4.940656e-318 call $~lib/util/number/dtoa - i32.const 4464 + i32.const 4416 call $~lib/string/String.__eq i32.eqz if @@ -7965,7 +7921,7 @@ end f64.const 9060801153433600 call $~lib/util/number/dtoa - i32.const 4504 + i32.const 4456 call $~lib/string/String.__eq i32.eqz if @@ -7978,7 +7934,7 @@ end f64.const 4708356024711512064 call $~lib/util/number/dtoa - i32.const 4552 + i32.const 4504 call $~lib/string/String.__eq i32.eqz if @@ -7991,7 +7947,7 @@ end f64.const 9409340012568248320 call $~lib/util/number/dtoa - i32.const 4608 + i32.const 4560 call $~lib/string/String.__eq i32.eqz if @@ -8004,7 +7960,7 @@ end f64.const 5e-324 call $~lib/util/number/dtoa - i32.const 4664 + i32.const 4616 call $~lib/string/String.__eq i32.eqz if @@ -8017,7 +7973,7 @@ end f64.const 1 call $~lib/util/number/dtoa - i32.const 4688 + i32.const 4640 call $~lib/string/String.__eq i32.eqz if @@ -8043,7 +7999,7 @@ end f64.const -1 call $~lib/util/number/dtoa - i32.const 4704 + i32.const 4656 call $~lib/string/String.__eq i32.eqz if @@ -8056,7 +8012,7 @@ end f64.const -0.1 call $~lib/util/number/dtoa - i32.const 4720 + i32.const 4672 call $~lib/string/String.__eq i32.eqz if @@ -8069,7 +8025,7 @@ end f64.const 1e6 call $~lib/util/number/dtoa - i32.const 4736 + i32.const 4688 call $~lib/string/String.__eq i32.eqz if @@ -8082,7 +8038,7 @@ end f64.const 1e-06 call $~lib/util/number/dtoa - i32.const 4768 + i32.const 4720 call $~lib/string/String.__eq i32.eqz if @@ -8095,7 +8051,7 @@ end f64.const -1e6 call $~lib/util/number/dtoa - i32.const 4792 + i32.const 4744 call $~lib/string/String.__eq i32.eqz if @@ -8108,7 +8064,7 @@ end f64.const -1e-06 call $~lib/util/number/dtoa - i32.const 4824 + i32.const 4776 call $~lib/string/String.__eq i32.eqz if @@ -8121,7 +8077,7 @@ end f64.const 1e7 call $~lib/util/number/dtoa - i32.const 4856 + i32.const 4808 call $~lib/string/String.__eq i32.eqz if @@ -8134,7 +8090,7 @@ end f64.const 1e-07 call $~lib/util/number/dtoa - i32.const 4888 + i32.const 4840 call $~lib/string/String.__eq i32.eqz if @@ -8147,7 +8103,7 @@ end f64.const 1.e+308 call $~lib/util/number/dtoa - i32.const 4904 + i32.const 4856 call $~lib/string/String.__eq i32.eqz if @@ -8160,7 +8116,7 @@ end f64.const -1.e+308 call $~lib/util/number/dtoa - i32.const 4928 + i32.const 4880 call $~lib/string/String.__eq i32.eqz if @@ -8173,7 +8129,7 @@ end f64.const inf call $~lib/util/number/dtoa - i32.const 3096 + i32.const 3048 call $~lib/string/String.__eq i32.eqz if @@ -8186,7 +8142,7 @@ end f64.const -inf call $~lib/util/number/dtoa - i32.const 3064 + i32.const 3016 call $~lib/string/String.__eq i32.eqz if @@ -8199,7 +8155,7 @@ end f64.const 1e-308 call $~lib/util/number/dtoa - i32.const 4952 + i32.const 4904 call $~lib/string/String.__eq i32.eqz if @@ -8212,7 +8168,7 @@ end f64.const -1e-308 call $~lib/util/number/dtoa - i32.const 4976 + i32.const 4928 call $~lib/string/String.__eq i32.eqz if @@ -8225,7 +8181,7 @@ end f64.const 1e-323 call $~lib/util/number/dtoa - i32.const 5000 + i32.const 4952 call $~lib/string/String.__eq i32.eqz if @@ -8238,7 +8194,7 @@ end f64.const -1e-323 call $~lib/util/number/dtoa - i32.const 5024 + i32.const 4976 call $~lib/string/String.__eq i32.eqz if @@ -8251,7 +8207,7 @@ end f64.const 0 call $~lib/util/number/dtoa - i32.const 3032 + i32.const 2984 call $~lib/string/String.__eq i32.eqz if @@ -8264,7 +8220,7 @@ end f64.const 4294967272 call $~lib/util/number/dtoa - i32.const 5048 + i32.const 5000 call $~lib/string/String.__eq i32.eqz if @@ -8277,7 +8233,7 @@ end f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa - i32.const 5080 + i32.const 5032 call $~lib/string/String.__eq i32.eqz if @@ -8290,7 +8246,7 @@ end f64.const 555555555.5555556 call $~lib/util/number/dtoa - i32.const 5136 + i32.const 5088 call $~lib/string/String.__eq i32.eqz if @@ -8303,7 +8259,7 @@ end f64.const 0.9999999999999999 call $~lib/util/number/dtoa - i32.const 5184 + i32.const 5136 call $~lib/string/String.__eq i32.eqz if @@ -8316,7 +8272,7 @@ end f64.const 1 call $~lib/util/number/dtoa - i32.const 4688 + i32.const 4640 call $~lib/string/String.__eq i32.eqz if @@ -8329,7 +8285,7 @@ end f64.const 12.34 call $~lib/util/number/dtoa - i32.const 5232 + i32.const 5184 call $~lib/string/String.__eq i32.eqz if @@ -8342,7 +8298,7 @@ end f64.const 0.3333333333333333 call $~lib/util/number/dtoa - i32.const 5256 + i32.const 5208 call $~lib/string/String.__eq i32.eqz if @@ -8355,7 +8311,7 @@ end f64.const 1234e17 call $~lib/util/number/dtoa - i32.const 5304 + i32.const 5256 call $~lib/string/String.__eq i32.eqz if @@ -8368,7 +8324,7 @@ end f64.const 1234e18 call $~lib/util/number/dtoa - i32.const 5360 + i32.const 5312 call $~lib/string/String.__eq i32.eqz if @@ -8381,7 +8337,7 @@ end f64.const 2.71828 call $~lib/util/number/dtoa - i32.const 5392 + i32.const 5344 call $~lib/string/String.__eq i32.eqz if @@ -8394,7 +8350,7 @@ end f64.const 0.0271828 call $~lib/util/number/dtoa - i32.const 5416 + i32.const 5368 call $~lib/string/String.__eq i32.eqz if @@ -8407,7 +8363,7 @@ end f64.const 271.828 call $~lib/util/number/dtoa - i32.const 5448 + i32.const 5400 call $~lib/string/String.__eq i32.eqz if @@ -8420,7 +8376,7 @@ end f64.const 1.1e+128 call $~lib/util/number/dtoa - i32.const 5472 + i32.const 5424 call $~lib/string/String.__eq i32.eqz if @@ -8433,7 +8389,7 @@ end f64.const 1.1e-64 call $~lib/util/number/dtoa - i32.const 5496 + i32.const 5448 call $~lib/string/String.__eq i32.eqz if @@ -8446,7 +8402,7 @@ end f64.const 0.000035689 call $~lib/util/number/dtoa - i32.const 5520 + i32.const 5472 call $~lib/string/String.__eq i32.eqz if @@ -8458,13 +8414,13 @@ unreachable end ) - (func $std/string/getString (; 52 ;) (type $FUNCSIG$i) (result i32) + (func $std/string/getString (; 50 ;) (type $FUNCSIG$i) (result i32) global.get $std/string/str ) - (func $start (; 53 ;) (type $FUNCSIG$v) + (func $start (; 51 ;) (type $FUNCSIG$v) call $start:std/string ) - (func $null (; 54 ;) (type $FUNCSIG$v) + (func $null (; 52 ;) (type $FUNCSIG$v) nop ) ) diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index e960f3ea..55cfeb8d 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -8,6 +8,7 @@ (type $FUNCSIG$viii (func (param i32 i32 i32))) (type $FUNCSIG$dii (func (param i32 i32) (result f64))) (type $FUNCSIG$di (func (param i32) (result f64))) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) (type $FUNCSIG$ij (func (param i64) (result i32))) (type $FUNCSIG$viji (func (param i32 i64 i32))) (type $FUNCSIG$id (func (param f64) (result i32))) @@ -81,98 +82,97 @@ (data (i32.const 1296) "\01\00\00\00\n\00\00\00c\00d\00e\00f\00g\00") (data (i32.const 1320) "\01\00\00\00\n\00\00\00d\00e\00f\00g\00h\00") (data (i32.const 1344) "\01\00\00\00\1a\00\00\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00") - (data (i32.const 1384) "\01\00\00\00&\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") - (data (i32.const 1432) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") - (data (i32.const 1472) "\01\00\00\00\n\00\00\00a\00,\00b\00,\00c\00") - (data (i32.const 1496) "\01\00\00\00\02\00\00\00.\00") - (data (i32.const 1512) "\01\00\00\00\02\00\00\00c\00") - (data (i32.const 1528) "\01\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c\00") - (data (i32.const 1552) "\01\00\00\00\04\00\00\00,\00 \00") - (data (i32.const 1568) "\01\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c\00") - (data (i32.const 1592) "\01\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c\00") - (data (i32.const 1616) "\01\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,\00") - (data (i32.const 1640) "\02\00\00\00\90\01\00\000\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 2048) "\05\00\00\00\10\00\00\00p\06\00\00p\06\00\00\90\01\00\00d\00\00\00") - (data (i32.const 2072) "\01\00\00\00\02\00\00\008\00") - (data (i32.const 2088) "\01\00\00\00\n\00\00\00-\001\000\000\000\00") - (data (i32.const 2112) "\01\00\00\00\08\00\00\001\002\003\004\00") - (data (i32.const 2128) "\01\00\00\00\n\00\00\001\002\003\004\005\00") - (data (i32.const 2152) "\01\00\00\00\0c\00\00\001\002\003\004\005\006\00") - (data (i32.const 2176) "\01\00\00\00\0e\00\00\001\001\001\001\001\001\001\00") - (data (i32.const 2200) "\01\00\00\00\0e\00\00\001\002\003\004\005\006\007\00") - (data (i32.const 2224) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006\00") - (data (i32.const 2256) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007\00") - (data (i32.const 2288) "\01\00\00\00\16\00\00\00-\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 2320) "\01\00\00\00\04\00\00\00-\001\00") - (data (i32.const 2336) "\01\00\00\00\08\00\00\001\000\000\000\00") - (data (i32.const 2352) "\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008\00") - (data (i32.const 2384) "\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 2416) "\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009\00") - (data (i32.const 2440) "\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000\00") - (data (i32.const 2472) "\01\00\00\00\16\00\00\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2504) "\01\00\00\00\18\00\00\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2536) "\01\00\00\00\1e\00\00\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2576) "\01\00\00\00 \00\00\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2616) "\01\00\00\00\"\00\00\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2664) "\01\00\00\00(\00\00\001\008\004\004\006\007\004\004\000\007\003\007\000\009\005\005\001\006\001\005\00") - (data (i32.const 2712) "\01\00\00\00\n\00\00\00-\001\002\003\004\00") - (data (i32.const 2736) "\01\00\00\00\16\00\00\00-\004\002\009\004\009\006\007\002\009\005\00") - (data (i32.const 2768) "\01\00\00\00\18\00\00\00-\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2800) "\01\00\00\00\1a\00\00\00-\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2840) "\01\00\00\00 \00\00\00-\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2880) "\01\00\00\00$\00\00\00-\001\009\009\009\009\008\006\008\007\001\009\004\007\006\007\003\005\00") - (data (i32.const 2928) "\01\00\00\00&\00\00\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\007\00") - (data (i32.const 2976) "\01\00\00\00(\00\00\00-\009\002\002\003\003\007\002\000\003\006\008\005\004\007\007\005\008\000\008\00") - (data (i32.const 3024) "\01\00\00\00\06\00\00\000\00.\000\00") - (data (i32.const 3040) "\01\00\00\00\06\00\00\00N\00a\00N\00") - (data (i32.const 3056) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 3088) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00") - (data (i32.const 3112) "\02\00\00\00\b8\02\00\00\88\02\1c\08\a0\d5\8f\fav\bf>\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8\a2\7f\e1\ae\bav\acU0 \fb\16\8b\ea5\ce]J\89B\cf-;eU\aa\b0k\9a\dfE\1a=\03\cf\1a\e6\ca\c6\9a\c7\17\fep\abO\dc\bc\be\fc\b1w\ff\0c\d6kA\ef\91V\be<\fc\7f\90\ad\1f\d0\8d\83\9aU1(\\Q\d3\b5\c9\a6\ad\8f\acq\9d\cb\8b\ee#w\"\9c\eamSx@\91I\cc\aeW\ce\b6]y\12<\827V\fbM6\94\10\c2O\98H8o\ea\96\90\c7:\82%\cb\85t\d7\f4\97\bf\97\cd\cf\86\a0\e5\ac*\17\98\n4\ef\8e\b25*\fbg8\b2;?\c6\d2\df\d4\c8\84\ba\cd\d3\1a\'D\dd\c5\96\c9%\bb\ce\9fk\93\84\a5b}$l\ac\db\f6\da_\0dXf\ab\a3&\f1\c3\de\93\f8\e2\f3\b8\80\ff\aa\a8\ad\b5\b5\8bJ|l\05_b\87S0\c14`\ff\bc\c9U&\ba\91\8c\85N\96\bd~)p$w\f9\df\8f\b8\e5\b8\9f\bd\df\a6\94}t\88\cf_\a9\f8\cf\9b\a8\8f\93pD\b9k\15\0f\bf\f8\f0\08\8a\b611eU%\b0\cd\ac\7f{\d0\c6\e2?\99\06;+*\c4\10\\\e4\d3\92si\99$$\aa\0e\ca\00\83\f2\b5\87\fd\eb\1a\11\92d\08\e5\bc\cc\88Po\t\cc\bc\8c,e\19\e2X\17\b7\d1\00\00\00\00\00\00@\9c\00\00\00\00\10\a5\d4\e8\00\00b\ac\c5\ebx\ad\84\t\94\f8x9?\81\b3\15\07\c9{\ce\97\c0p\\\ea{\ce2~\8fh\80\e9\ab\a48\d2\d5E\"\9a\17&\'O\9f\'\fb\c4\d41\a2c\ed\a8\ad\c8\8c8e\de\b0\dbe\ab\1a\8e\08\c7\83\9a\1dqB\f9\1d]\c4X\e7\1b\a6,iM\92\ea\8dp\1ad\ee\01\daJw\ef\9a\99\a3m\a2\85k}\b4{x\t\f2w\18\ddy\a1\e4T\b4\c2\c5\9b[\92\86[\86=]\96\c8\c5S5\c8\b3\a0\97\fa\\\b4*\95\e3_\a0\99\bd\9fF\de%\8c9\db4\c2\9b\a5\\\9f\98\a3r\9a\c6\f6\ce\be\e9TS\bf\dc\b7\e2A\"\f2\17\f3\fc\88\a5x\\\d3\9b\ce \cc\dfS!{\f3Z\16\98:0\1f\97\dc\b5\a0\e2\96\b3\e3\\S\d1\d9\a8|inlined.0 (result i32) - local.get $3 - local.set $2 - local.get $2 - i32.const 2 - call $~lib/runtime/doRegister - end - ) - (func $~lib/runtime/ArrayBufferView#constructor (; 35 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $1 - global.get $~lib/runtime/MAX_BYTELENGTH - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 0 - i32.const 96 - i32.const 251 - i32.const 57 - call $~lib/env/abort - unreachable - end - i32.const 0 - local.get $1 - local.get $2 - i32.shl - local.tee $1 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - block (result i32) - local.get $0 - i32.eqz - if - block $~lib/runtime/REGISTER|inlined.0 (result i32) - block $~lib/runtime/ALLOCATE|inlined.8 (result i32) - i32.const 12 - local.set $4 - local.get $4 - call $~lib/runtime/doAllocate - end - local.set $4 - local.get $4 - i32.const 3 - call $~lib/runtime/doRegister - end - local.set $0 - end - local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 - end - local.get $3 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - ) - (func $~lib/array/Array#constructor (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - if (result i32) - local.get $0 - else - block $~lib/runtime/ALLOCATE|inlined.9 (result i32) - i32.const 16 - local.set $2 - local.get $2 - call $~lib/runtime/doAllocate - end - local.set $2 - local.get $2 - i32.const 4 - call $~lib/runtime/doRegister - end - local.get $1 - i32.const 2 - call $~lib/runtime/ArrayBufferView#constructor - local.set $0 - local.get $0 - i32.const 0 - i32.store offset=12 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (func $~lib/memory/memory.free (; 37 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/memory/memory.free (; 35 ;) (type $FUNCSIG$vi) (param $0 i32) (local $1 i32) local.get $0 local.set $1 ) - (func $~lib/runtime/doReallocate (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/runtime/doReallocate (; 36 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3930,7 +3847,7 @@ if i32.const 0 i32.const 96 - i32.const 107 + i32.const 133 i32.const 8 call $~lib/env/abort unreachable @@ -3962,7 +3879,7 @@ i32.store offset=4 local.get $0 ) - (func $~lib/array/ensureCapacity (; 39 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/ensureCapacity (; 37 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3981,8 +3898,8 @@ i32.gt_u if i32.const 0 - i32.const 1440 - i32.const 10 + i32.const 1392 + i32.const 14 i32.const 64 call $~lib/env/abort unreachable @@ -4020,7 +3937,7 @@ i32.store offset=8 end ) - (func $~lib/array/Array#push (; 40 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#push (; 38 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 i32.load offset=12 @@ -4046,7 +3963,7 @@ i32.store local.get $2 ) - (func $~lib/string/String#split (; 41 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#split (; 39 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4066,7 +3983,7 @@ if i32.const 0 i32.const 168 - i32.const 347 + i32.const 348 i32.const 4 call $~lib/env/abort unreachable @@ -4074,9 +3991,17 @@ local.get $2 i32.eqz if - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + i32.const 0 + local.set $4 + i32.const 0 + local.set $3 + local.get $4 + local.get $3 + i32.const 2 + i32.const 2 + call $~lib/runtime/doMakeArray + end return end local.get $1 @@ -4084,9 +4009,17 @@ i32.eq if block (result i32) - i32.const 0 - i32.const 1 - call $~lib/array/Array#constructor + block $~lib/runtime/MAKEARRAY|inlined.1 (result i32) + i32.const 1 + local.set $5 + i32.const 0 + local.set $6 + local.get $5 + local.get $6 + i32.const 2 + i32.const 2 + call $~lib/runtime/doMakeArray + end local.set $3 local.get $3 i32.load offset=4 @@ -4100,10 +4033,10 @@ end local.get $0 call $~lib/string/String#get:length - local.set $5 + local.set $7 local.get $1 call $~lib/string/String#get:length - local.set $6 + local.set $8 local.get $2 i32.const 0 i32.lt_s @@ -4111,18 +4044,26 @@ global.get $~lib/builtins/i32.MAX_VALUE local.set $2 end - local.get $6 + local.get $8 i32.eqz if - local.get $5 + local.get $7 i32.eqz if - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor + block $~lib/runtime/MAKEARRAY|inlined.2 (result i32) + i32.const 0 + local.set $3 + i32.const 0 + local.set $4 + local.get $3 + local.get $4 + i32.const 2 + i32.const 2 + call $~lib/runtime/doMakeArray + end return end - local.get $5 + local.get $7 local.tee $4 local.get $2 local.tee $3 @@ -4130,57 +4071,65 @@ local.get $3 i32.lt_s select - local.set $5 - i32.const 0 - local.get $5 - call $~lib/array/Array#constructor + local.set $7 + block $~lib/runtime/MAKEARRAY|inlined.3 (result i32) + local.get $7 + local.set $3 + i32.const 0 + local.set $4 + local.get $3 + local.get $4 + i32.const 2 + i32.const 2 + call $~lib/runtime/doMakeArray + end local.set $4 local.get $4 i32.load offset=4 local.set $3 block $break|0 i32.const 0 - local.set $7 + local.set $6 loop $repeat|0 + local.get $6 local.get $7 - local.get $5 i32.lt_s i32.eqz br_if $break|0 block - block $~lib/runtime/ALLOCATE|inlined.10 (result i32) - i32.const 2 - local.set $8 - local.get $8 - call $~lib/runtime/doAllocate + block $~lib/runtime/REGISTER|inlined.7 (result i32) + block $~lib/runtime/ALLOCATE|inlined.7 (result i32) + i32.const 2 + local.set $9 + local.get $9 + call $~lib/runtime/doAllocate + end + local.set $5 + local.get $5 + i32.const 1 + call $~lib/runtime/doRegister end - local.set $8 - local.get $8 + local.set $5 + local.get $5 local.get $0 - local.get $7 + local.get $6 i32.const 1 i32.shl i32.add i32.load16_u i32.store16 local.get $3 - local.get $7 + local.get $6 i32.const 2 i32.shl i32.add - block $~lib/runtime/REGISTER|inlined.7 (result i32) - local.get $8 - local.set $9 - local.get $9 - i32.const 1 - call $~lib/runtime/doRegister - end + local.get $5 i32.store end - local.get $7 + local.get $6 i32.const 1 i32.add - local.set $7 + local.set $6 br $repeat|0 unreachable end @@ -4189,12 +4138,20 @@ local.get $4 return else - local.get $5 + local.get $7 i32.eqz if - i32.const 0 - i32.const 1 - call $~lib/array/Array#constructor + block $~lib/runtime/MAKEARRAY|inlined.4 (result i32) + i32.const 1 + local.set $4 + i32.const 0 + local.set $3 + local.get $4 + local.get $3 + i32.const 2 + i32.const 2 + call $~lib/runtime/doMakeArray + end local.set $3 local.get $3 i32.load offset=4 @@ -4204,9 +4161,17 @@ return end end - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor + block $~lib/runtime/MAKEARRAY|inlined.5 (result i32) + i32.const 0 + local.set $4 + i32.const 0 + local.set $3 + local.get $4 + local.get $3 + i32.const 2 + i32.const 2 + call $~lib/runtime/doMakeArray + end local.set $10 i32.const 0 local.set $11 @@ -4218,6 +4183,12 @@ loop $continue|1 local.get $0 local.get $1 + local.tee $3 + if (result i32) + local.get $3 + else + unreachable + end local.get $12 call $~lib/string/String#indexOf local.tee $11 @@ -4233,7 +4204,7 @@ i32.const 0 i32.gt_s if - block $~lib/runtime/ALLOCATE|inlined.11 (result i32) + block $~lib/runtime/ALLOCATE|inlined.8 (result i32) local.get $3 i32.const 1 i32.shl @@ -4255,8 +4226,8 @@ local.get $10 block $~lib/runtime/REGISTER|inlined.8 (result i32) local.get $4 - local.set $7 - local.get $7 + local.set $6 + local.get $6 i32.const 1 call $~lib/runtime/doRegister end @@ -4279,7 +4250,7 @@ return end local.get $11 - local.get $6 + local.get $8 i32.add local.set $12 end @@ -4290,9 +4261,17 @@ local.get $12 i32.eqz if - i32.const 0 - i32.const 1 - call $~lib/array/Array#constructor + block $~lib/runtime/MAKEARRAY|inlined.6 (result i32) + i32.const 1 + local.set $4 + i32.const 0 + local.set $3 + local.get $4 + local.get $3 + i32.const 2 + i32.const 2 + call $~lib/runtime/doMakeArray + end local.set $3 local.get $3 i32.load offset=4 @@ -4301,7 +4280,7 @@ local.get $3 return end - local.get $5 + local.get $7 local.get $12 i32.sub local.set $14 @@ -4309,7 +4288,7 @@ i32.const 0 i32.gt_s if - block $~lib/runtime/ALLOCATE|inlined.12 (result i32) + block $~lib/runtime/ALLOCATE|inlined.9 (result i32) local.get $14 i32.const 1 i32.shl @@ -4346,11 +4325,23 @@ end local.get $10 ) - (func $~lib/array/Array#get:length (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 40 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 43 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 41 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 0 + i32.const 1392 + i32.const 97 + i32.const 45 + call $~lib/env/abort + unreachable + end local.get $1 local.get $0 i32.load offset=8 @@ -4359,8 +4350,8 @@ i32.ge_u if i32.const 0 - i32.const 1440 - i32.const 69 + i32.const 1392 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -4373,7 +4364,7 @@ i32.add i32.load ) - (func $~lib/util/number/decimalCount32 (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/decimalCount32 (; 42 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) local.get $0 i32.const 100000 @@ -4442,7 +4433,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa32_lut (; 45 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/utoa32_lut (; 43 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4450,7 +4441,7 @@ (local $7 i32) (local $8 i64) (local $9 i64) - i32.const 2056 + i32.const 2008 i32.load offset=4 local.set $3 block $break|0 @@ -4585,7 +4576,7 @@ i32.store16 end ) - (func $~lib/util/number/itoa32 (; 46 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/itoa32 (; 44 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4614,7 +4605,7 @@ local.get $1 i32.add local.set $2 - block $~lib/runtime/ALLOCATE|inlined.13 (result i32) + block $~lib/runtime/ALLOCATE|inlined.10 (result i32) local.get $2 i32.const 1 i32.shl @@ -4649,7 +4640,7 @@ call $~lib/runtime/doRegister end ) - (func $~lib/util/number/utoa32 (; 47 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/util/number/utoa32 (; 45 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4664,7 +4655,7 @@ local.get $0 call $~lib/util/number/decimalCount32 local.set $1 - block $~lib/runtime/ALLOCATE|inlined.14 (result i32) + block $~lib/runtime/ALLOCATE|inlined.11 (result i32) local.get $1 i32.const 1 i32.shl @@ -4693,7 +4684,7 @@ call $~lib/runtime/doRegister end ) - (func $~lib/util/number/decimalCount64 (; 48 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/decimalCount64 (; 46 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) local.get $0 i64.const 1000000000000000 @@ -4762,7 +4753,7 @@ unreachable unreachable ) - (func $~lib/util/number/utoa64_lut (; 49 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) + (func $~lib/util/number/utoa64_lut (; 47 ;) (type $FUNCSIG$viji) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i64) (local $5 i32) @@ -4774,7 +4765,7 @@ (local $11 i32) (local $12 i64) (local $13 i64) - i32.const 2056 + i32.const 2008 i32.load offset=4 local.set $3 block $break|0 @@ -4890,7 +4881,7 @@ local.get $2 call $~lib/util/number/utoa32_lut ) - (func $~lib/util/number/utoa64 (; 50 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/utoa64 (; 48 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4915,7 +4906,7 @@ local.get $2 call $~lib/util/number/decimalCount32 local.set $3 - block $~lib/runtime/ALLOCATE|inlined.15 (result i32) + block $~lib/runtime/ALLOCATE|inlined.12 (result i32) local.get $3 i32.const 1 i32.shl @@ -4940,7 +4931,7 @@ local.get $0 call $~lib/util/number/decimalCount64 local.set $3 - block $~lib/runtime/ALLOCATE|inlined.16 (result i32) + block $~lib/runtime/ALLOCATE|inlined.13 (result i32) local.get $3 i32.const 1 i32.shl @@ -4970,7 +4961,7 @@ call $~lib/runtime/doRegister end ) - (func $~lib/util/number/itoa64 (; 51 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) + (func $~lib/util/number/itoa64 (; 49 ;) (type $FUNCSIG$ij) (param $0 i64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -5009,7 +5000,7 @@ local.get $1 i32.add local.set $4 - block $~lib/runtime/ALLOCATE|inlined.17 (result i32) + block $~lib/runtime/ALLOCATE|inlined.14 (result i32) local.get $4 i32.const 1 i32.shl @@ -5036,7 +5027,7 @@ local.get $1 i32.add local.set $4 - block $~lib/runtime/ALLOCATE|inlined.18 (result i32) + block $~lib/runtime/ALLOCATE|inlined.15 (result i32) local.get $4 i32.const 1 i32.shl @@ -5072,19 +5063,19 @@ call $~lib/runtime/doRegister end ) - (func $~lib/builtins/isFinite (; 52 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isFinite (; 50 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.sub f64.const 0 f64.eq ) - (func $~lib/builtins/isNaN (; 53 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 51 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/util/number/genDigits (; 54 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) + (func $~lib/util/number/genDigits (; 52 ;) (type $FUNCSIG$iijijiji) (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i64) (param $4 i32) (param $5 i64) (param $6 i32) (result i32) (local $7 i32) (local $8 i64) (local $9 i64) @@ -5140,7 +5131,7 @@ local.set $14 local.get $6 local.set $15 - i32.const 4104 + i32.const 4056 i32.load offset=4 local.set $16 block $break|0 @@ -5655,7 +5646,7 @@ end local.get $15 ) - (func $~lib/util/number/prettify (; 55 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/prettify (; 53 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5988,7 +5979,7 @@ unreachable unreachable ) - (func $~lib/util/number/dtoa_core (; 56 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/number/dtoa_core (; 54 ;) (type $FUNCSIG$iid) (param $0 i32) (param $1 f64) (result i32) (local $2 i32) (local $3 f64) (local $4 i32) @@ -6157,7 +6148,7 @@ i32.shl i32.sub global.set $~lib/util/number/_K - i32.const 3824 + i32.const 3776 i32.load offset=4 local.get $13 i32.const 3 @@ -6165,7 +6156,7 @@ i32.add i64.load global.set $~lib/util/number/_frc_pow - i32.const 4032 + i32.const 3984 i32.load offset=4 local.get $13 i32.const 1 @@ -6434,7 +6425,7 @@ local.get $2 i32.add ) - (func $~lib/string/String#substring (; 57 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#substring (; 55 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6450,7 +6441,7 @@ if i32.const 0 i32.const 168 - i32.const 186 + i32.const 187 i32.const 4 call $~lib/env/abort unreachable @@ -6539,7 +6530,7 @@ local.get $0 return end - block $~lib/runtime/ALLOCATE|inlined.20 (result i32) + block $~lib/runtime/ALLOCATE|inlined.17 (result i32) local.get $3 local.set $4 local.get $4 @@ -6560,7 +6551,7 @@ call $~lib/runtime/doRegister end ) - (func $~lib/runtime/doDiscard (; 58 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/runtime/doDiscard (; 56 ;) (type $FUNCSIG$vi) (param $0 i32) local.get $0 call $~lib/runtime/assertUnregistered local.get $0 @@ -6568,7 +6559,7 @@ i32.sub call $~lib/memory/memory.free ) - (func $~lib/util/number/dtoa (; 59 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/util/number/dtoa (; 57 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -6577,7 +6568,7 @@ f64.const 0 f64.eq if - i32.const 3032 + i32.const 2984 return end local.get $0 @@ -6587,18 +6578,18 @@ local.get $0 call $~lib/builtins/isNaN if - i32.const 3048 + i32.const 3000 return end - i32.const 3064 - i32.const 3096 + i32.const 3016 + i32.const 3048 local.get $0 f64.const 0 f64.lt select return end - block $~lib/runtime/ALLOCATE|inlined.19 (result i32) + block $~lib/runtime/ALLOCATE|inlined.16 (result i32) i32.const 28 i32.const 1 i32.shl @@ -6624,7 +6615,7 @@ end local.get $4 ) - (func $start:std/string (; 60 ;) (type $FUNCSIG$v) + (func $start:std/string (; 58 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8263,8 +8254,8 @@ call $~lib/env/abort unreachable end - i32.const 1480 - i32.const 1504 + i32.const 1432 + i32.const 1456 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split global.set $std/string/sa @@ -8277,7 +8268,7 @@ global.get $std/string/sa i32.const 0 call $~lib/array/Array#__get - i32.const 1480 + i32.const 1432 call $~lib/string/String.__eq else local.get $0 @@ -8291,7 +8282,7 @@ call $~lib/env/abort unreachable end - i32.const 1480 + i32.const 1432 i32.const 528 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split @@ -8325,7 +8316,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq else local.get $0 @@ -8339,8 +8330,8 @@ call $~lib/env/abort unreachable end - i32.const 1536 - i32.const 1560 + i32.const 1488 + i32.const 1512 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split global.set $std/string/sa @@ -8373,7 +8364,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq else local.get $0 @@ -8387,6 +8378,122 @@ call $~lib/env/abort unreachable end + i32.const 1528 + i32.const 528 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + global.set $std/string/sa + global.get $std/string/sa + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 0 + call $~lib/array/Array#__get + i32.const 336 + call $~lib/string/String.__eq + else + local.get $0 + end + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 1 + call $~lib/array/Array#__get + i32.const 824 + call $~lib/string/String.__eq + else + local.get $0 + end + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 2 + call $~lib/array/Array#__get + i32.const 312 + call $~lib/string/String.__eq + else + local.get $0 + end + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 3 + call $~lib/array/Array#__get + i32.const 1472 + call $~lib/string/String.__eq + else + local.get $0 + end + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 170 + i32.const 0 + call $~lib/env/abort + unreachable + end + i32.const 1552 + i32.const 528 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + global.set $std/string/sa + global.get $std/string/sa + call $~lib/array/Array#get:length + i32.const 4 + i32.eq + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 0 + call $~lib/array/Array#__get + i32.const 312 + call $~lib/string/String.__eq + else + local.get $0 + end + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 1 + call $~lib/array/Array#__get + i32.const 336 + call $~lib/string/String.__eq + else + local.get $0 + end + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 2 + call $~lib/array/Array#__get + i32.const 824 + call $~lib/string/String.__eq + else + local.get $0 + end + local.tee $0 + if (result i32) + global.get $std/string/sa + i32.const 3 + call $~lib/array/Array#__get + i32.const 1472 + call $~lib/string/String.__eq + else + local.get $0 + end + i32.eqz + if + i32.const 0 + i32.const 56 + i32.const 172 + i32.const 0 + call $~lib/env/abort + unreachable + end i32.const 1576 i32.const 528 global.get $~lib/builtins/i32.MAX_VALUE @@ -8421,123 +8528,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 312 - call $~lib/string/String.__eq - else - local.get $0 - end - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 3 - call $~lib/array/Array#__get - i32.const 1520 - call $~lib/string/String.__eq - else - local.get $0 - end - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 170 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 1600 - i32.const 528 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - global.set $std/string/sa - global.get $std/string/sa - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 0 - call $~lib/array/Array#__get - i32.const 312 - call $~lib/string/String.__eq - else - local.get $0 - end - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 1 - call $~lib/array/Array#__get - i32.const 336 - call $~lib/string/String.__eq - else - local.get $0 - end - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 2 - call $~lib/array/Array#__get - i32.const 824 - call $~lib/string/String.__eq - else - local.get $0 - end - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 3 - call $~lib/array/Array#__get - i32.const 1520 - call $~lib/string/String.__eq - else - local.get $0 - end - i32.eqz - if - i32.const 0 - i32.const 56 - i32.const 172 - i32.const 0 - call $~lib/env/abort - unreachable - end - i32.const 1624 - i32.const 528 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - global.set $std/string/sa - global.get $std/string/sa - call $~lib/array/Array#get:length - i32.const 4 - i32.eq - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 0 - call $~lib/array/Array#__get - i32.const 336 - call $~lib/string/String.__eq - else - local.get $0 - end - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 1 - call $~lib/array/Array#__get - i32.const 824 - call $~lib/string/String.__eq - else - local.get $0 - end - local.tee $0 - if (result i32) - global.get $std/string/sa - i32.const 2 - call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq else local.get $0 @@ -8595,7 +8586,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq else local.get $0 @@ -8655,7 +8646,7 @@ call $~lib/env/abort unreachable end - i32.const 1480 + i32.const 1432 i32.const 528 i32.const 1 call $~lib/string/String#split @@ -8717,7 +8708,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq else local.get $0 @@ -8765,7 +8756,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq else local.get $0 @@ -8779,7 +8770,7 @@ call $~lib/env/abort unreachable end - i32.const 1480 + i32.const 1432 i32.const 528 i32.const -1 call $~lib/string/String#split @@ -8813,7 +8804,7 @@ global.get $std/string/sa i32.const 2 call $~lib/array/Array#__get - i32.const 1520 + i32.const 1472 call $~lib/string/String.__eq else local.get $0 @@ -8855,7 +8846,7 @@ end i32.const 8 call $~lib/util/number/itoa32 - i32.const 2080 + i32.const 2032 call $~lib/string/String.__eq i32.eqz if @@ -8881,7 +8872,7 @@ end i32.const -1000 call $~lib/util/number/itoa32 - i32.const 2096 + i32.const 2048 call $~lib/string/String.__eq i32.eqz if @@ -8894,7 +8885,7 @@ end i32.const 1234 call $~lib/util/number/itoa32 - i32.const 2120 + i32.const 2072 call $~lib/string/String.__eq i32.eqz if @@ -8907,7 +8898,7 @@ end i32.const 12345 call $~lib/util/number/itoa32 - i32.const 2136 + i32.const 2088 call $~lib/string/String.__eq i32.eqz if @@ -8920,7 +8911,7 @@ end i32.const 123456 call $~lib/util/number/itoa32 - i32.const 2160 + i32.const 2112 call $~lib/string/String.__eq i32.eqz if @@ -8933,7 +8924,7 @@ end i32.const 1111111 call $~lib/util/number/itoa32 - i32.const 2184 + i32.const 2136 call $~lib/string/String.__eq i32.eqz if @@ -8946,7 +8937,7 @@ end i32.const 1234567 call $~lib/util/number/itoa32 - i32.const 2208 + i32.const 2160 call $~lib/string/String.__eq i32.eqz if @@ -8959,7 +8950,7 @@ end i32.const 2147483646 call $~lib/util/number/itoa32 - i32.const 2232 + i32.const 2184 call $~lib/string/String.__eq i32.eqz if @@ -8972,7 +8963,7 @@ end i32.const 2147483647 call $~lib/util/number/itoa32 - i32.const 2264 + i32.const 2216 call $~lib/string/String.__eq i32.eqz if @@ -8985,7 +8976,7 @@ end i32.const -2147483648 call $~lib/util/number/itoa32 - i32.const 2296 + i32.const 2248 call $~lib/string/String.__eq i32.eqz if @@ -8998,7 +8989,7 @@ end i32.const -1 call $~lib/util/number/itoa32 - i32.const 2328 + i32.const 2280 call $~lib/string/String.__eq i32.eqz if @@ -9024,7 +9015,7 @@ end i32.const 1000 call $~lib/util/number/utoa32 - i32.const 2344 + i32.const 2296 call $~lib/string/String.__eq i32.eqz if @@ -9037,7 +9028,7 @@ end i32.const 2147483647 call $~lib/util/number/utoa32 - i32.const 2264 + i32.const 2216 call $~lib/string/String.__eq i32.eqz if @@ -9050,7 +9041,7 @@ end i32.const -2147483648 call $~lib/util/number/utoa32 - i32.const 2360 + i32.const 2312 call $~lib/string/String.__eq i32.eqz if @@ -9063,7 +9054,7 @@ end global.get $~lib/builtins/u32.MAX_VALUE call $~lib/util/number/utoa32 - i32.const 2392 + i32.const 2344 call $~lib/string/String.__eq i32.eqz if @@ -9089,7 +9080,7 @@ end i64.const 1234 call $~lib/util/number/utoa64 - i32.const 2120 + i32.const 2072 call $~lib/string/String.__eq i32.eqz if @@ -9102,7 +9093,7 @@ end i64.const 99999999 call $~lib/util/number/utoa64 - i32.const 2424 + i32.const 2376 call $~lib/string/String.__eq i32.eqz if @@ -9115,7 +9106,7 @@ end i64.const 100000000 call $~lib/util/number/utoa64 - i32.const 2448 + i32.const 2400 call $~lib/string/String.__eq i32.eqz if @@ -9128,7 +9119,7 @@ end i64.const 4294967295 call $~lib/util/number/utoa64 - i32.const 2392 + i32.const 2344 call $~lib/string/String.__eq i32.eqz if @@ -9141,7 +9132,7 @@ end i64.const 68719476735 call $~lib/util/number/utoa64 - i32.const 2480 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if @@ -9154,7 +9145,7 @@ end i64.const 868719476735 call $~lib/util/number/utoa64 - i32.const 2512 + i32.const 2464 call $~lib/string/String.__eq i32.eqz if @@ -9167,7 +9158,7 @@ end i64.const 999868719476735 call $~lib/util/number/utoa64 - i32.const 2544 + i32.const 2496 call $~lib/string/String.__eq i32.eqz if @@ -9180,7 +9171,7 @@ end i64.const 9999868719476735 call $~lib/util/number/utoa64 - i32.const 2584 + i32.const 2536 call $~lib/string/String.__eq i32.eqz if @@ -9193,7 +9184,7 @@ end i64.const 19999868719476735 call $~lib/util/number/utoa64 - i32.const 2624 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if @@ -9206,7 +9197,7 @@ end global.get $~lib/builtins/u64.MAX_VALUE call $~lib/util/number/utoa64 - i32.const 2672 + i32.const 2624 call $~lib/string/String.__eq i32.eqz if @@ -9232,7 +9223,7 @@ end i64.const -1234 call $~lib/util/number/itoa64 - i32.const 2720 + i32.const 2672 call $~lib/string/String.__eq i32.eqz if @@ -9245,7 +9236,7 @@ end i64.const 4294967295 call $~lib/util/number/itoa64 - i32.const 2392 + i32.const 2344 call $~lib/string/String.__eq i32.eqz if @@ -9258,7 +9249,7 @@ end i64.const -4294967295 call $~lib/util/number/itoa64 - i32.const 2744 + i32.const 2696 call $~lib/string/String.__eq i32.eqz if @@ -9271,7 +9262,7 @@ end i64.const 68719476735 call $~lib/util/number/itoa64 - i32.const 2480 + i32.const 2432 call $~lib/string/String.__eq i32.eqz if @@ -9284,7 +9275,7 @@ end i64.const -68719476735 call $~lib/util/number/itoa64 - i32.const 2776 + i32.const 2728 call $~lib/string/String.__eq i32.eqz if @@ -9297,7 +9288,7 @@ end i64.const -868719476735 call $~lib/util/number/itoa64 - i32.const 2808 + i32.const 2760 call $~lib/string/String.__eq i32.eqz if @@ -9310,7 +9301,7 @@ end i64.const -999868719476735 call $~lib/util/number/itoa64 - i32.const 2848 + i32.const 2800 call $~lib/string/String.__eq i32.eqz if @@ -9323,7 +9314,7 @@ end i64.const -19999868719476735 call $~lib/util/number/itoa64 - i32.const 2888 + i32.const 2840 call $~lib/string/String.__eq i32.eqz if @@ -9336,7 +9327,7 @@ end global.get $~lib/builtins/i64.MAX_VALUE call $~lib/util/number/itoa64 - i32.const 2936 + i32.const 2888 call $~lib/string/String.__eq i32.eqz if @@ -9349,7 +9340,7 @@ end global.get $~lib/builtins/i64.MIN_VALUE call $~lib/util/number/itoa64 - i32.const 2984 + i32.const 2936 call $~lib/string/String.__eq i32.eqz if @@ -9362,7 +9353,7 @@ end f64.const 0 call $~lib/util/number/dtoa - i32.const 3032 + i32.const 2984 call $~lib/string/String.__eq i32.eqz if @@ -9375,7 +9366,7 @@ end f64.const -0 call $~lib/util/number/dtoa - i32.const 3032 + i32.const 2984 call $~lib/string/String.__eq i32.eqz if @@ -9388,7 +9379,7 @@ end f64.const nan:0x8000000000000 call $~lib/util/number/dtoa - i32.const 3048 + i32.const 3000 call $~lib/string/String.__eq i32.eqz if @@ -9401,7 +9392,7 @@ end f64.const inf call $~lib/util/number/dtoa - i32.const 3096 + i32.const 3048 call $~lib/string/String.__eq i32.eqz if @@ -9415,7 +9406,7 @@ f64.const inf f64.neg call $~lib/util/number/dtoa - i32.const 3064 + i32.const 3016 call $~lib/string/String.__eq i32.eqz if @@ -9428,7 +9419,7 @@ end global.get $~lib/builtins/f64.EPSILON call $~lib/util/number/dtoa - i32.const 4128 + i32.const 4080 call $~lib/string/String.__eq i32.eqz if @@ -9442,7 +9433,7 @@ global.get $~lib/builtins/f64.EPSILON f64.neg call $~lib/util/number/dtoa - i32.const 4184 + i32.const 4136 call $~lib/string/String.__eq i32.eqz if @@ -9455,7 +9446,7 @@ end global.get $~lib/builtins/f64.MAX_VALUE call $~lib/util/number/dtoa - i32.const 4240 + i32.const 4192 call $~lib/string/String.__eq i32.eqz if @@ -9469,7 +9460,7 @@ global.get $~lib/builtins/f64.MAX_VALUE f64.neg call $~lib/util/number/dtoa - i32.const 4296 + i32.const 4248 call $~lib/string/String.__eq i32.eqz if @@ -9482,7 +9473,7 @@ end f64.const 4185580496821356722454785e274 call $~lib/util/number/dtoa - i32.const 4352 + i32.const 4304 call $~lib/string/String.__eq i32.eqz if @@ -9495,7 +9486,7 @@ end f64.const 2.2250738585072014e-308 call $~lib/util/number/dtoa - i32.const 4408 + i32.const 4360 call $~lib/string/String.__eq i32.eqz if @@ -9508,7 +9499,7 @@ end f64.const 4.940656e-318 call $~lib/util/number/dtoa - i32.const 4464 + i32.const 4416 call $~lib/string/String.__eq i32.eqz if @@ -9521,7 +9512,7 @@ end f64.const 9060801153433600 call $~lib/util/number/dtoa - i32.const 4504 + i32.const 4456 call $~lib/string/String.__eq i32.eqz if @@ -9534,7 +9525,7 @@ end f64.const 4708356024711512064 call $~lib/util/number/dtoa - i32.const 4552 + i32.const 4504 call $~lib/string/String.__eq i32.eqz if @@ -9547,7 +9538,7 @@ end f64.const 9409340012568248320 call $~lib/util/number/dtoa - i32.const 4608 + i32.const 4560 call $~lib/string/String.__eq i32.eqz if @@ -9560,7 +9551,7 @@ end f64.const 5e-324 call $~lib/util/number/dtoa - i32.const 4664 + i32.const 4616 call $~lib/string/String.__eq i32.eqz if @@ -9573,7 +9564,7 @@ end f64.const 1 call $~lib/util/number/dtoa - i32.const 4688 + i32.const 4640 call $~lib/string/String.__eq i32.eqz if @@ -9599,7 +9590,7 @@ end f64.const -1 call $~lib/util/number/dtoa - i32.const 4704 + i32.const 4656 call $~lib/string/String.__eq i32.eqz if @@ -9612,7 +9603,7 @@ end f64.const -0.1 call $~lib/util/number/dtoa - i32.const 4720 + i32.const 4672 call $~lib/string/String.__eq i32.eqz if @@ -9625,7 +9616,7 @@ end f64.const 1e6 call $~lib/util/number/dtoa - i32.const 4736 + i32.const 4688 call $~lib/string/String.__eq i32.eqz if @@ -9638,7 +9629,7 @@ end f64.const 1e-06 call $~lib/util/number/dtoa - i32.const 4768 + i32.const 4720 call $~lib/string/String.__eq i32.eqz if @@ -9651,7 +9642,7 @@ end f64.const -1e6 call $~lib/util/number/dtoa - i32.const 4792 + i32.const 4744 call $~lib/string/String.__eq i32.eqz if @@ -9664,7 +9655,7 @@ end f64.const -1e-06 call $~lib/util/number/dtoa - i32.const 4824 + i32.const 4776 call $~lib/string/String.__eq i32.eqz if @@ -9677,7 +9668,7 @@ end f64.const 1e7 call $~lib/util/number/dtoa - i32.const 4856 + i32.const 4808 call $~lib/string/String.__eq i32.eqz if @@ -9690,7 +9681,7 @@ end f64.const 1e-07 call $~lib/util/number/dtoa - i32.const 4888 + i32.const 4840 call $~lib/string/String.__eq i32.eqz if @@ -9703,7 +9694,7 @@ end f64.const 1.e+308 call $~lib/util/number/dtoa - i32.const 4904 + i32.const 4856 call $~lib/string/String.__eq i32.eqz if @@ -9716,7 +9707,7 @@ end f64.const -1.e+308 call $~lib/util/number/dtoa - i32.const 4928 + i32.const 4880 call $~lib/string/String.__eq i32.eqz if @@ -9729,7 +9720,7 @@ end f64.const inf call $~lib/util/number/dtoa - i32.const 3096 + i32.const 3048 call $~lib/string/String.__eq i32.eqz if @@ -9742,7 +9733,7 @@ end f64.const -inf call $~lib/util/number/dtoa - i32.const 3064 + i32.const 3016 call $~lib/string/String.__eq i32.eqz if @@ -9755,7 +9746,7 @@ end f64.const 1e-308 call $~lib/util/number/dtoa - i32.const 4952 + i32.const 4904 call $~lib/string/String.__eq i32.eqz if @@ -9768,7 +9759,7 @@ end f64.const -1e-308 call $~lib/util/number/dtoa - i32.const 4976 + i32.const 4928 call $~lib/string/String.__eq i32.eqz if @@ -9781,7 +9772,7 @@ end f64.const 1e-323 call $~lib/util/number/dtoa - i32.const 5000 + i32.const 4952 call $~lib/string/String.__eq i32.eqz if @@ -9794,7 +9785,7 @@ end f64.const -1e-323 call $~lib/util/number/dtoa - i32.const 5024 + i32.const 4976 call $~lib/string/String.__eq i32.eqz if @@ -9807,7 +9798,7 @@ end f64.const 0 call $~lib/util/number/dtoa - i32.const 3032 + i32.const 2984 call $~lib/string/String.__eq i32.eqz if @@ -9820,7 +9811,7 @@ end f64.const 4294967272 call $~lib/util/number/dtoa - i32.const 5048 + i32.const 5000 call $~lib/string/String.__eq i32.eqz if @@ -9833,7 +9824,7 @@ end f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa - i32.const 5080 + i32.const 5032 call $~lib/string/String.__eq i32.eqz if @@ -9846,7 +9837,7 @@ end f64.const 555555555.5555556 call $~lib/util/number/dtoa - i32.const 5136 + i32.const 5088 call $~lib/string/String.__eq i32.eqz if @@ -9859,7 +9850,7 @@ end f64.const 0.9999999999999999 call $~lib/util/number/dtoa - i32.const 5184 + i32.const 5136 call $~lib/string/String.__eq i32.eqz if @@ -9872,7 +9863,7 @@ end f64.const 1 call $~lib/util/number/dtoa - i32.const 4688 + i32.const 4640 call $~lib/string/String.__eq i32.eqz if @@ -9885,7 +9876,7 @@ end f64.const 12.34 call $~lib/util/number/dtoa - i32.const 5232 + i32.const 5184 call $~lib/string/String.__eq i32.eqz if @@ -9900,7 +9891,7 @@ f64.const 3 f64.div call $~lib/util/number/dtoa - i32.const 5256 + i32.const 5208 call $~lib/string/String.__eq i32.eqz if @@ -9913,7 +9904,7 @@ end f64.const 1234e17 call $~lib/util/number/dtoa - i32.const 5304 + i32.const 5256 call $~lib/string/String.__eq i32.eqz if @@ -9926,7 +9917,7 @@ end f64.const 1234e18 call $~lib/util/number/dtoa - i32.const 5360 + i32.const 5312 call $~lib/string/String.__eq i32.eqz if @@ -9939,7 +9930,7 @@ end f64.const 2.71828 call $~lib/util/number/dtoa - i32.const 5392 + i32.const 5344 call $~lib/string/String.__eq i32.eqz if @@ -9952,7 +9943,7 @@ end f64.const 0.0271828 call $~lib/util/number/dtoa - i32.const 5416 + i32.const 5368 call $~lib/string/String.__eq i32.eqz if @@ -9965,7 +9956,7 @@ end f64.const 271.828 call $~lib/util/number/dtoa - i32.const 5448 + i32.const 5400 call $~lib/string/String.__eq i32.eqz if @@ -9978,7 +9969,7 @@ end f64.const 1.1e+128 call $~lib/util/number/dtoa - i32.const 5472 + i32.const 5424 call $~lib/string/String.__eq i32.eqz if @@ -9991,7 +9982,7 @@ end f64.const 1.1e-64 call $~lib/util/number/dtoa - i32.const 5496 + i32.const 5448 call $~lib/string/String.__eq i32.eqz if @@ -10004,7 +9995,7 @@ end f64.const 0.000035689 call $~lib/util/number/dtoa - i32.const 5520 + i32.const 5472 call $~lib/string/String.__eq i32.eqz if @@ -10016,12 +10007,12 @@ unreachable end ) - (func $std/string/getString (; 61 ;) (type $FUNCSIG$i) (result i32) + (func $std/string/getString (; 59 ;) (type $FUNCSIG$i) (result i32) global.get $std/string/str ) - (func $start (; 62 ;) (type $FUNCSIG$v) + (func $start (; 60 ;) (type $FUNCSIG$v) call $start:std/string ) - (func $null (; 63 ;) (type $FUNCSIG$v) + (func $null (; 61 ;) (type $FUNCSIG$v) ) ) diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 56520d67..1079090e 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -143,7 +143,7 @@ if i32.const 0 i32.const 72 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -157,7 +157,7 @@ if i32.const 0 i32.const 72 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -392,7 +392,7 @@ if i32.const 0 i32.const 112 - i32.const 24 + i32.const 25 i32.const 43 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 92918291..bf082c1d 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -201,7 +201,7 @@ if i32.const 0 i32.const 72 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -216,7 +216,7 @@ if i32.const 0 i32.const 72 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -498,7 +498,7 @@ if i32.const 0 i32.const 112 - i32.const 24 + i32.const 25 i32.const 43 call $~lib/env/abort unreachable diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 75c82fb9..4abc73d7 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -403,7 +403,7 @@ if i32.const 0 i32.const 64 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -417,7 +417,7 @@ if i32.const 0 i32.const 64 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -441,7 +441,7 @@ if i32.const 0 i32.const 104 - i32.const 24 + i32.const 25 i32.const 43 call $~lib/env/abort unreachable @@ -465,7 +465,7 @@ if i32.const 0 i32.const 64 - i32.const 251 + i32.const 348 i32.const 57 call $~lib/env/abort unreachable @@ -1078,7 +1078,7 @@ if i32.const 0 i32.const 152 - i32.const 441 + i32.const 442 i32.const 63 call $~lib/env/abort unreachable @@ -1102,7 +1102,7 @@ if i32.const 0 i32.const 152 - i32.const 435 + i32.const 436 i32.const 63 call $~lib/env/abort unreachable @@ -1212,7 +1212,7 @@ if i32.const 0 i32.const 152 - i32.const 851 + i32.const 852 i32.const 63 call $~lib/env/abort unreachable @@ -1750,7 +1750,7 @@ if i32.const 0 i32.const 152 - i32.const 845 + i32.const 846 i32.const 63 call $~lib/env/abort unreachable @@ -1771,7 +1771,7 @@ if i32.const 0 i32.const 152 - i32.const 195 + i32.const 196 i32.const 44 call $~lib/env/abort unreachable @@ -1803,7 +1803,7 @@ if i32.const 0 i32.const 152 - i32.const 189 + i32.const 190 i32.const 44 call $~lib/env/abort unreachable @@ -1822,7 +1822,7 @@ if i32.const 0 i32.const 152 - i32.const 31 + i32.const 32 i32.const 44 call $~lib/env/abort unreachable @@ -2992,40 +2992,39 @@ end end ) - (func $~lib/runtime/doWrapArray (; 36 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/runtime/doMakeArray (; 36 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) i32.const 16 call $~lib/runtime/doAllocate - local.get $1 - call $~lib/runtime/doRegister - local.tee $3 - local.get $0 - i32.const 8 - i32.sub - i32.load offset=4 - local.tee $4 - call $~lib/runtime/doAllocate - local.get $1 - call $~lib/runtime/doRegister - local.tee $1 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store offset=8 - local.get $3 - local.get $4 local.get $2 - i32.shr_u + call $~lib/runtime/doRegister + local.tee $2 + local.get $0 + local.get $3 + i32.shl + local.tee $3 + call $~lib/runtime/doAllocate + i32.const 2 + call $~lib/runtime/doRegister + local.tee $4 + i32.store + local.get $2 + local.get $4 + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $2 + local.get $0 i32.store offset=12 local.get $1 - local.get $0 - local.get $4 - call $~lib/memory/memory.copy - local.get $3 + if + local.get $4 + local.get $1 + local.get $3 + call $~lib/memory/memory.copy + end + local.get $2 ) (func $~lib/typedarray/Int8Array#__get (; 37 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 @@ -3035,7 +3034,7 @@ if i32.const 0 i32.const 152 - i32.const 25 + i32.const 26 i32.const 44 call $~lib/env/abort unreachable @@ -3054,7 +3053,7 @@ if i32.const 0 i32.const 216 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -3274,7 +3273,7 @@ if i32.const 0 i32.const 216 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -3414,7 +3413,7 @@ if i32.const 0 i32.const 152 - i32.const 113 + i32.const 114 i32.const 44 call $~lib/env/abort unreachable @@ -3537,7 +3536,7 @@ if i32.const 0 i32.const 152 - i32.const 277 + i32.const 278 i32.const 63 call $~lib/env/abort unreachable @@ -3633,7 +3632,7 @@ if i32.const 0 i32.const 152 - i32.const 359 + i32.const 360 i32.const 63 call $~lib/env/abort unreachable @@ -3800,7 +3799,7 @@ if i32.const 0 i32.const 152 - i32.const 523 + i32.const 524 i32.const 63 call $~lib/env/abort unreachable @@ -3854,7 +3853,7 @@ if i32.const 0 i32.const 152 - i32.const 605 + i32.const 606 i32.const 63 call $~lib/env/abort unreachable @@ -3954,7 +3953,7 @@ if i32.const 0 i32.const 152 - i32.const 687 + i32.const 688 i32.const 63 call $~lib/env/abort unreachable @@ -4008,7 +4007,7 @@ if i32.const 0 i32.const 152 - i32.const 769 + i32.const 770 i32.const 63 call $~lib/env/abort unreachable @@ -4998,7 +4997,7 @@ if i32.const 0 i32.const 152 - i32.const 107 + i32.const 108 i32.const 44 call $~lib/env/abort unreachable @@ -5236,7 +5235,7 @@ if i32.const 0 i32.const 152 - i32.const 271 + i32.const 272 i32.const 63 call $~lib/env/abort unreachable @@ -5372,7 +5371,7 @@ if i32.const 0 i32.const 152 - i32.const 353 + i32.const 354 i32.const 63 call $~lib/env/abort unreachable @@ -5621,7 +5620,7 @@ if i32.const 0 i32.const 152 - i32.const 517 + i32.const 518 i32.const 63 call $~lib/env/abort unreachable @@ -5762,7 +5761,7 @@ if i32.const 0 i32.const 152 - i32.const 599 + i32.const 600 i32.const 63 call $~lib/env/abort unreachable @@ -5898,7 +5897,7 @@ if i32.const 0 i32.const 152 - i32.const 681 + i32.const 682 i32.const 63 call $~lib/env/abort unreachable @@ -6039,7 +6038,7 @@ if i32.const 0 i32.const 152 - i32.const 763 + i32.const 764 i32.const 63 call $~lib/env/abort unreachable @@ -12892,10 +12891,11 @@ i32.const 3 call $~lib/typedarray/Int8Array#fill global.get $std/typedarray/arr8 + i32.const 5 i32.const 200 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -12912,10 +12912,11 @@ i32.const 2147483647 call $~lib/typedarray/Int8Array#fill global.get $std/typedarray/arr8 + i32.const 5 i32.const 256 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -12932,10 +12933,11 @@ i32.const -3 call $~lib/typedarray/Int8Array#fill global.get $std/typedarray/arr8 + i32.const 5 i32.const 272 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -12952,10 +12954,11 @@ i32.const 2147483647 call $~lib/typedarray/Int8Array#fill global.get $std/typedarray/arr8 + i32.const 5 i32.const 288 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -12972,10 +12975,11 @@ i32.const 0 call $~lib/typedarray/Int8Array#fill global.get $std/typedarray/arr8 + i32.const 5 i32.const 304 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -13037,10 +13041,11 @@ unreachable end global.get $std/typedarray/sub8 + i32.const 3 i32.const 320 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -13052,10 +13057,11 @@ unreachable end global.get $std/typedarray/arr8 + i32.const 5 i32.const 336 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/typedarray/isInt8ArrayEqual i32.eqz if @@ -13095,10 +13101,11 @@ i32.const 3 call $~lib/typedarray/Int32Array#fill global.get $std/typedarray/arr32 + i32.const 5 i32.const 352 i32.const 16 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -13115,10 +13122,11 @@ i32.const 2147483647 call $~lib/typedarray/Int32Array#fill global.get $std/typedarray/arr32 + i32.const 5 i32.const 384 i32.const 16 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -13135,10 +13143,11 @@ i32.const -3 call $~lib/typedarray/Int32Array#fill global.get $std/typedarray/arr32 + i32.const 5 i32.const 416 i32.const 16 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -13155,10 +13164,11 @@ i32.const 2147483647 call $~lib/typedarray/Int32Array#fill global.get $std/typedarray/arr32 + i32.const 5 i32.const 448 i32.const 16 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -13175,10 +13185,11 @@ i32.const 0 call $~lib/typedarray/Int32Array#fill global.get $std/typedarray/arr32 + i32.const 5 i32.const 480 i32.const 16 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -13242,10 +13253,11 @@ unreachable end global.get $std/typedarray/sub32 + i32.const 3 i32.const 512 i32.const 16 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/typedarray/isInt32ArrayEqual i32.eqz if @@ -13257,10 +13269,11 @@ unreachable end global.get $std/typedarray/arr32 + i32.const 5 i32.const 536 i32.const 16 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray call $std/typedarray/isInt32ArrayEqual i32.eqz if diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index aa6c188f..8eab4d05 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -487,7 +487,7 @@ if i32.const 0 i32.const 64 - i32.const 217 + i32.const 313 i32.const 2 call $~lib/env/abort unreachable @@ -502,7 +502,7 @@ if i32.const 0 i32.const 64 - i32.const 218 + i32.const 314 i32.const 2 call $~lib/env/abort unreachable @@ -527,7 +527,7 @@ if i32.const 0 i32.const 104 - i32.const 24 + i32.const 25 i32.const 43 call $~lib/env/abort unreachable @@ -562,7 +562,7 @@ if i32.const 0 i32.const 64 - i32.const 251 + i32.const 348 i32.const 57 call $~lib/env/abort unreachable @@ -1455,7 +1455,7 @@ if i32.const 0 i32.const 152 - i32.const 441 + i32.const 442 i32.const 63 call $~lib/env/abort unreachable @@ -1479,7 +1479,7 @@ if i32.const 0 i32.const 152 - i32.const 435 + i32.const 436 i32.const 63 call $~lib/env/abort unreachable @@ -1616,7 +1616,7 @@ if i32.const 0 i32.const 152 - i32.const 851 + i32.const 852 i32.const 63 call $~lib/env/abort unreachable @@ -2291,7 +2291,7 @@ if i32.const 0 i32.const 152 - i32.const 845 + i32.const 846 i32.const 63 call $~lib/env/abort unreachable @@ -2312,7 +2312,7 @@ if i32.const 0 i32.const 152 - i32.const 195 + i32.const 196 i32.const 44 call $~lib/env/abort unreachable @@ -2344,7 +2344,7 @@ if i32.const 0 i32.const 152 - i32.const 189 + i32.const 190 i32.const 44 call $~lib/env/abort unreachable @@ -2363,7 +2363,7 @@ if i32.const 0 i32.const 152 - i32.const 31 + i32.const 32 i32.const 44 call $~lib/env/abort unreachable @@ -2463,13 +2463,7 @@ end local.get $7 ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (; 50 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/runtime/HEADER_SIZE - i32.sub - i32.load offset=4 - ) - (func $~lib/util/memory/memcpy (; 51 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 50 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3670,7 +3664,7 @@ i32.store8 end ) - (func $~lib/memory/memory.copy (; 52 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 51 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3901,48 +3895,52 @@ end end ) - (func $~lib/runtime/doWrapArray (; 53 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/runtime/doMakeArray (; 52 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) + (local $6 i32) i32.const 16 call $~lib/runtime/doAllocate - local.get $1 - call $~lib/runtime/doRegister - local.set $3 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $4 - local.get $4 - call $~lib/runtime/doAllocate - local.get $1 - call $~lib/runtime/doRegister - local.set $5 - local.get $3 - local.get $5 - i32.store - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store offset=8 - local.get $3 - local.get $4 local.get $2 - i32.shr_u - i32.store offset=12 - local.get $5 + call $~lib/runtime/doRegister + local.set $4 local.get $0 - local.get $4 - call $~lib/memory/memory.copy local.get $3 + i32.shl + local.set $5 + local.get $0 + local.get $3 + i32.shl + call $~lib/runtime/doAllocate + i32.const 2 + call $~lib/runtime/doRegister + local.set $6 + local.get $4 + local.get $6 + i32.store + local.get $4 + local.get $6 + i32.store offset=4 + local.get $4 + local.get $5 + i32.store offset=8 + local.get $4 + local.get $0 + i32.store offset=12 + local.get $1 + if + local.get $6 + local.get $1 + local.get $5 + call $~lib/memory/memory.copy + end + local.get $4 ) - (func $~lib/array/Array#get:length (; 54 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 53 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/typedarray/Int8Array#__get (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#__get (; 54 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -3950,7 +3948,7 @@ if i32.const 0 i32.const 152 - i32.const 25 + i32.const 26 i32.const 44 call $~lib/env/abort unreachable @@ -3961,7 +3959,7 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__get (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 55 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -3971,7 +3969,7 @@ if i32.const 0 i32.const 216 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -3984,7 +3982,7 @@ i32.add i32.load8_s ) - (func $std/typedarray/isInt8ArrayEqual (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt8ArrayEqual (; 56 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4032,7 +4030,7 @@ end i32.const 1 ) - (func $~lib/typedarray/Int8Array#subarray (; 58 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#subarray (; 57 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4146,7 +4144,7 @@ i32.store offset=8 local.get $7 ) - (func $~lib/typedarray/Int32Array#fill (; 59 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/typedarray/Int32Array#fill (; 58 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -4244,11 +4242,11 @@ end local.get $7 ) - (func $~lib/array/Array#get:length (; 60 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (; 59 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $~lib/array/Array#__get (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__get (; 60 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -4258,7 +4256,7 @@ if i32.const 0 i32.const 216 - i32.const 69 + i32.const 100 i32.const 61 call $~lib/env/abort unreachable @@ -4271,7 +4269,7 @@ i32.add i32.load ) - (func $std/typedarray/isInt32ArrayEqual (; 62 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt32ArrayEqual (; 61 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4319,12 +4317,12 @@ end i32.const 1 ) - (func $std/typedarray/testReduce~anonymous|0 (; 63 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 62 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Int8Array#reduce (; 64 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduce (; 63 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4381,7 +4379,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 65 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 64 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4422,7 +4420,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8Array#__set (; 66 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#__set (; 65 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4430,7 +4428,7 @@ if i32.const 0 i32.const 152 - i32.const 113 + i32.const 114 i32.const 44 call $~lib/env/abort unreachable @@ -4442,12 +4440,12 @@ local.get $2 i32.store8 ) - (func $std/typedarray/testReduce~anonymous|0 (; 67 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 66 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint8Array#reduce (; 68 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduce (; 67 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4504,7 +4502,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 69 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 68 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4543,12 +4541,12 @@ unreachable end ) - (func $std/typedarray/testReduce~anonymous|0 (; 70 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 69 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint8ClampedArray#reduce (; 71 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reduce (; 70 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4605,7 +4603,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 72 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 71 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4644,7 +4642,7 @@ unreachable end ) - (func $~lib/typedarray/Int16Array#__set (; 73 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array#__set (; 72 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4654,7 +4652,7 @@ if i32.const 0 i32.const 152 - i32.const 277 + i32.const 278 i32.const 63 call $~lib/env/abort unreachable @@ -4668,12 +4666,12 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce~anonymous|0 (; 74 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 73 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Int16Array#reduce (; 75 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduce (; 74 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4730,7 +4728,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 76 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 75 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4771,7 +4769,7 @@ unreachable end ) - (func $~lib/typedarray/Uint16Array#__set (; 77 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint16Array#__set (; 76 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -4781,7 +4779,7 @@ if i32.const 0 i32.const 152 - i32.const 359 + i32.const 360 i32.const 63 call $~lib/env/abort unreachable @@ -4795,12 +4793,12 @@ local.get $2 i32.store16 ) - (func $std/typedarray/testReduce~anonymous|0 (; 78 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 77 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint16Array#reduce (; 79 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduce (; 78 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4857,7 +4855,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 80 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 79 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4896,12 +4894,12 @@ unreachable end ) - (func $std/typedarray/testReduce~anonymous|0 (; 81 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 80 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Int32Array#reduce (; 82 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduce (; 81 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4958,7 +4956,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 83 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 82 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -4995,7 +4993,7 @@ unreachable end ) - (func $~lib/typedarray/Uint32Array#__set (; 84 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint32Array#__set (; 83 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=8 @@ -5005,7 +5003,7 @@ if i32.const 0 i32.const 152 - i32.const 523 + i32.const 524 i32.const 63 call $~lib/env/abort unreachable @@ -5019,12 +5017,12 @@ local.get $2 i32.store ) - (func $std/typedarray/testReduce~anonymous|0 (; 85 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduce~anonymous|0 (; 84 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint32Array#reduce (; 86 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reduce (; 85 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5081,7 +5079,7 @@ end local.get $3 ) - (func $std/typedarray/testReduce (; 87 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 86 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5118,7 +5116,7 @@ unreachable end ) - (func $~lib/typedarray/Int64Array#__set (; 88 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Int64Array#__set (; 87 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -5128,7 +5126,7 @@ if i32.const 0 i32.const 152 - i32.const 605 + i32.const 606 i32.const 63 call $~lib/env/abort unreachable @@ -5142,12 +5140,12 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce~anonymous|0 (; 89 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce~anonymous|0 (; 88 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) local.get $0 local.get $1 i64.add ) - (func $~lib/typedarray/Int64Array#reduce (; 90 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Int64Array#reduce (; 89 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -5204,7 +5202,7 @@ end local.get $5 ) - (func $std/typedarray/testReduce (; 91 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 90 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -5241,7 +5239,7 @@ unreachable end ) - (func $~lib/typedarray/Uint64Array#__set (; 92 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/typedarray/Uint64Array#__set (; 91 ;) (type $FUNCSIG$viij) (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=8 @@ -5251,7 +5249,7 @@ if i32.const 0 i32.const 152 - i32.const 687 + i32.const 688 i32.const 63 call $~lib/env/abort unreachable @@ -5265,12 +5263,12 @@ local.get $2 i64.store ) - (func $std/typedarray/testReduce~anonymous|0 (; 93 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduce~anonymous|0 (; 92 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) local.get $0 local.get $1 i64.add ) - (func $~lib/typedarray/Uint64Array#reduce (; 94 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Uint64Array#reduce (; 93 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -5327,7 +5325,7 @@ end local.get $5 ) - (func $std/typedarray/testReduce (; 95 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 94 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -5364,7 +5362,7 @@ unreachable end ) - (func $~lib/typedarray/Float32Array#__set (; 96 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) + (func $~lib/typedarray/Float32Array#__set (; 95 ;) (type $FUNCSIG$viif) (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=8 @@ -5374,7 +5372,7 @@ if i32.const 0 i32.const 152 - i32.const 769 + i32.const 770 i32.const 63 call $~lib/env/abort unreachable @@ -5388,12 +5386,12 @@ local.get $2 f32.store ) - (func $std/typedarray/testReduce~anonymous|0 (; 97 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduce~anonymous|0 (; 96 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) local.get $0 local.get $1 f32.add ) - (func $~lib/typedarray/Float32Array#reduce (; 98 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (func $~lib/typedarray/Float32Array#reduce (; 97 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -5450,7 +5448,7 @@ end local.get $5 ) - (func $std/typedarray/testReduce (; 99 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 98 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f32) i32.const 0 @@ -5487,12 +5485,12 @@ unreachable end ) - (func $std/typedarray/testReduce~anonymous|0 (; 100 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduce~anonymous|0 (; 99 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) local.get $0 local.get $1 f64.add ) - (func $~lib/typedarray/Float64Array#reduce (; 101 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (func $~lib/typedarray/Float64Array#reduce (; 100 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 i32) (local $4 i32) (local $5 f64) @@ -5549,7 +5547,7 @@ end local.get $5 ) - (func $std/typedarray/testReduce (; 102 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduce (; 101 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) i32.const 0 @@ -5586,12 +5584,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 103 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 102 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Int8Array#reduceRight (; 104 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reduceRight (; 103 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5645,7 +5643,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 105 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 104 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5686,12 +5684,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 106 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 105 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint8Array#reduceRight (; 107 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduceRight (; 106 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5745,7 +5743,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 108 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 107 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5784,12 +5782,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 109 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 108 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 110 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reduceRight (; 109 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5843,7 +5841,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 111 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 110 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5882,12 +5880,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 112 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 111 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Int16Array#reduceRight (; 113 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#reduceRight (; 112 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5941,7 +5939,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 114 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 113 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -5982,12 +5980,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 115 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 114 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint16Array#reduceRight (; 116 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reduceRight (; 115 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6041,7 +6039,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 117 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 116 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6080,12 +6078,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 118 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 117 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Int32Array#reduceRight (; 119 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#reduceRight (; 118 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6139,7 +6137,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 120 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 119 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6176,12 +6174,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 121 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 120 ;) (type $FUNCSIG$iiiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 i32.add ) - (func $~lib/typedarray/Uint32Array#reduceRight (; 122 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reduceRight (; 121 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6235,7 +6233,7 @@ end local.get $3 ) - (func $std/typedarray/testReduceRight (; 123 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 122 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6272,12 +6270,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 124 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduceRight~anonymous|0 (; 123 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) local.get $0 local.get $1 i64.add ) - (func $~lib/typedarray/Int64Array#reduceRight (; 125 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Int64Array#reduceRight (; 124 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -6331,7 +6329,7 @@ end local.get $5 ) - (func $std/typedarray/testReduceRight (; 126 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 125 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -6368,12 +6366,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 127 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + (func $std/typedarray/testReduceRight~anonymous|0 (; 126 ;) (type $FUNCSIG$jjjii) (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) local.get $0 local.get $1 i64.add ) - (func $~lib/typedarray/Uint64Array#reduceRight (; 128 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (func $~lib/typedarray/Uint64Array#reduceRight (; 127 ;) (type $FUNCSIG$jiij) (param $0 i32) (param $1 i32) (param $2 i64) (result i64) (local $3 i32) (local $4 i32) (local $5 i64) @@ -6427,7 +6425,7 @@ end local.get $5 ) - (func $std/typedarray/testReduceRight (; 129 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 128 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i64) i32.const 0 @@ -6464,12 +6462,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 130 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + (func $std/typedarray/testReduceRight~anonymous|0 (; 129 ;) (type $FUNCSIG$fffii) (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) local.get $0 local.get $1 f32.add ) - (func $~lib/typedarray/Float32Array#reduceRight (; 131 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (func $~lib/typedarray/Float32Array#reduceRight (; 130 ;) (type $FUNCSIG$fiif) (param $0 i32) (param $1 i32) (param $2 f32) (result f32) (local $3 i32) (local $4 i32) (local $5 f32) @@ -6523,7 +6521,7 @@ end local.get $5 ) - (func $std/typedarray/testReduceRight (; 132 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 131 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f32) i32.const 0 @@ -6560,12 +6558,12 @@ unreachable end ) - (func $std/typedarray/testReduceRight~anonymous|0 (; 133 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + (func $std/typedarray/testReduceRight~anonymous|0 (; 132 ;) (type $FUNCSIG$dddii) (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) local.get $0 local.get $1 f64.add ) - (func $~lib/typedarray/Float64Array#reduceRight (; 134 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (func $~lib/typedarray/Float64Array#reduceRight (; 133 ;) (type $FUNCSIG$diid) (param $0 i32) (param $1 i32) (param $2 f64) (result f64) (local $3 i32) (local $4 i32) (local $5 f64) @@ -6619,7 +6617,7 @@ end local.get $5 ) - (func $std/typedarray/testReduceRight (; 135 ;) (type $FUNCSIG$v) + (func $std/typedarray/testReduceRight (; 134 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 f64) i32.const 0 @@ -6656,12 +6654,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 136 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 135 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Int8Array#map (; 137 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#map (; 136 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6726,7 +6724,7 @@ end local.get $6 ) - (func $std/typedarray/testArrayMap (; 138 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 137 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6792,12 +6790,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 139 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 138 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Uint8Array#map (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#map (; 139 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6862,7 +6860,7 @@ end local.get $6 ) - (func $~lib/typedarray/Uint8Array#__get (; 141 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#__get (; 140 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -6870,7 +6868,7 @@ if i32.const 0 i32.const 152 - i32.const 107 + i32.const 108 i32.const 44 call $~lib/env/abort unreachable @@ -6881,7 +6879,7 @@ i32.add i32.load8_u ) - (func $std/typedarray/testArrayMap (; 142 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 141 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -6947,12 +6945,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 143 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 142 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Uint8ClampedArray#map (; 144 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#map (; 143 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7017,7 +7015,7 @@ end local.get $6 ) - (func $std/typedarray/testArrayMap (; 145 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 144 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7083,12 +7081,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 146 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 145 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Int16Array#map (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#map (; 146 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7153,7 +7151,7 @@ end local.get $6 ) - (func $~lib/typedarray/Int16Array#__get (; 148 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#__get (; 147 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -7163,7 +7161,7 @@ if i32.const 0 i32.const 152 - i32.const 271 + i32.const 272 i32.const 63 call $~lib/env/abort unreachable @@ -7176,7 +7174,7 @@ i32.add i32.load16_s ) - (func $std/typedarray/testArrayMap (; 149 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 148 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7242,12 +7240,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 150 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 149 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Uint16Array#map (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#map (; 150 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7312,7 +7310,7 @@ end local.get $6 ) - (func $~lib/typedarray/Uint16Array#__get (; 152 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#__get (; 151 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -7322,7 +7320,7 @@ if i32.const 0 i32.const 152 - i32.const 353 + i32.const 354 i32.const 63 call $~lib/env/abort unreachable @@ -7335,7 +7333,7 @@ i32.add i32.load16_u ) - (func $std/typedarray/testArrayMap (; 153 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 152 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7401,12 +7399,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 154 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 153 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Int32Array#map (; 155 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#map (; 154 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7471,7 +7469,7 @@ end local.get $6 ) - (func $std/typedarray/testArrayMap (; 156 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 155 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7537,12 +7535,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 157 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 156 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $0 i32.mul ) - (func $~lib/typedarray/Uint32Array#map (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#map (; 157 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7607,7 +7605,7 @@ end local.get $6 ) - (func $~lib/typedarray/Uint32Array#__get (; 159 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#__get (; 158 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 @@ -7617,7 +7615,7 @@ if i32.const 0 i32.const 152 - i32.const 517 + i32.const 518 i32.const 63 call $~lib/env/abort unreachable @@ -7630,7 +7628,7 @@ i32.add i32.load ) - (func $std/typedarray/testArrayMap (; 160 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 159 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7696,12 +7694,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 161 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap~anonymous|0 (; 160 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) local.get $0 local.get $0 i64.mul ) - (func $~lib/typedarray/Int64Array#map (; 162 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#map (; 161 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7766,7 +7764,7 @@ end local.get $6 ) - (func $~lib/typedarray/Int64Array#__get (; 163 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Int64Array#__get (; 162 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -7776,7 +7774,7 @@ if i32.const 0 i32.const 152 - i32.const 599 + i32.const 600 i32.const 63 call $~lib/env/abort unreachable @@ -7789,7 +7787,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap (; 164 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 163 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -7855,12 +7853,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 165 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + (func $std/typedarray/testArrayMap~anonymous|0 (; 164 ;) (type $FUNCSIG$jjii) (param $0 i64) (param $1 i32) (param $2 i32) (result i64) local.get $0 local.get $0 i64.mul ) - (func $~lib/typedarray/Uint64Array#map (; 166 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#map (; 165 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7925,7 +7923,7 @@ end local.get $6 ) - (func $~lib/typedarray/Uint64Array#__get (; 167 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) + (func $~lib/typedarray/Uint64Array#__get (; 166 ;) (type $FUNCSIG$jii) (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 i32.load offset=8 @@ -7935,7 +7933,7 @@ if i32.const 0 i32.const 152 - i32.const 681 + i32.const 682 i32.const 63 call $~lib/env/abort unreachable @@ -7948,7 +7946,7 @@ i32.add i64.load ) - (func $std/typedarray/testArrayMap (; 168 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 167 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -8014,12 +8012,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 169 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + (func $std/typedarray/testArrayMap~anonymous|0 (; 168 ;) (type $FUNCSIG$ffii) (param $0 f32) (param $1 i32) (param $2 i32) (result f32) local.get $0 local.get $0 f32.mul ) - (func $~lib/typedarray/Float32Array#map (; 170 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#map (; 169 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8084,7 +8082,7 @@ end local.get $6 ) - (func $~lib/typedarray/Float32Array#__get (; 171 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) + (func $~lib/typedarray/Float32Array#__get (; 170 ;) (type $FUNCSIG$fii) (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 i32.load offset=8 @@ -8094,7 +8092,7 @@ if i32.const 0 i32.const 152 - i32.const 763 + i32.const 764 i32.const 63 call $~lib/env/abort unreachable @@ -8107,7 +8105,7 @@ i32.add f32.load ) - (func $std/typedarray/testArrayMap (; 172 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 171 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -8173,12 +8171,12 @@ unreachable end ) - (func $std/typedarray/testArrayMap~anonymous|0 (; 173 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + (func $std/typedarray/testArrayMap~anonymous|0 (; 172 ;) (type $FUNCSIG$ddii) (param $0 f64) (param $1 i32) (param $2 i32) (result f64) local.get $0 local.get $0 f64.mul ) - (func $~lib/typedarray/Float64Array#map (; 174 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#map (; 173 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8243,7 +8241,7 @@ end local.get $6 ) - (func $std/typedarray/testArrayMap (; 175 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayMap (; 174 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) i32.const 0 @@ -8309,7 +8307,7 @@ unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 176 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 175 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -8318,7 +8316,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int8Array#some (; 177 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#some (; 176 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8378,7 +8376,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 178 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 177 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -8387,7 +8385,7 @@ i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome (; 179 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 178 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8441,14 +8439,14 @@ unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 180 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 179 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint8Array#some (; 181 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#some (; 180 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8508,14 +8506,14 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 182 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 181 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome (; 183 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 182 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8569,14 +8567,14 @@ unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 184 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 183 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint8ClampedArray#some (; 185 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#some (; 184 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8636,14 +8634,14 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 186 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 185 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome (; 187 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 186 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8697,7 +8695,7 @@ unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 188 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 187 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -8706,7 +8704,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int16Array#some (; 189 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (; 188 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8766,7 +8764,7 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 190 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 189 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -8775,7 +8773,7 @@ i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome (; 191 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 190 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8829,14 +8827,14 @@ unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 192 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 191 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint16Array#some (; 193 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#some (; 192 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8896,14 +8894,14 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 194 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 193 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome (; 195 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 194 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -8957,12 +8955,12 @@ unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 196 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 195 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.eq ) - (func $~lib/typedarray/Int32Array#some (; 197 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#some (; 196 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9022,12 +9020,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 198 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 197 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome (; 199 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 198 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9081,12 +9079,12 @@ unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 200 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 199 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint32Array#some (; 201 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#some (; 200 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9146,12 +9144,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 202 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 201 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 0 i32.eq ) - (func $std/typedarray/testArraySome (; 203 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 202 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9205,12 +9203,12 @@ unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 204 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 203 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.eq ) - (func $~lib/typedarray/Int64Array#some (; 205 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#some (; 204 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9270,12 +9268,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 206 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 205 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 0 i64.eq ) - (func $std/typedarray/testArraySome (; 207 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 206 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9329,12 +9327,12 @@ unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 208 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 207 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.eq ) - (func $~lib/typedarray/Uint64Array#some (; 209 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#some (; 208 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9394,12 +9392,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 210 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 209 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 0 i64.eq ) - (func $std/typedarray/testArraySome (; 211 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 210 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9453,12 +9451,12 @@ unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 212 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 211 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 2 f32.eq ) - (func $~lib/typedarray/Float32Array#some (; 213 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#some (; 212 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9518,12 +9516,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 214 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 213 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 0 f32.eq ) - (func $std/typedarray/testArraySome (; 215 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 214 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9577,12 +9575,12 @@ unreachable end ) - (func $std/typedarray/testArraySome~anonymous|0 (; 216 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|0 (; 215 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 2 f64.eq ) - (func $~lib/typedarray/Float64Array#some (; 217 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#some (; 216 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9642,12 +9640,12 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome~anonymous|1 (; 218 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome~anonymous|1 (; 217 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 0 f64.eq ) - (func $std/typedarray/testArraySome (; 219 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArraySome (; 218 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9701,7 +9699,7 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 220 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 219 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -9710,7 +9708,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int8Array#findIndex (; 221 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#findIndex (; 220 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9770,7 +9768,7 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 222 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 221 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -9779,7 +9777,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 223 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 222 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9832,14 +9830,14 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 224 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 223 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint8Array#findIndex (; 225 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#findIndex (; 224 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9899,14 +9897,14 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 226 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 225 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 227 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 226 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -9959,14 +9957,14 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 228 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 227 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 229 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#findIndex (; 228 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10026,14 +10024,14 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 230 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 229 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 231 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 230 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10086,7 +10084,7 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 232 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 231 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -10095,7 +10093,7 @@ i32.const 2 i32.eq ) - (func $~lib/typedarray/Int16Array#findIndex (; 233 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#findIndex (; 232 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10155,7 +10153,7 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 234 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 233 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -10164,7 +10162,7 @@ i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 235 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 234 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10217,14 +10215,14 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 236 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 235 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint16Array#findIndex (; 237 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (; 236 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10284,14 +10282,14 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 238 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 237 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 239 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 238 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10344,12 +10342,12 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 240 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 239 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.eq ) - (func $~lib/typedarray/Int32Array#findIndex (; 241 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#findIndex (; 240 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10409,12 +10407,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 242 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 241 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 243 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 242 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10467,12 +10465,12 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 244 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 243 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.eq ) - (func $~lib/typedarray/Uint32Array#findIndex (; 245 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#findIndex (; 244 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10532,12 +10530,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 246 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 245 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 4 i32.eq ) - (func $std/typedarray/testArrayFindIndex (; 247 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 246 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10590,12 +10588,12 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 248 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 247 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.eq ) - (func $~lib/typedarray/Int64Array#findIndex (; 249 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#findIndex (; 248 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10655,12 +10653,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 250 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 249 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 4 i64.eq ) - (func $std/typedarray/testArrayFindIndex (; 251 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 250 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10713,12 +10711,12 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 252 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 251 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.eq ) - (func $~lib/typedarray/Uint64Array#findIndex (; 253 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#findIndex (; 252 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10778,12 +10776,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 254 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 253 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 4 i64.eq ) - (func $std/typedarray/testArrayFindIndex (; 255 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 254 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10836,12 +10834,12 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 256 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 255 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 2 f32.eq ) - (func $~lib/typedarray/Float32Array#findIndex (; 257 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (; 256 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10901,12 +10899,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 258 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 257 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 4 f32.eq ) - (func $std/typedarray/testArrayFindIndex (; 259 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 258 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -10959,12 +10957,12 @@ unreachable end ) - (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 260 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|0 (; 259 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 2 f64.eq ) - (func $~lib/typedarray/Float64Array#findIndex (; 261 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#findIndex (; 260 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11024,12 +11022,12 @@ i32.const -1 end ) - (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 262 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex~anonymous|1 (; 261 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 4 f64.eq ) - (func $std/typedarray/testArrayFindIndex (; 263 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayFindIndex (; 262 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11082,7 +11080,7 @@ unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 264 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 263 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -11093,7 +11091,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Int8Array#every (; 265 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#every (; 264 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11160,7 +11158,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 266 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 265 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 24 i32.shl @@ -11169,7 +11167,7 @@ i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery (; 267 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 266 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11223,7 +11221,7 @@ unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 268 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 267 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -11232,7 +11230,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Uint8Array#every (; 269 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#every (; 268 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11299,14 +11297,14 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 270 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 269 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery (; 271 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 270 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11360,7 +11358,7 @@ unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 272 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 271 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and @@ -11369,7 +11367,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Uint8ClampedArray#every (; 273 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#every (; 272 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11436,14 +11434,14 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 274 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 273 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery (; 275 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 274 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11497,7 +11495,7 @@ unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 276 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 275 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -11508,7 +11506,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Int16Array#every (; 277 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#every (; 276 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11575,7 +11573,7 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 278 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 277 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 16 i32.shl @@ -11584,7 +11582,7 @@ i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery (; 279 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 278 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11638,7 +11636,7 @@ unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 280 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 279 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and @@ -11647,7 +11645,7 @@ i32.const 0 i32.eq ) - (func $~lib/typedarray/Uint16Array#every (; 281 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#every (; 280 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11714,14 +11712,14 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 282 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 281 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery (; 283 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 282 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11775,14 +11773,14 @@ unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 284 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 283 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.rem_s i32.const 0 i32.eq ) - (func $~lib/typedarray/Int32Array#every (; 285 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#every (; 284 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11849,12 +11847,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 286 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 285 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery (; 287 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 286 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -11908,14 +11906,14 @@ unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 288 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 287 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.rem_u i32.const 0 i32.eq ) - (func $~lib/typedarray/Uint32Array#every (; 289 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#every (; 288 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11982,12 +11980,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 290 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 289 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 i32.eq ) - (func $std/typedarray/testArrayEvery (; 291 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 290 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12041,14 +12039,14 @@ unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 292 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 291 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.rem_s i64.const 0 i64.eq ) - (func $~lib/typedarray/Int64Array#every (; 293 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (; 292 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12115,12 +12113,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 294 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 293 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.eq ) - (func $std/typedarray/testArrayEvery (; 295 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 294 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12174,14 +12172,14 @@ unreachable end ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 296 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 295 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.rem_u i64.const 0 i64.eq ) - (func $~lib/typedarray/Uint64Array#every (; 297 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#every (; 296 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12248,12 +12246,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 298 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 297 ;) (type $FUNCSIG$ijii) (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 i64.const 2 i64.eq ) - (func $std/typedarray/testArrayEvery (; 299 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 298 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12307,12 +12305,12 @@ unreachable end ) - (func $~lib/builtins/isNaN (; 300 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) + (func $~lib/builtins/isNaN (; 299 ;) (type $FUNCSIG$if) (param $0 f32) (result i32) local.get $0 local.get $0 f32.ne ) - (func $~lib/math/NativeMathf.mod (; 301 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) + (func $~lib/math/NativeMathf.mod (; 300 ;) (type $FUNCSIG$fff) (param $0 f32) (param $1 f32) (result f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12563,14 +12561,14 @@ local.get $2 f32.reinterpret_i32 ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 302 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 301 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 2 call $~lib/math/NativeMathf.mod f32.const 0 f32.eq ) - (func $~lib/typedarray/Float32Array#every (; 303 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (; 302 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -12637,12 +12635,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 304 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 303 ;) (type $FUNCSIG$ifii) (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 f32.const 2 f32.eq ) - (func $std/typedarray/testArrayEvery (; 305 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 304 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -12696,12 +12694,12 @@ unreachable end ) - (func $~lib/builtins/isNaN (; 306 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) + (func $~lib/builtins/isNaN (; 305 ;) (type $FUNCSIG$id) (param $0 f64) (result i32) local.get $0 local.get $0 f64.ne ) - (func $~lib/math/NativeMath.mod (; 307 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) + (func $~lib/math/NativeMath.mod (; 306 ;) (type $FUNCSIG$ddd) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i64) (local $4 i64) @@ -12954,14 +12952,14 @@ local.get $2 f64.reinterpret_i64 ) - (func $std/typedarray/testArrayEvery~anonymous|0 (; 308 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|0 (; 307 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 2 call $~lib/math/NativeMath.mod f64.const 0 f64.eq ) - (func $~lib/typedarray/Float64Array#every (; 309 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (; 308 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13028,12 +13026,12 @@ i32.const 1 end ) - (func $std/typedarray/testArrayEvery~anonymous|1 (; 310 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery~anonymous|1 (; 309 ;) (type $FUNCSIG$idii) (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 f64.const 2 f64.eq ) - (func $std/typedarray/testArrayEvery (; 311 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayEvery (; 310 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -13087,7 +13085,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 312 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 311 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13142,7 +13140,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int8Array#forEach (; 313 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#forEach (; 312 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13187,7 +13185,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 314 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 313 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13243,7 +13241,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 315 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 314 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13294,7 +13292,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint8Array#forEach (; 316 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#forEach (; 315 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13339,7 +13337,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 317 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 316 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13389,7 +13387,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 318 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 317 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13440,7 +13438,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint8ClampedArray#forEach (; 319 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8ClampedArray#forEach (; 318 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13485,7 +13483,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 320 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 319 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13535,7 +13533,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 321 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 320 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13590,7 +13588,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int16Array#forEach (; 322 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#forEach (; 321 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13635,7 +13633,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 323 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 322 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13691,7 +13689,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 324 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 323 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13742,7 +13740,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint16Array#forEach (; 325 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#forEach (; 324 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13787,7 +13785,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 326 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 325 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13837,7 +13835,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 327 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 326 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -13884,7 +13882,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int32Array#forEach (; 328 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#forEach (; 327 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -13929,7 +13927,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 329 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 328 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -13973,7 +13971,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 330 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 329 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -14020,7 +14018,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint32Array#forEach (; 331 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint32Array#forEach (; 330 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14065,7 +14063,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 332 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 331 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14109,7 +14107,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 333 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 332 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -14157,7 +14155,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Int64Array#forEach (; 334 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#forEach (; 333 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14202,7 +14200,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 335 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 334 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14249,7 +14247,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 336 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 335 ;) (type $FUNCSIG$vjii) (param $0 i64) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -14297,7 +14295,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Uint64Array#forEach (; 337 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint64Array#forEach (; 336 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14342,7 +14340,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 338 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 337 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14389,7 +14387,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 339 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 338 ;) (type $FUNCSIG$vfii) (param $0 f32) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -14437,7 +14435,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Float32Array#forEach (; 340 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float32Array#forEach (; 339 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14482,7 +14480,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 341 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 340 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14529,7 +14527,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach~anonymous|0 (; 342 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach~anonymous|0 (; 341 ;) (type $FUNCSIG$vdii) (param $0 f64) (param $1 i32) (param $2 i32) (local $3 i32) global.get $std/typedarray/forEachValues local.get $1 @@ -14577,7 +14575,7 @@ i32.add global.set $std/typedarray/forEachCallCount ) - (func $~lib/typedarray/Float64Array#forEach (; 343 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float64Array#forEach (; 342 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -14622,7 +14620,7 @@ unreachable end ) - (func $std/typedarray/testArrayForEach (; 344 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayForEach (; 343 ;) (type $FUNCSIG$v) (local $0 i32) i32.const 0 global.set $std/typedarray/forEachCallCount @@ -14669,7 +14667,7 @@ unreachable end ) - (func $~lib/typedarray/Int8Array#reverse (; 345 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (; 344 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14739,7 +14737,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse (; 346 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 345 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -14903,7 +14901,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8Array#reverse (; 347 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reverse (; 346 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14973,7 +14971,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint8Array#subarray (; 348 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#subarray (; 347 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15087,7 +15085,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 349 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 348 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15245,7 +15243,7 @@ unreachable end ) - (func $~lib/typedarray/Uint8ClampedArray#reverse (; 350 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#reverse (; 349 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15315,7 +15313,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (; 351 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (; 350 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15429,7 +15427,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 352 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 351 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15587,7 +15585,7 @@ unreachable end ) - (func $~lib/typedarray/Int16Array#reverse (; 353 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#reverse (; 352 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -15657,7 +15655,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int16Array#subarray (; 354 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#subarray (; 353 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15771,7 +15769,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 355 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 354 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -15935,7 +15933,7 @@ unreachable end ) - (func $~lib/typedarray/Uint16Array#reverse (; 356 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#reverse (; 355 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16005,7 +16003,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint16Array#subarray (; 357 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#subarray (; 356 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16119,7 +16117,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 358 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 357 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16277,7 +16275,7 @@ unreachable end ) - (func $~lib/typedarray/Int32Array#reverse (; 359 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#reverse (; 358 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16347,7 +16345,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse (; 360 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 359 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16499,7 +16497,7 @@ unreachable end ) - (func $~lib/typedarray/Uint32Array#reverse (; 361 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#reverse (; 360 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16569,7 +16567,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint32Array#subarray (; 362 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#subarray (; 361 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -16683,7 +16681,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 363 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 362 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -16835,7 +16833,7 @@ unreachable end ) - (func $~lib/typedarray/Int64Array#reverse (; 364 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (; 363 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16905,7 +16903,7 @@ end local.get $1 ) - (func $~lib/typedarray/Int64Array#subarray (; 365 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (; 364 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17019,7 +17017,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 366 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 365 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17174,7 +17172,7 @@ unreachable end ) - (func $~lib/typedarray/Uint64Array#reverse (; 367 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#reverse (; 366 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17244,7 +17242,7 @@ end local.get $1 ) - (func $~lib/typedarray/Uint64Array#subarray (; 368 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (; 367 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17358,7 +17356,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 369 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 368 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17513,7 +17511,7 @@ unreachable end ) - (func $~lib/typedarray/Float32Array#reverse (; 370 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (; 369 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17583,7 +17581,7 @@ end local.get $1 ) - (func $~lib/typedarray/Float32Array#subarray (; 371 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (; 370 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -17697,7 +17695,7 @@ i32.store offset=8 local.get $7 ) - (func $std/typedarray/testArrayReverse (; 372 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 371 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -17852,7 +17850,7 @@ unreachable end ) - (func $~lib/typedarray/Float64Array#reverse (; 373 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#reverse (; 372 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -17922,7 +17920,7 @@ end local.get $1 ) - (func $std/typedarray/testArrayReverse (; 374 ;) (type $FUNCSIG$v) + (func $std/typedarray/testArrayReverse (; 373 ;) (type $FUNCSIG$v) (local $0 i32) (local $1 i32) (local $2 i32) @@ -18077,8 +18075,9 @@ unreachable end ) - (func $start:std/typedarray (; 375 ;) (type $FUNCSIG$v) + (func $start:std/typedarray (; 374 ;) (type $FUNCSIG$v) (local $0 i32) + (local $1 i32) global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32.const 1 i32.eq @@ -18611,13 +18610,16 @@ call $~lib/typedarray/Int8Array#fill drop global.get $std/typedarray/arr8 - block $~lib/runtime/WRAPARRAY|inlined.0 (result i32) - i32.const 200 + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + i32.const 5 local.set $0 + i32.const 200 + local.set $1 local.get $0 + local.get $1 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -18636,13 +18638,16 @@ call $~lib/typedarray/Int8Array#fill drop global.get $std/typedarray/arr8 - block $~lib/runtime/WRAPARRAY|inlined.1 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.1 (result i32) + i32.const 5 + local.set $1 i32.const 256 local.set $0 + local.get $1 local.get $0 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -18661,13 +18666,16 @@ call $~lib/typedarray/Int8Array#fill drop global.get $std/typedarray/arr8 - block $~lib/runtime/WRAPARRAY|inlined.2 (result i32) - i32.const 272 + block $~lib/runtime/MAKEARRAY|inlined.2 (result i32) + i32.const 5 local.set $0 + i32.const 272 + local.set $1 local.get $0 + local.get $1 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -18686,13 +18694,16 @@ call $~lib/typedarray/Int8Array#fill drop global.get $std/typedarray/arr8 - block $~lib/runtime/WRAPARRAY|inlined.3 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.3 (result i32) + i32.const 5 + local.set $1 i32.const 288 local.set $0 + local.get $1 local.get $0 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -18711,13 +18722,16 @@ call $~lib/typedarray/Int8Array#fill drop global.get $std/typedarray/arr8 - block $~lib/runtime/WRAPARRAY|inlined.4 (result i32) - i32.const 304 + block $~lib/runtime/MAKEARRAY|inlined.4 (result i32) + i32.const 5 local.set $0 + i32.const 304 + local.set $1 local.get $0 + local.get $1 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -18780,13 +18794,16 @@ unreachable end global.get $std/typedarray/sub8 - block $~lib/runtime/WRAPARRAY|inlined.5 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.5 (result i32) + i32.const 3 + local.set $1 i32.const 320 local.set $0 + local.get $1 local.get $0 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -18799,13 +18816,16 @@ unreachable end global.get $std/typedarray/arr8 - block $~lib/runtime/WRAPARRAY|inlined.6 (result i32) - i32.const 336 + block $~lib/runtime/MAKEARRAY|inlined.6 (result i32) + i32.const 5 local.set $0 + i32.const 336 + local.set $1 local.get $0 + local.get $1 i32.const 15 i32.const 0 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $std/typedarray/isInt8ArrayEqual i32.eqz @@ -18848,13 +18868,16 @@ call $~lib/typedarray/Int32Array#fill drop global.get $std/typedarray/arr32 - block $~lib/runtime/WRAPARRAY|inlined.0 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.0 (result i32) + i32.const 5 + local.set $1 i32.const 352 local.set $0 + local.get $1 local.get $0 i32.const 16 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -18873,13 +18896,16 @@ call $~lib/typedarray/Int32Array#fill drop global.get $std/typedarray/arr32 - block $~lib/runtime/WRAPARRAY|inlined.1 (result i32) - i32.const 384 + block $~lib/runtime/MAKEARRAY|inlined.1 (result i32) + i32.const 5 local.set $0 + i32.const 384 + local.set $1 local.get $0 + local.get $1 i32.const 16 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -18898,13 +18924,16 @@ call $~lib/typedarray/Int32Array#fill drop global.get $std/typedarray/arr32 - block $~lib/runtime/WRAPARRAY|inlined.2 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.2 (result i32) + i32.const 5 + local.set $1 i32.const 416 local.set $0 + local.get $1 local.get $0 i32.const 16 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -18923,13 +18952,16 @@ call $~lib/typedarray/Int32Array#fill drop global.get $std/typedarray/arr32 - block $~lib/runtime/WRAPARRAY|inlined.3 (result i32) - i32.const 448 + block $~lib/runtime/MAKEARRAY|inlined.3 (result i32) + i32.const 5 local.set $0 + i32.const 448 + local.set $1 local.get $0 + local.get $1 i32.const 16 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -18948,13 +18980,16 @@ call $~lib/typedarray/Int32Array#fill drop global.get $std/typedarray/arr32 - block $~lib/runtime/WRAPARRAY|inlined.4 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.4 (result i32) + i32.const 5 + local.set $1 i32.const 480 local.set $0 + local.get $1 local.get $0 i32.const 16 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -19021,13 +19056,16 @@ unreachable end global.get $std/typedarray/sub32 - block $~lib/runtime/WRAPARRAY|inlined.5 (result i32) - i32.const 512 + block $~lib/runtime/MAKEARRAY|inlined.5 (result i32) + i32.const 3 local.set $0 + i32.const 512 + local.set $1 local.get $0 + local.get $1 i32.const 16 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -19040,13 +19078,16 @@ unreachable end global.get $std/typedarray/arr32 - block $~lib/runtime/WRAPARRAY|inlined.6 (result i32) + block $~lib/runtime/MAKEARRAY|inlined.6 (result i32) + i32.const 5 + local.set $1 i32.const 536 local.set $0 + local.get $1 local.get $0 i32.const 16 i32.const 2 - call $~lib/runtime/doWrapArray + call $~lib/runtime/doMakeArray end call $std/typedarray/isInt32ArrayEqual i32.eqz @@ -19353,9 +19394,9 @@ call $std/typedarray/testArrayReverse call $std/typedarray/testArrayReverse ) - (func $start (; 376 ;) (type $FUNCSIG$v) + (func $start (; 375 ;) (type $FUNCSIG$v) call $start:std/typedarray ) - (func $null (; 377 ;) (type $FUNCSIG$v) + (func $null (; 376 ;) (type $FUNCSIG$v) ) )